Package Modeling :: Package DatabaseAdaptors :: Package AbstractDBAPI2AdaptorLayer :: Module AbstractDBAPI2SchemaGeneration :: Class AbstractDBAPI2SchemaGeneration
[show private | hide private]
[frames | no frames]

Class AbstractDBAPI2SchemaGeneration

SchemaGeneration --+
                   |
                  AbstractDBAPI2SchemaGeneration


This class is here for information only ; it does not contain any reusable logic. Your concrete SchemaGeneration should inherit directly from Modeling.SchemaGeneration.

See Modeling.interfaces.SchemaGeneration for further details


Method Summary
  createDatabaseStatementsForConnectionDictionary(self, connectionDictionary, administrativeConnectionDictionary, createUserFlag)
Returns a list of SQLExpression statements, creating the requested database.
  dropDatabaseStatementsForConnectionDictionary(self, connectionDictionary, administrativeConnectionDictionary, dropUserFlag)
Returns a list of SQLExpression statements, dropping the requested database.
  dropPrimaryKeySupportStatementsForEntityGroup(self, entityGroup)
See Modeling.interfaces.SchemaGeneration for further details
  foreignKeyConstraintStatementsForRelationship(self, relationship)
Returns a list of SQLExpressions needed to add a constraint statement for the given relationship.
  primaryKeySupportStatementsForEntityGroup(self, entityGroup)
See Modeling.interfaces.SchemaGeneration for further details
    Inherited from SchemaGeneration
  __init__(self, anAdaptor)
See interfaces.SchemaGeneration for details
  appendExpressionToScript(self, expression, script)
Appends the expression to the StringIO script, prepended with a semi-colon (';') and a newline if the StringIO is not empty.
  createTableStatementsForEntityGroup(self, entityGroup)
Returns a list of SQLExpressions needed to create the tables defined by the supplied 'entityGroup', or an empty list if 'entityGroup' is empty.
  createTableStatementsForEntityGroups(self, entityGroups)
Invokes createTableStatementsForEntityGroup() for each entityGroup in 'entityGroups', and returns the list of SQLExpressions needed to create the necessary table.
  defaultOrderingsForSchemaCreation()
Used in method SchemaGeneration.schemaCreationScriptForEntities() to order the schema creation statements produced (Static method)
  dropForeignKeyConstraintStatementsForRelationship(self, relationship)
Default implementation returns an empty list.
  dropPrimaryKeyConstraintStatementsForEntityGroup(self, entityGroup)
Default implementation returns an empty list.
  dropPrimaryKeyConstraintStatementsForEntityGroups(self, entityGroups)
Iterates on each entityGroup in 'entityGroups', sends the message 'dropPrimaryKeyConstraintStatementsForEntityGroup' to each of them, collects the results and returns them in a sequence.
  dropPrimaryKeySupportStatementsForEntityGroups(self, entityGroups)
Iterates on each entityGroup in 'entityGroups', sends the message 'dropPrimaryKeySupportStatementsForEntityGroup' to each of them, collects the results and returns them in a sequence.
  dropTableStatementsForEntityGroup(self, entityGroup)
Parameter:
  dropTableStatementsForEntityGroups(self, entityGroups)
Iterates on each entityGroup in 'entityGroups', sends the message 'dropPrimaryKeySupportStatementsForEntityGroup()' to each of them, collects the results and returns them in a sequence.
  primaryKeyConstraintStatementsForEntityGroup(self, entityGroup)
Default implementation returns an empty list.
  primaryKeyConstraintStatementsForEntityGroups(self, entityGroups)
Iterates on each entityGroup in 'entityGroups', sends the message 'primaryKeyConstraintStatementsForEntityGroup' to each of them, collects the results and returns them in a sequence.
  primaryKeySupportStatementsForEntityGroups(self, entityGroups)
Iterates on each entityGroup in 'entityGroups', sends the message 'primaryKeySupportStatementsForEntityGroup' to each of them, collects the results and returns them in a sequence.
  schemaCreationScriptForEntities(self, allEntities, options, keyOrderings)
__TBD
  schemaCreationStatementsForEntities(self, allEntities, options, keyOrderings)
