|
WebObjects 5.2.3 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.webobjects.eoaccess.EOSynchronizationFactory
This class has been introduced to implement the interfaces EOSchemaGeneration and EOSchemaSynchronization, which were introduced in WebObjects 5.0. The API is essentially the same as in WebObjects 4.5.x except that methods that were formerly static methods of EOSQLExpression are now are instance methods of EOSchemaGeneration or EOSchemaSynchronization.
EOSchemaGeneration
,
EOSchemaSynchronization
Nested Class Summary | |
static interface |
EOSynchronizationFactory.Delegate
The Delegate interface for EOSynchronizationFactory is restricted to use by the EOModeler application and should not be implemented by others. |
Nested classes inherited from class com.webobjects.eoaccess.EOSchemaSynchronization |
EOSchemaSynchronization.ColumnTypes |
Field Summary |
Fields inherited from interface com.webobjects.eoaccess.EOSchemaGeneration |
CreateDatabaseKey, CreatePrimaryKeySupportKey, CreateTablesKey, DropDatabaseKey, DropPrimaryKeySupportKey, DropTablesKey, ForeignKeyConstraintsKey, PrimaryKeyConstraintsKey |
Fields inherited from interface com.webobjects.eoaccess.EOSchemaSynchronization |
AllowsNullKey, ColumnNameKey, ExternalNameKey, ExternalTypeKey, NameKey, PrecisionKey, RelationshipsKey, ScaleKey, SchemaSynchronizationForeignKeyConstraintsKey, SchemaSynchronizationPrimaryKeyConstraintsKey, SchemaSynchronizationPrimaryKeySupportKey, WidthKey |
Constructor Summary | |
EOSynchronizationFactory(EOAdaptor adaptor)
Creates and returns a new EOSynchronization factory that uses the specified adaptor to communicate with an external
database. |
Method Summary | |
EOAdaptor |
adaptor()
Returns the receiver's EOAdaptor. |
void |
appendExpressionToScript(EOSQLExpression expression,
StringBuffer script)
Appends expression 's statement to script
along with any necessary delimiter. |
NSArray |
createDatabaseStatementsForConnectionDictionary(NSDictionary connectionDictionary,
NSDictionary administrativeConnectionDictionary)
The default implementation returns null . |
NSArray |
createTableStatementsForEntityGroup(NSArray entityGroup)
Returns an array of EOSQLExpression objects that define the SQL necessary to create a table for entityGroup . |
NSArray |
createTableStatementsForEntityGroups(NSArray entityGroups)
Returns an array of EOSQLExpression objects that define the SQL necessary to create the tables for each of the entity groups in entityGroups . |
NSArray |
dropDatabaseStatementsForConnectionDictionary(NSDictionary connectionDictionary,
NSDictionary administrativeConnectionDictionary)
The default implementation returns null . |
NSArray |
dropPrimaryKeySupportStatementsForEntityGroup(NSArray entityGroup)
The default implementation returns null . |
NSArray |
dropPrimaryKeySupportStatementsForEntityGroups(NSArray entityGroups)
Returns an array of EOSQLExpression objects that define the SQL necessary to drop the primary key generation support for all the entities in each of the the entity groups in entityGroups . |
NSArray |
dropTableStatementsForEntityGroup(NSArray entityGroup)
Returns an array of EOSQLExpression objects that define the SQL necessary to drop the table identified by entityGroup . |
NSArray |
dropTableStatementsForEntityGroups(NSArray entityGroups)
Returns an array of EOSQLExpression objects that define the SQL necessary to drop the tables for all the entity groups in entityGroups . |
NSArray |
foreignKeyConstraintStatementsForRelationship(EORelationship relationship)
Returns an array of EOSQLExpression objects that define the SQL statements necessary to create foreign key constraints for relationship . |
boolean |
isCaseSensitive()
The default implementation returns false . |
boolean |
isColumnTypeEquivalentToColumnType(EOSchemaSynchronization.ColumnTypes candidate,
EOSchemaSynchronization.ColumnTypes columnType,
NSDictionary options)
Returns true if the name, precision, width,
and scale of candidate are identical to the name,
precision, width, and scale of columnType ,
false otherwise. |
NSArray |
logicalErrorsInChangeDictionaryForModelOptions(NSDictionary changes,
EOModel model,
NSDictionary options)
Steps through the change dictionary changes and returns
an array of strings identifying all the columns and their tables
where the allows NULL rule has been changed in the corresponding
model to disallow NULL values, but the database still
contains such values. |
NSDictionary |
objectStoreChangesFromAttributeToAttribute(EOAttribute schemaAttribute,
EOAttribute modelAttribute)
Compares schemaAttribute with
modelAttribute and returns a change dictionary of
state that is different between the the two. |
String |
phraseCastingColumnNamed(String columnName,
EOSchemaSynchronization.ColumnTypes type,
EOSchemaSynchronization.ColumnTypes castType,
NSDictionary options)
The default implementation returns columnName . |
NSArray |
primaryKeyConstraintStatementsForEntityGroup(NSArray entityGroup)
Returns an array of EOSQLExpression objects that define the SQL necessary to create the primary key constraints for entityGroup . |
NSArray |
primaryKeyConstraintStatementsForEntityGroups(NSArray entityGroups)
Returns an array of EOSQLExpression objects that define the SQL necessary to create the primary key constraints for the entities specified in entityGroups . |
NSArray |
primaryKeyEntityGroupsForEntities(NSArray entities)
Returns an array of primary key entity groups for entities ,
or an empty array if entities is empty or null . |
NSArray |
primaryKeySupportStatementsForEntityGroup(NSArray entityGroup)
The default implementation returns null . |
NSArray |
primaryKeySupportStatementsForEntityGroups(NSArray entityGroups)
Returns an array of EOSQLExpression objects that define the SQL necessary to create the primary key generation support for all the entities in each of the the entity groups in entityGroups . |
String |
schemaCreationScriptForEntities(NSArray allEntities,
NSDictionary options)
Returns a script of SQL statements suitable to create the schema based on options for the EOEntity objects in
allEntities . |
NSArray |
schemaCreationStatementsForEntities(NSArray allEntities,
NSDictionary options)
Returns an array of EOSQLExpressions suitable to create the schema based on options for the EOEntity objects in
allEntities . |
EOSynchronizationFactory.Delegate |
schemaSynchronizationDelegate()
Returns the receiver's delegate. |
void |
setSchemaSynchronizationDelegate(EOSynchronizationFactory.Delegate delegate)
Sets the receiver's delegate to delegate . |
NSArray |
statementsToConvertColumnType(String columnName,
String tableName,
EOSchemaSynchronization.ColumnTypes type,
EOSchemaSynchronization.ColumnTypes newType,
NSDictionary options)
The default implementation returns null . |
NSArray |
statementsToCopyTableNamed(String tableName,
NSArray entityGroup,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to copy the specified table into a new table, whose definition is provided by entityGroup , an array of EOEntity objects with the
same external name. |
NSArray |
statementsToDeleteColumnNamed(String columnName,
String tableName,
NSDictionary options)
The default implementation returns null . |
NSArray |
statementsToDropForeignKeyConstraintsOnEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to drop foreign key constraints for the table corresponding to entityGroups , which is
an array containing arrays of EOEntity objects with the same
external name. |
NSArray |
statementsToDropPrimaryKeyConstraintsOnEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to drop primary key constraints for the table corresponding to entityGroups , which is
an array containing arrays of EOEntity objects with the same
external name. |
NSArray |
statementsToDropPrimaryKeySupportForEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to drop primary key support for the table corresponding to entityGroups , which is
an array containing arrays of EOEntity objects with the same
external name. |
NSArray |
statementsToImplementForeignKeyConstraintsOnEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to implement foreign key constraints for the table corresponding to entityGroups , which is an array containing arrays of
EOEntity objects with the same external name. |
NSArray |
statementsToImplementPrimaryKeyConstraintsOnEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to implement primary key constraints for the table corresponding to entityGroups , which is an array containing arrays of
EOEntity objects with the same external name. |
NSArray |
statementsToImplementPrimaryKeySupportForEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to implement primary key support for the table corresponding to entityGroups ,
which is an array containing arrays of EOEntity objects with the
same external name. |
NSArray |
statementsToInsertColumnForAttribute(EOAttribute attribute,
NSDictionary options)
Returns an array of EOSQLExpressions to insert a column in the database schema for the specified attribute . |
NSArray |
statementsToModifyColumnNullRule(String columnName,
String tableName,
boolean allowsNull,
NSDictionary options)
Returns null by default. |
NSArray |
statementsToRenameColumnNamed(String columnName,
String tableName,
String newName,
NSDictionary options)
The default implementation returns null . |
NSArray |
statementsToRenameTableNamed(String tableName,
String newName,
NSDictionary options)
Returns an array of EOSQLExpressions to rename in place the the table indentifed by tableName to
newName . |
NSArray |
statementsToUpdateObjectStoreForEntityGroups(NSArray entityGroups,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to update the database table that corresponds to entityGroups according to the
changes and SQL generation instructions in the changes
and options dictionaries. |
NSArray |
statementsToUpdateObjectStoreForModel(EOModel model,
NSDictionary changes,
NSDictionary options)
Returns an array of EOSQLExpressions to synchronize the database with the EOModel model . |
boolean |
supportsDirectColumnCoercion()
The default implementation returns false . |
boolean |
supportsDirectColumnDeletion()
The default implementation returns false . |
boolean |
supportsDirectColumnInsertion()
The default implementation returns false . |
boolean |
supportsDirectColumnNullRuleModification()
The default implementation returns false . |
boolean |
supportsDirectColumnRenaming()
The default implementation returns false . |
boolean |
supportsSchemaSynchronization()
The default implementation returns false . |
NSArray |
tableEntityGroupsForEntities(NSArray entities)
Returns an array of table entity groups for entities ,
or an empty array if entities is empty or null . |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public EOSynchronizationFactory(EOAdaptor adaptor)
adaptor
to communicate with an external
database.
adaptor
- An EOAdaptor to associate with the new
EOSynchrnizationFactory.Method Detail |
public EOAdaptor adaptor()
public void appendExpressionToScript(EOSQLExpression expression, StringBuffer script)
expression
's statement to script
along with any necessary delimiter. script
is the
StringBuffer in which the SQL script is built. Used in conjunction
with schemaCreationStatementsForEntities
and
schemaCreationScriptForEntities
to build up the
SQL script to generate the specified schema for a set of EOEntities.
This method appends the SQL statement for expression
to script
followed by a semicolon and a newline. A
subclass of EOSQLExpression only need to override this method if
the delimiter for its database server is different.
appendExpressionToScript
in interface EOSchemaGeneration
expression
- An EOSQLExpression.script
- A StringBuffer used to build the SQL script.createTableStatementsForEntityGroup(
NSArray entityGroup)
public NSArray createDatabaseStatementsForConnectionDictionary(NSDictionary connectionDictionary, NSDictionary administrativeConnectionDictionary)
null
. Can be
overridden by subclasses to generate and return an array of
EOSQLExpressions defining the SQL statements to create a database
or user that can be accessed by the provided
connectionDictionary
and
administrativeConnectionDictionary
.
createDatabaseStatementsForConnectionDictionary
in interface EOSchemaGeneration
connectionDictionary
- A dictionary of
information needed by the
adaptor to connect to the
database server.administrativeConnectionDictionary
- A dictionary of
administrative login
information for the
database server.
null
by
default.dropDatabaseStatementsForConnectionDictionary(
NSDictionary connectionDictionary,
NSDictionary administrativeConnectionDictionary)
public NSArray createTableStatementsForEntityGroup(NSArray entityGroup)
entityGroup
. Returns
an empty array if entityGroup
is null
or empty.
EOSynchronizationFactory's implementation does the following:
entityGroup
.entityGroup
's entities.(whereCREATE TABLE TABLE_NAME (LIST_STRING)
TABLE_NAME
is the external name of the
EOEntity objects in entityGroup
and
LIST_STRING
is the expression's
listString
.The following is an example of a CREATE TABLE statement produced by this method:
create table EMPLOYEE ( EMP_ID int not null, DEPT_ID int null, LAST_NAME varchar(40) not null, PHONE char(12) null, HIRE_DATE date null, SALARY number(7, 2) null )
If a database server's table creation semantics are
different, a subclass should override this method or one or more
of the following methods as appropriate:
addCreateClauseForAttribute
columnTypeStringForAttribute
allowsNullClauseForConstraint
createTableStatementsForEntityGroup
in interface EOSchemaGeneration
entityGroup
- An array of EOEntity objects that have the same
external name.
entityGroup
, or an empty array.dropTableStatementsForEntityGroup(NSArray
entityGroup)
,
dropTableStatementsForEntityGroup(NSArray
entityGroup)
,
EOSQLExpression.addCreateClauseForAttribute(
EOAttribute anEOAttribute)
,
EOSQLExpression.columnTypeStringForAttribute(
EOAttribute anEOAttribute)
,
(boolean aBoolean)
,
EOEntity.externalName()
public NSArray createTableStatementsForEntityGroups(NSArray entityGroups)
entityGroups
. Returns an empty array if
entityGroups
is empty.
This method invokes
createTableStatementsForEntityGroup
for each entity
group in entityGroups
and returns an array of all the
resulting EOSQLExpressions.
createTableStatementsForEntityGroups
in interface EOSchemaGeneration
entityGroups
- An NSArray of entity groups, which are arrays
of EOEntity objects that have the same
external name.
entityGroups
.createTableStatementsForEntityGroup(
NSArray entityGroup)
,
schemaCreationStatementsForEntities(
NSArray allEntities, NSDictionary options)
,
EOEntity.externalName()
public NSArray dropDatabaseStatementsForConnectionDictionary(NSDictionary connectionDictionary, NSDictionary administrativeConnectionDictionary)
null
. Can be
overridden by subclasses to generate and return an array of
EOSQLExpressions defining the SQL statements to drop a database
or user that is accessed by the provided
connectionDictionary
and
administrativeConnectionDictionary
.
dropDatabaseStatementsForConnectionDictionary
in interface EOSchemaGeneration
connectionDictionary
- A dictionary of
information needed by the
adaptor to connect to the
database server.administrativeConnectionDictionary
- A dictionary of
administrative login
information for the
database server.
null
by
default.createDatabaseStatementsForConnectionDictionary(
NSDictionary connectionDictionary,
NSDictionary administrativeConnectionDictionary)
public NSArray dropPrimaryKeySupportStatementsForEntityGroup(NSArray entityGroup)
null
. Can be
overridden by subclasses to return an array of EOSQLExpression
objects that define the SQL necessary to drop the primary key
generation support for entityGroup
.
dropPrimaryKeySupportStatementsForEntityGroup
in interface EOSchemaGeneration
entityGroup
- An array of EOEntity objects that have the same
external name.
null
by default.primaryKeySupportStatementsForEntityGroup(
NSArray entityGroup)
,
EOEntity.externalName()
public NSArray dropPrimaryKeySupportStatementsForEntityGroups(NSArray entityGroups)
entityGroups
. Returns an empty array if
entityGroups
is null
or empty. If primary
key generation is not supported, returns an array that contains the
string "The 'Drop Primary Key Support' option is
unavailable."
This method invokes
dropPrimaryKeySupportStatementsForEntityGroup
for each
entity group in entityGroups
and returns an array of
all the resulting EOSQLExpressions. Since the default
implementation of
dropPrimaryKeySupportStatementsForEntityGroup
returns
null
, this method returns the "not supported"
value (see above) by default, but a subclass need only override
dropPrimaryKeySupportStatementsForEntityGroup
in order
to enable this method as well.
dropPrimaryKeySupportStatementsForEntityGroups
in interface EOSchemaGeneration
entityGroups
- An NSArray of entity groups, which are arrays
of EOEntity objects that have the same
external name.
entityGroups
, or an
empty array, or an array containing a string
message that the option is not supported.dropPrimaryKeySupportStatementsForEntityGroup(
NSArray entityGroup)
,
schemaCreationStatementsForEntities(
NSArray allEntities, NSDictionary options)
,
EOAdaptorChannel.primaryKeyForNewRowWithEntity(
EOEntity entity)
,
EOEntity.externalName()
public NSArray dropTableStatementsForEntityGroup(NSArray entityGroup)
entityGroup
.
Returns an empty array if entityGroup
is
null
. The drop statement generated by this method
should be sufficient to remove the table created by
createTableStatementsForEntityGroup
's statements.
This method creates a statement of the form:
DROP TABLE TABLE_NAME
where TABLE_NAME
is the external name of the first
entity in entityGroup
.
If the database server's drop semantics are different, a subclass should override this method.
dropTableStatementsForEntityGroup
in interface EOSchemaGeneration
entityGroup
- An array of EOEntity objects that have the
same external name.
entityGroup
, or
an empty array.createTableStatementsForEntityGroup(
NSArray entityGroup)
,
EOEntity.externalName()
public NSArray dropTableStatementsForEntityGroups(NSArray entityGroups)
entityGroups
. Returns an empty array if
entityGroups
is empty.
This method invokes
dropTableStatementsForEntityGroup
for each
entity group in entityGroups
and returns an array of
all the resulting EOSQLExpressions.
dropTableStatementsForEntityGroups
in interface EOSchemaGeneration
entityGroups
- An NSArray of entity groups, which are arrays
of EOEntity objects that have the same
external name.
entityGroups
, or an
empty array.dropTableStatementsForEntityGroup(
NSArray entityGroup)
,
schemaCreationStatementsForEntities(
NSArray allEntities, NSDictionary options)
,
EOEntity.externalName()
public NSArray foreignKeyConstraintStatementsForRelationship(EORelationship relationship)
EOSchemaGeneration
relationship
. Returns an empty array if unable
to generate foreign key constraints for relationship
foreignKeyConstraintStatementsForRelationship
in interface EOSchemaGeneration
relationship
- An EORelationship.
relationship
, or an empty array.EOSQLExpression
,
foreignKeyConstraintStatementsForRelationship(EORelationship relationship)
,
EOSchemaGeneration.schemaCreationStatementsForEntities(
NSArray allEntities, NSDictionary options)
public boolean isCaseSensitive()
false
.
false
by default.public boolean isColumnTypeEquivalentToColumnType(EOSchemaSynchronization.ColumnTypes candidate, EOSchemaSynchronization.ColumnTypes columnType, NSDictionary options)
true
if the name, precision, width,
and scale of candidate
are identical to the name,
precision, width, and scale of columnType
,
false
otherwise. If the columns are equivalent,
the candidate column can be copied to columnType
without casting.
isColumnTypeEquivalentToColumnType
in interface EOSchemaSynchronization
candidate
- A column to potentially copy.columnType
- A column into which to copy
candidate
.options
- Unused.
true
if the specified attributes
of candidate
are identical to the
corresponding attributes of
columnType
.public NSArray logicalErrorsInChangeDictionaryForModelOptions(NSDictionary changes, EOModel model, NSDictionary options)
changes
and returns
an array of strings identifying all the columns and their tables
where the allows NULL rule has been changed in the corresponding
model
to disallow NULL values, but the database still
contains such values. Returns null
if no logical
errors are detected.
changes
- A change dictionary for model
with
respect to a database.model
- An EOModel to synchronize with a database.options
- Unused.
changes
with respect to
model
.objectStoreChangesFromAttributeToAttribute(
EOAttribute schemaAttribute,
EOAttribute modelAttribute)
public NSDictionary objectStoreChangesFromAttributeToAttribute(EOAttribute schemaAttribute, EOAttribute modelAttribute)
EOSchemaSynchronization
schemaAttribute
with
modelAttribute
and returns a change dictionary of
state that is different between the the two. The possible keys in
the change dictionary are:
ExternalTypeKey
AllowsNullKey
PrecisionKey
ScaleKey
WidthKey
The values in the change dictionary are the corresponding
values of schemaAttribute
, that is, the values stored
in the database.
objectStoreChangesFromAttributeToAttribute
in interface EOSchemaSynchronization
schemaAttribute
- An EOAttribute as represented in the
database.modelAttribute
- An EOAttribute as represented in the
EOModel.
schemaAttribute
and modelAttribute
.public String phraseCastingColumnNamed(String columnName, EOSchemaSynchronization.ColumnTypes type, EOSchemaSynchronization.ColumnTypes castType, NSDictionary options)
columnName
. Can
be overridden by subclasses to return an SQL string to cast the
values in the column identified by columnName
from
the current type
to a new type specified by
castType
. options
is a dictionary
describing the aspects of the schema for which to create SQL
statements.
phraseCastingColumnNamed
in interface EOSchemaSynchronization
columnName
- The name of a database column.type
- Unused.castType
- Unused.options
- Unused.
columnType
by default.EOAttribute.columnName()
public NSArray primaryKeyConstraintStatementsForEntityGroup(NSArray entityGroup)
entityGroup
. Returns an empty array if any of the
primary key attributes in entityGroup
don't have a
column name or if entityGroup
is null
.
This method creates a statement of the form:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (PRIMARY_KEY_COLUMN_NAMES)
where TABLE_NAME
is the external name for the first
entity in entityGroup
and
PRIMARY_KEY_COLUMN_NAMES
is a comma-separated
list of the column names of the first entity's primary
key attributes.
If the subclass's database server's primary key constraint semantics
are different, the subclass should override this method.
primaryKeyConstraintStatementsForEntityGroup
in interface EOSchemaGeneration
entityGroup
- An array of EOEntity objects that have the
same external name.
entityGroup
, or an empty array.EOAttribute.columnName()
,
EOEntity.externalName()
,
EOEntity.primaryKeyAttributes()
public NSArray primaryKeyConstraintStatementsForEntityGroups(NSArray entityGroups)
entityGroups
. Returns an empty array if
entityGroups
is null
or empty.
This method invokes EOSQLExpression's implementation of
primaryKeyConstraintStatementsForEntityGroup
for each
entity group in entityGroups
and returns an array of
all the resulting EOSQLExpressions.
primaryKeyConstraintStatementsForEntityGroups
in interface EOSchemaGeneration
entityGroups
- An NSArray of entity groups, which are arrays
of EOEntity objects that have the same
external name.
entityGroups
, or an empty
array.primaryKeyConstraintStatementsForEntityGroup(
NSArray entityGroup)
,
EOEntity.externalName()
public NSArray primaryKeyEntityGroupsForEntities(NSArray entities)
entities
,
or an empty array if entities
is empty or null
.
Primary key entity groups are arrays of entities with simple
primary keys; within each group, the entities have the same external
name.
entities
- An array of EOEntities for which to obtain primary
key entity groups.
entities
.EOEntity
public NSArray primaryKeySupportStatementsForEntityGroup(NSArray entityGroup)
null
. Can be
overridden by subclasses to return an array of EOSQLExpression
objects that define the SQL necessary to create the primary key
generation support for entityGroup
.
primaryKeySupportStatementsForEntityGroup
in interface EOSchemaGeneration
entityGroup
- An array of EOEntity objects that have the same
external name.
null
by default.dropPrimaryKeySupportStatementsForEntityGroup(
NSArray entityGroup)
,
EOAdaptorChannel.primaryKeyForNewRowWithEntity(
EOEntity entity)
,
EOEntity.externalName()
public NSArray primaryKeySupportStatementsForEntityGroups(NSArray entityGroups)
entityGroups
. Returns an empty array if
entityGroups
is null
or empty. If primary
key generation is not supported, returns an array that contains the
string "The 'Create Primary Key Support' option is
unavailable."
This method invokes
primaryKeySupportStatementsForEntityGroup
for each
entity group in entityGroups
and returns an array of
all the resulting EOSQLExpressions. Since the default
implementation of
primaryKeySupportStatementsForEntityGroup
returns
null
, this method returns the "not supported"
value (see above) by default, but a subclass need only override
primaryKeySupportStatementsForEntityGroup
in order to
enable this method as well.
primaryKeySupportStatementsForEntityGroups
in interface EOSchemaGeneration
entityGroups
- An NSArray of entity groups, which are arrays
of EOEntity objects that have the same
external name.
entityGroups
, or an
empty array, or an array containing a string
message that the option is not supported.primaryKeySupportStatementsForEntityGroup(
NSArray entityGroup)
,
EOAdaptorChannel.primaryKeyForNewRowWithEntity(
EOEntity entity)
,
EOEntity.externalName()
public String schemaCreationScriptForEntities(NSArray allEntities, NSDictionary options)
options
for the EOEntity objects in
allEntities
. Returns an empty string if either
options
or allEntities
is empty or
null
. options
is a dictionary whose
keys possible aspects of a schema and whose respective values
of "YES" or "NO" determine whether that
schema option is enabled for a particular invocation. The possible
option keys are:
CreateTablesKey
DropTablesKey
CreatePrimaryKeySupportKey
DropPrimaryKeySupportKey
PrimaryKeyConstraintsKey
ForeignKeyConstraintsKey
CreateDatabaseKey
DropDatabaseKey
This method invokes
schemaCreationStatementsForEntities
with
entities
and options
and then uses
appendExpressionToScript
to build up the script string
from the EOSQLExpressions returned by
schemaCreationStatementsForEntities
.
schemaCreationScriptForEntities
in interface EOSchemaGeneration
allEntities
- An array of EOEntity objects.options
- A dictionary describing the schema options
for which to generate SQL statements.
allEntities
with the given
options
.appendExpressionToScript(
EOSQLExpression expression, StringBuffer script)
,
schemaCreationStatementsForEntities(
NSArray allEntities, NSDictionary options)
public NSArray schemaCreationStatementsForEntities(NSArray allEntities, NSDictionary options)
options
for the EOEntity objects in
allEntities
. Returns an empty array if either
allEntities
or options
is
null
or empty.
options
is a dictionary whose
keys possible aspects of a schema and whose respective values
of "YES" or "NO" determine whether that
schema option is enabled for a particular invocation. The possible
option keys are:
CreateTablesKey
DropTablesKey
CreatePrimaryKeySupportKey
DropPrimaryKeySupportKey
PrimaryKeyConstraintsKey
ForeignKeyConstraintsKey
CreateDatabaseKey
DropDatabaseKey
Used in conjunction with appendExpressionToScript
and schemaCreationScriptForEntities
to build up the
SQL script to generate the specified schema for
allEntities
.
schemaCreationStatementsForEntities
in interface EOSchemaGeneration
allEntities
- An array of EOEntity objects.options
- A dictionary describing the schema options
for which to generate SQL statements.
allEntities
with the given
options
.schemaCreationScriptForEntities(
NSArray allEntities, NSDictionary options)
,
appendExpressionToScript(
EOSQLExpression expression, StringBuffer script)
public EOSynchronizationFactory.Delegate schemaSynchronizationDelegate()
public void setSchemaSynchronizationDelegate(EOSynchronizationFactory.Delegate delegate)
delegate
.
delegate
- The object to set as the receiver's delegate.public NSArray statementsToConvertColumnType(String columnName, String tableName, EOSchemaSynchronization.ColumnTypes type, EOSchemaSynchronization.ColumnTypes newType, NSDictionary options)
null
. Can be
overridden by subclasses to return an array of EOSQLExpressions
to convert in place of the type of the column indentifed by
columnName
in the table identified by
tableName
from the current type
to the
type specified by newType
. options
is a
dictionary describing the aspects of the schema for which to create
SQL statements.
statementsToConvertColumnType
in interface EOSchemaSynchronization
columnName
- The name of a column to be modified.tableName
- The name of the table containing the specified
column.type
- The current type of the specified column.newType
- The type to which to convert the specified column.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
null
by default.public NSArray statementsToCopyTableNamed(String tableName, NSArray entityGroup, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroup
, an array of EOEntity objects with the
same external name. This method is used when the
adaptor doesn't support the in-place table modifications required
to synchronize the database to a model.
The changes
dictionary identifies the changes to
make to the database schema. The options
dictionary
describes the aspects of the schema for which to create SQL
statements.
statementsToCopyTableNamed
in interface EOSchemaSynchronization
tableName
- The name of the table to be copied.entityGroup
- An array of EOEntity objects that defines a new
database table into which to copy the named
table.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
tableName
to a new table
defined by entityGroup
.EOSchemaSynchronization
public NSArray statementsToDeleteColumnNamed(String columnName, String tableName, NSDictionary options)
null
. Can be
overridden by subclasses to return an array of EOSQLExpressions
to delete in place of the column indentifed by tableName
.
options
is a dictionary describing the aspects of the
schema for which to create SQL statements.
statementsToDeleteColumnNamed
in interface EOSchemaSynchronization
columnName
- The name of a column to be deleted.tableName
- The name of the table containing the specified
column.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
null
by default.public NSArray statementsToDropForeignKeyConstraintsOnEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroups
, which is
an array containing arrays of EOEntity objects with the same
external name. The changes
dictionary identifies the
changes to make to the database schema. The options
dictionary describes the aspects of the schema for which to create
SQL statements.
statementsToDropForeignKeyConstraintsOnEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array containing arrays of EOEntity objects
with the same external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToDropPrimaryKeyConstraintsOnEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroups
, which is
an array containing arrays of EOEntity objects with the same
external name. The changes
dictionary identifies the
changes to make to the database schema. The options
dictionary describes the aspects of the schema for which to create
SQL statements.
statementsToDropPrimaryKeyConstraintsOnEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array containing arrays of EOEntity objects
with the same external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToDropPrimaryKeySupportForEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroups
, which is
an array containing arrays of EOEntity objects with the same
external name. The changes
dictionary identifies the
changes to make to the database schema. The options
dictionary describes the aspects of the schema for which to create
SQL statements.
statementsToDropPrimaryKeySupportForEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array containing arrays of EOEntity objects
with the same external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToImplementForeignKeyConstraintsOnEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroups
, which is an array containing arrays of
EOEntity objects with the same external name. The
changes
dictionary identifies changes to make to
the database schema. The options
dictionary describes
the aspects of the schema for which to create SQL statements.
statementsToImplementForeignKeyConstraintsOnEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array containing arrays of EOEntity objects
with the same external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToImplementPrimaryKeyConstraintsOnEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroups
, which is an array containing arrays of
EOEntity objects with the same external name. The
changes
dictionary identifies the changes to make to
the database schema. The options
dictionary describes
the aspects of the schema for which to create SQL statements.
statementsToImplementPrimaryKeyConstraintsOnEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array containing arrays of EOEntity objects
with the same external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToImplementPrimaryKeySupportForEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
entityGroups
,
which is an array containing arrays of EOEntity objects with the
same external name. The changes
dictionary identifies
the changes to make to the database schema. The options
dictionary describes the aspects of the schema for which to create
SQL statements.
statementsToImplementPrimaryKeySupportForEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array containing arrays of EOEntity objects
with the same external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToInsertColumnForAttribute(EOAttribute attribute, NSDictionary options)
EOSchemaSynchronization
attribute
. The
options
dictionary describes the aspects of the schema
for which to create SQL statements.
statementsToInsertColumnForAttribute
in interface EOSchemaSynchronization
attribute
- An EOAttribute for which to insert a database
column.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
attribute
.EOAttribute
,
EOSchemaSynchronization
public NSArray statementsToModifyColumnNullRule(String columnName, String tableName, boolean allowsNull, NSDictionary options)
null
by default. Can be overridden by
subclasses to return an array of EOSQLExpressions to modify in
place of the column identified by columnName
in the table
identified by tableName
to either allow or not allow
NULL values as specified by allowsNull
. The
options
dictionary describes the aspects of the schema
for which to create SQL statements.
statementsToModifyColumnNullRule
in interface EOSchemaSynchronization
columnName
- The name of a column to be modified.tableName
- The name of the table containing the specified
column.allowsNull
- A Boolean value to determine whether to allow or
not allow NULL values in the specified column.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
null
by default.EOSchemaSynchronization
public NSArray statementsToRenameColumnNamed(String columnName, String tableName, String newName, NSDictionary options)
null
. Can be
overridden by subclasses to return an array of EOSQLExpressions to
rename the column indentifed by columnName
in the table
identified by tableName
to newName
.
options
is a dictionary describing the aspects of the
schema for which to create SQL statements.
statementsToRenameColumnNamed
in interface EOSchemaSynchronization
columnName
- The name of a column to be renamed.tableName
- The name of the table containing the specified
column.newName
- The new name for the specified column.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
null
by default.public NSArray statementsToRenameTableNamed(String tableName, String newName, NSDictionary options)
EOSchemaSynchronization
tableName
to
newName
. options
is a dictionary
describing the aspects of the schema for which to create SQL
statements.
statementsToRenameTableNamed
in interface EOSchemaSynchronization
tableName
- The name of a table to be renamed.newName
- The new name for the specified table.options
- A dictionary describing the aspects of the schema
for which to create SQL statements.
public NSArray statementsToUpdateObjectStoreForEntityGroups(NSArray entityGroups, NSDictionary changes, NSDictionary options)
entityGroups
according to the
changes and SQL generation instructions in the changes
and options
dictionaries. entityGroups
is
an array of entity groups, which are arrays of EOEntity objects that
have the same external name. Inserts and deletes columns, and
updates modified columns.
statementsToUpdateObjectStoreForEntityGroups
in interface EOSchemaSynchronization
entityGroups
- An array of entity groups, which are arrays
of EOEntity objects that have the same
external name.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the
schema for which to create SQL statements.
entityGroups
.EOSchemaSynchronization
public NSArray statementsToUpdateObjectStoreForModel(EOModel model, NSDictionary changes, NSDictionary options)
EOSchemaSynchronization
model
. Prepares the statements to
insert and delete new and deleted tables before invoking
statementsToUpdateObjectStoreForEntityGroups
for each
modified table. The changes
dictionary identifies the
changes to make to the database schema. The options
dictionary describes the aspects of the schema for which to create
SQL statements.
statementsToUpdateObjectStoreForModel
in interface EOSchemaSynchronization
model
- The EOModel with which to sychnronize the database.changes
- A dictionary of changes to make to the database
schema.options
- A dictionary describing the aspects of the schema for
which to create SQL statements.
model
.EOSchemaSynchronization.statementsToUpdateObjectStoreForEntityGroups(
NSArray model, NSDictionary changes,
NSDictionary options)
,
EOSchemaSynchronization
public boolean supportsDirectColumnCoercion()
false
. Can be
overridden by subclasses to return true
if the adaptor
can change the type of an existing column in place.
supportsDirectColumnCoercion
in interface EOSchemaSynchronization
true
if the adaptor can change the type of
an existing column in place.public boolean supportsDirectColumnDeletion()
false
. Can be
overridden by subclasses to return true
if the adaptor
can delete columns.
supportsDirectColumnDeletion
in interface EOSchemaSynchronization
true
if the adaptor can delete columns.public boolean supportsDirectColumnInsertion()
false
. Can be
overridden by subclasses to return true
if the adaptor
can add columns to a table.
supportsDirectColumnInsertion
in interface EOSchemaSynchronization
true
if the adaptor can add columns to a table.public boolean supportsDirectColumnNullRuleModification()
false
. Can be
overridden by subclasses to return true
if the adaptor
can modify the null
rule of an existing column in
place.
supportsDirectColumnNullRuleModification
in interface EOSchemaSynchronization
true
if the adaptor can modify the
null
rule of an existing column in place.public boolean supportsDirectColumnRenaming()
false
. Can be
overridden by subclasses to return true
if the adaptor
can rename columns in a table.
supportsDirectColumnRenaming
in interface EOSchemaSynchronization
true
if the adaptor can rename columns in a
table.public boolean supportsSchemaSynchronization()
false
. Can be
overridden by subclasses to return true
if the adaptor
can update the database schema to reflect changes in an EOModel.
supportsSchemaSynchronization
in interface EOSchemaSynchronization
true
if the adaptor can update the
database schema.public NSArray tableEntityGroupsForEntities(NSArray entities)
entities
,
or an empty array if entities
is empty or null
.
Table entity groups are arrays of entities with attributes that have column
names; within each group, the entities have the same external name.
entities
- An array of EOEntities for which to obtain table
entity groups.
entities
.
|
Last updated Thu Oct 21 15:04:16 PDT 2004. | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |