Skip to content

Commit

Permalink
*ERXSQLHelper.java - add OpenBase helper code
Browse files Browse the repository at this point in the history
*ERXMigrationDatabase.synchronizationFactory - should return EOSchemaSynchronizationFactory instead of deprecated EOSynchronizationFactory
*ERXMigrationTable, ERXMigrationColumn, ERXSQLHelper - convert occurrences of EOSchemaGeneration/EOSynchronizationFactory to com.webobjects.eoaccess.synchronization.* versions
*ERXMigrationTable, ERXMigrationColumn, ERXSQLHelper - methods receiving/sending/processing NSDictionary of 'options' for sql statements changed to use com.webobjects.eoaccess.synchronization.EOSchemaGenerationOptions
*deprecated ERXSQLHelper.defaultOptionDictionary in favor of ERXSQLHelper.defaultOptions which returns EOSchemaGenerationOptions object
*ERXJDBCUtilities, ERXModelGroup, ERXEOAccessUtilities - now call ERXSQLHelper.defaultOptions instead of deprecated defaultOptionDictionary
*ERXJDBCMigrationLock.dbUpdaterCreateStatement now builds EOSchemaGenerationOptions with correct options instead of NSDictionary.
er.indexing.example.DataCreator - updates to support 5.4 API
  • Loading branch information
T Worman committed May 27, 2014
2 parents a5ffd1f + 1cc1048 commit 3b39cfc
Show file tree
Hide file tree
Showing 13 changed files with 173 additions and 96 deletions.
Expand Up @@ -14,15 +14,13 @@
import com.webobjects.eoaccess.EOModel;
import com.webobjects.eoaccess.EOModelGroup;
import com.webobjects.eoaccess.EOSQLExpression;
import com.webobjects.eoaccess.EOSchemaGeneration;
import com.webobjects.eoaccess.EOSynchronizationFactory;
import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.eoaccess.synchronization.EOSchemaGenerationOptions;
import com.webobjects.eoaccess.synchronization.EOSchemaSynchronizationFactory;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSForwardException;
import com.webobjects.foundation.NSMutableArray;
import com.webobjects.foundation.NSMutableDictionary;
import com.webobjects.foundation.NSTimestamp;

import er.extensions.eof.ERXEC;
Expand All @@ -45,14 +43,13 @@ public static void main(String[] args) {
new DataCreator().createAll();
}

