Title:   The Class Repository
Status:  Current 
Created: 2003-09-17
Revised: 2004-02-24

The Class Repository holds all information about the structure of the business
objects.

Please regard all class repository object as read-only object. To change data
in the class repository, access the underlying business objects.

To use the Class Repository, you need a session manager object from
geasSessionManager. Such an instance provides two public properties, modules
and classes.


The Module Object
=================

The property "modules" of a session manager instance holds a dictionary of all
modules. Each module is represented by a module object, the key is the module
name.

All properties of the gnue_module business object (described in the API
documentation) are also accessible as properties of the module Python object.
Apart from that, the module Python object has a property "classes" that lists
all classes defined by that module (in the form of a dictionary).


The Class Object
================

A dictionary of classes originally defined by a specific module can be obtained
from "module.classes". A dictionary of all classes is available in the property
"classes" of a session manager instance.  Both dictionaries use the fully
qualified class name as key.

All properties of the gnue_class business object (described in the API
documentation) are also accessible as properties of the class Python object.

Apart from that, the class Python object has these properties:

* module:     The module originally defining the class
* fullName:   The fully qualified name
* table:      The underlying database table
* classes:    The class dictionary of the class
* properties: A dictionary of all properties of the class, where the fully
              qualified property name acts as the key
* procedures: A dictionary of all procedures of the class, where the fully
              qualified procedure name acts as the key


The Property Object
===================

All properties of the gnue_property business object (described in the API
documentation) are also accessible as properties of the corresponding Python
object.

Apart from that, the Python object of class "Property" has the following
properties:

* module:     The module defining the property
* fullName:   The fully qualified name
* fullType:   The complete data type of the property, including length and 
              scale. This is the appserver-specific data type, e.g. a column
              'gnue_id' has 'id' as fullType, or a column could have
              'address_country' as fullType. 
* column:     The underlying database column (or None if it is a calculated
              property (not yet implemented))
* dbType:     The database-specific type of the property, not including length 
              or scale, e.g. a column 'gnue_id' has 'string' as dbType.
* dbLength:   The length of the property from the databases point of view
* dbScale:    The precision of the property from the databases point of view
* dbFullType: The complete data type of the property, including length and
              scale. This is the database-specific data type, e.g. a column
              'gnue_id' has 'string(32)' as dbFullType, as well as the above
              'address_country' column would be 'string(32)'. A column with
              fullType 'boolean' has a dbFullType 'boolean'.


The Procedure Object
====================

All properties of the gnue_procedure business object (described in the API
documentation) are also accessible as properties of the corresponding Python
object.

Apart from that, the Python object of class "Property" has the following
properties:

* module:     The module defining the property
* fullName:   The fully qualified name