__TBD doc.
  schemaCreationStatementsForEntitiesByOptions(self, allEntities, options)
__TBD doc.
  setDefaultOrderingsForSchemaCreation(keyOrderings)
Sets the default ordering. (Static method)
  tableEntityGroupsForEntities(self, entities)
Returns a list of entityGroups ; each entityGroup consists of the entities in parameter 'entities' which share the same externalName(), and wich answered positively to the definesTableColumns() message.

Class Variable Summary
    Inherited from SchemaGeneration
tuple __implements__ = (<class Modeling.interfaces.SchemaGener...

Instance Method Details

createDatabaseStatementsForConnectionDictionary(self, connectionDictionary, administrativeConnectionDictionary, createUserFlag=1)

Returns a list of SQLExpression statements, creating the requested database.

See also: interfaces.SchemaGeneration for details

Overrides:
Modeling.SchemaGeneration.SchemaGeneration.createDatabaseStatementsForConnectionDictionary

dropDatabaseStatementsForConnectionDictionary(self, connectionDictionary, administrativeConnectionDictionary, dropUserFlag=1)

Returns a list of SQLExpression statements, dropping the requested database.

See Modeling.interfaces.SchemaGeneration for details

Overrides:
Modeling.SchemaGeneration.SchemaGeneration.dropDatabaseStatementsForConnectionDictionary

dropPrimaryKeySupportStatementsForEntityGroup(self, entityGroup)

See Modeling.interfaces.SchemaGeneration for further details

See also: AbstractDBAPI2AdaptorChannel.primaryKeysForNewRowsWithEntity()

Overrides:
Modeling.SchemaGeneration.SchemaGeneration.dropPrimaryKeySupportStatementsForEntityGroup

foreignKeyConstraintStatementsForRelationship(self, relationship)

Returns a list of SQLExpressions needed to add a constraint statement
for the given relationship. Under specific conditions on 'relationship',
expressed below, that lists consists of a single SQLExpression
statement of the following form::

   ALTER TABLE <TABLE> ADD CONSTRAINT <REL_NAME> FOREIGN KEY
   (<FKS>) REFERENCES <DESTINATION_TABLE>(<DESTINATION_PK>)
   INITIALLY DEFERRED

where TABLE is the relationship's entity externalName(),
      REL_NAME is the relationship's source attribute columnName(),
      FKS is a comma-separated list of the relationship's source
        attributes.columnName(),
      DESTINATION_PKS is a comma-separated list of the rel.'s
        destinationAttributes().columnName(),
      DESTINATION_TABLE is the relationship.destinationEntity() 's
        externalName()

The conditions under which the statement above is returned are:

  - the relationship is a toOne rel. and it is not flattened,

  - its inverseRelationship, if any, is a toMany relationship,

  - its source and destinationEntity share the same model

  - the destinationEntity has no sub-entity.

If any of these conditions is not fulfilled the method returns an empty
sequence.

Why 'INITIALLY DEFERRED'? Suppose we need to cascade delete 3 objects in
relations ; we do not guarantee that they will be deleted in the correct
order (moreover, determining the order in which objects should be deleted,
or updated, etc. is a difficult problem and solving it is beyond my
knowledge). So, we need to defer the constraint until the transaction
commits. Last, I put it there, not in any specific adaptor, since I do not
want to hide that fact from the eyes of anyone willing to create a custom
AdaptorLayer. If this is what you want to do, and your database does not
allow constraints to be deferred, you'll probably won't add any
referential constraints at all --or you'll solve the general scheduling
problem!
Overrides:
Modeling.SchemaGeneration.SchemaGeneration.foreignKeyConstraintStatementsForRelationship (inherited documentation)

primaryKeySupportStatementsForEntityGroup(self, entityGroup)

See Modeling.interfaces.SchemaGeneration for further details

See also:
dropPrimaryKeySupportStatementsForEntityGroup() AbstractDBAPI2AdaptorChannel.primaryKeysForNewRowsWithEntity()
Overrides:
Modeling.SchemaGeneration.SchemaGeneration.primaryKeySupportStatementsForEntityGroup

Generated by Epydoc 2.1 on Sat Mar 4 13:36:24 2006 http://epydoc.sf.net