private NSDictionary optionsWithPrimaryKeySupportDisabled(NSDictionary options) {
NSMutableDictionary mutableOptions = options.mutableClone();
mutableOptions.setObjectForKey("NO", EOSchemaGeneration.CreatePrimaryKeySupportKey);
mutableOptions.setObjectForKey("NO", EOSchemaGeneration.DropPrimaryKeySupportKey);
return mutableOptions.immutableClone();
private EOSchemaGenerationOptions optionsWithPrimaryKeySupportDisabled(EOSchemaGenerationOptions options) {
options.setCreatePrimaryKeySupport(false);
options.setDropPrimaryKeySupport(false);
return options;
}

private void createPrimaryKeySupportForModel(EOModel eomodel, EOAdaptorChannel channel, EOSynchronizationFactory syncFactory) {
private void createPrimaryKeySupportForModel(EOModel eomodel, EOAdaptorChannel channel, EOSchemaSynchronizationFactory syncFactory) {
try {
// AK: the (Object) cast is needed, because in 5.4 new NSArray(obj)
// != new NSArray(array).
Expand All @@ -74,9 +71,9 @@ private void createTables(boolean dropTables) {
try {
EOAdaptorChannel channel = dbc.availableChannel().adaptorChannel();
if (eomodel.adaptorName().contains("JDBC")) {
EOSynchronizationFactory syncFactory = (EOSynchronizationFactory) channel.adaptorContext().adaptor().synchronizationFactory();
EOSchemaSynchronizationFactory syncFactory = (EOSchemaSynchronizationFactory) channel.adaptorContext().adaptor().schemaSynchronizationFactory();
ERXSQLHelper helper = ERXSQLHelper.newSQLHelper(channel);
NSDictionary options = helper.defaultOptionDictionary(true, dropTables);
EOSchemaGenerationOptions options = helper.defaultOptions(true, dropTables);

// Primary key support creation throws an unwanted exception
// if
Expand Down
@@ -1,4 +1,4 @@
// $LastChangedRevision: 7683 $ DO NOT EDIT. Make changes to Asset.java instead.
// $LastChangedRevision$ DO NOT EDIT. Make changes to Asset.java instead.
package er.indexing.example.eof;

import er.extensions.foundation.*;
Expand Down
@@ -1,4 +1,4 @@
// $LastChangedRevision: 7683 $ DO NOT EDIT. Make changes to AssetGroup.java instead.
// $LastChangedRevision$ DO NOT EDIT. Make changes to AssetGroup.java instead.
package er.indexing.example.eof;

import er.extensions.foundation.*;
Expand Down
@@ -1,4 +1,4 @@
// $LastChangedRevision: 7683 $ DO NOT EDIT. Make changes to Tag.java instead.
// $LastChangedRevision$ DO NOT EDIT. Make changes to Tag.java instead.
package er.indexing.example.eof;

import er.extensions.foundation.*;
Expand Down
Expand Up @@ -36,6 +36,7 @@
import com.webobjects.eoaccess.EOSQLExpression;
import com.webobjects.eoaccess.EOSQLExpressionFactory;
import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.eoaccess.synchronization.EOSchemaGenerationOptions;
import com.webobjects.eocontrol.EOAndQualifier;
import com.webobjects.eocontrol.EOClassDescription;
import com.webobjects.eocontrol.EOEditingContext;
Expand Down Expand Up @@ -710,7 +711,7 @@ public static EOAttribute createAggregateAttribute(EOEditingContext ec, String f
*
* @see er.extensions.jdbc.ERXSQLHelper#createSchemaSQLForEntitiesInModelWithNameAndOptions(NSArray, String, NSDictionary)
*/
public static String createSchemaSQLForEntitiesInModelWithNameAndOptionsForOracle9(NSArray entities, String modelName, NSDictionary optionsCreate) {
public static String createSchemaSQLForEntitiesInModelWithNameAndOptionsForOracle9(NSArray entities, String modelName, EOSchemaGenerationOptions optionsCreate) {
EODatabaseContext dc = EOUtilities.databaseContextForModelNamed(ERXEC.newEditingContext(), modelName);
return ERXSQLHelper.newSQLHelper(dc).createSchemaSQLForEntitiesInModelWithNameAndOptions(entities, modelName, optionsCreate);
}
Expand Down Expand Up @@ -746,7 +747,7 @@ public static String createSchemaSQLForEntitiesInModelWithNameAndOptionsForOracl
* @deprecated
*/
@Deprecated
public static String createSchemaSQLForEntitiesInModelWithNameAndOptions(NSArray entities, String modelName, NSDictionary optionsCreate) {
public static String createSchemaSQLForEntitiesInModelWithNameAndOptions(NSArray entities, String modelName, EOSchemaGenerationOptions optionsCreate) {
EODatabaseContext dc = EOUtilities.databaseContextForModelNamed(ERXEC.newEditingContext(), modelName);
return ERXSQLHelper.newSQLHelper(dc).createSchemaSQLForEntitiesInModelWithNameAndOptions(entities, modelName, optionsCreate);
}
Expand All @@ -761,7 +762,7 @@ public static String createSchemaSQLForEntitiesInModelWithNameAndOptions(NSArray
* @deprecated
*/
@Deprecated
public static String createSchemaSQLForEntitiesWithOptions(NSArray entities, EODatabaseContext databaseContext, NSDictionary optionsCreate) {
public static String createSchemaSQLForEntitiesWithOptions(NSArray entities, EODatabaseContext databaseContext, EOSchemaGenerationOptions optionsCreate) {
return ERXSQLHelper.newSQLHelper(databaseContext).createSchemaSQLForEntitiesWithOptions(entities, databaseContext, optionsCreate);
}

Expand Down
Expand Up @@ -14,7 +14,7 @@
import com.webobjects.eoaccess.EOModel;
import com.webobjects.eoaccess.EOSQLExpressionFactory;
import com.webobjects.eoaccess.EOSchemaGeneration;
import com.webobjects.eoaccess.EOSynchronizationFactory;
import com.webobjects.eoaccess.synchronization.EOSchemaSynchronizationFactory;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSData;
import com.webobjects.foundation.NSDictionary;
Expand All @@ -38,23 +38,26 @@ public ERXForwardingAdaptor(String name) {
public EOSQLExpressionFactory expressionFactory() {
return _forwardedAdaptor.expressionFactory();
}



@Override
@Deprecated
public EOSchemaGeneration synchronizationFactory() {
return _forwardedAdaptor.synchronizationFactory();
return (EOSchemaGeneration) schemaSynchronizationFactory();
}

@Override
public EOSynchronizationFactory schemaSynchronizationFactory() {
public EOSchemaSynchronizationFactory schemaSynchronizationFactory() {
try {
Method schemaSynchronizationFactoryMethod = _forwardedAdaptor.getClass().getMethod("schemaSynchronizationFactory");
return (EOSynchronizationFactory) schemaSynchronizationFactoryMethod.invoke(_forwardedAdaptor);
return (EOSchemaSynchronizationFactory) schemaSynchronizationFactoryMethod.invoke(_forwardedAdaptor);
}
catch (Throwable e) {
throw new RuntimeException("Failed to retrieve schemaSynchronizationFactory.", e);
}
}



@Override
public NSArray prototypeAttributes() {
return _forwardedAdaptor.prototypeAttributes();
Expand Down
Expand Up @@ -449,7 +449,7 @@ private void dumpSchemaSQL(EOModel eomodel) {
if (adaptor instanceof JDBCAdaptor) {
JDBCAdaptor jdbc = (JDBCAdaptor) adaptor;
ERXSQLHelper helper = ERXSQLHelper.newSQLHelper(jdbc);
String sql = helper.createSchemaSQLForEntitiesInModelAndOptions(eomodel.entities(), eomodel, helper.defaultOptionDictionary(true, true));
String sql = helper.createSchemaSQLForEntitiesInModelAndOptions(eomodel.entities(), eomodel, helper.defaultOptions(true, true));
ERXFileUtilities.writeInputStreamToFile(new ByteArrayInputStream(sql.getBytes()), dumpFile);
log.info("Wrote Schema SQL to " + dumpFile);
}
Expand Down
Expand Up @@ -775,7 +775,7 @@ public static void dropTablesForModel(EOAdaptorChannel channel, EOModel model, b
*/
public static void dropTablesForEntities(EOAdaptorChannel channel, NSArray<EOEntity> entities, boolean ignoreFailures) throws SQLException {
ERXSQLHelper sqlHelper = ERXSQLHelper.newSQLHelper(channel);
String sqlScript = sqlHelper.createSchemaSQLForEntitiesWithOptions(entities, channel.adaptorContext().adaptor(), sqlHelper.defaultOptionDictionary(false, true));
String sqlScript = sqlHelper.createSchemaSQLForEntitiesWithOptions(entities, channel.adaptorContext().adaptor(), sqlHelper.defaultOptions(false, true));
ERXJDBCUtilities.executeUpdateScript(channel, sqlScript, ignoreFailures);
}

Expand Down Expand Up @@ -807,7 +807,7 @@ public static void createTablesForModel(EOAdaptorChannel channel, EOModel model)
*/
public static void createTablesForEntities(EOAdaptorChannel channel, NSArray<EOEntity> entities) throws SQLException {
ERXSQLHelper sqlHelper = ERXSQLHelper.newSQLHelper(channel);
String sqlScript = sqlHelper.createSchemaSQLForEntitiesWithOptions(entities, channel.adaptorContext().adaptor(), sqlHelper.defaultOptionDictionary(true, false));
String sqlScript = sqlHelper.createSchemaSQLForEntitiesWithOptions(entities, channel.adaptorContext().adaptor(), sqlHelper.defaultOptions(true, false));
ERXJDBCUtilities.executeUpdateScript(channel, sqlScript);
}

Expand Down

0 comments on commit 3b39cfc

Please sign in to comment.