From cd322f6a8c5ae8cc42bd32b702d4f1dbeb4d56b8 Mon Sep 17 00:00:00 2001 From: Samuel Pelletier Date: Sun, 20 Apr 2014 10:33:36 -0400 Subject: [PATCH] Restore of the switch to EOSchemaSynchronizationFactory. Warning: the migration can fail with invalid identifier because the column names are not quoted. I searched but cannot find where to fix this problem. --- .../jdbcadaptor/_FrontBasePlugIn.java | 88 ++++++++++--------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/Frameworks/PlugIns/FrontBasePlugIn/Sources/com/webobjects/jdbcadaptor/_FrontBasePlugIn.java b/Frameworks/PlugIns/FrontBasePlugIn/Sources/com/webobjects/jdbcadaptor/_FrontBasePlugIn.java index 2d68a25802d..b692e456af4 100644 --- a/Frameworks/PlugIns/FrontBasePlugIn/Sources/com/webobjects/jdbcadaptor/_FrontBasePlugIn.java +++ b/Frameworks/PlugIns/FrontBasePlugIn/Sources/com/webobjects/jdbcadaptor/_FrontBasePlugIn.java @@ -23,8 +23,9 @@ import com.webobjects.eoaccess.EOJoin; import com.webobjects.eoaccess.EORelationship; import com.webobjects.eoaccess.EOSQLExpression; -import com.webobjects.eoaccess.EOSchemaSynchronization; -import com.webobjects.eoaccess.EOSynchronizationFactory; +import com.webobjects.eoaccess.synchronization.EOSchemaGenerationOptions; +import com.webobjects.eoaccess.synchronization.EOSchemaSynchronization; +import com.webobjects.eoaccess.synchronization.EOSchemaSynchronizationFactory; import com.webobjects.eocontrol.EOAndQualifier; import com.webobjects.eocontrol.EOKeyValueQualifier; import com.webobjects.eocontrol.EOQualifier; @@ -114,7 +115,7 @@ public boolean canDescribeStoredProcedure(String s) { } @Override - public EOSynchronizationFactory createSynchronizationFactory() { + public EOSchemaSynchronizationFactory createSchemaSynchronizationFactory() { return new _FrontBasePlugIn.FrontbaseSynchronizationFactory(_adaptor); } @@ -237,6 +238,7 @@ public Properties connectionPropertiesForConnectionDictionary(NSDictionary conne * framework and this can be used as a hard-coded equivalent. *

*/ + @SuppressWarnings("unchecked") @Override public NSDictionary jdbcInfo() { // you can swap this code out to write the property list out in order // to get a fresh copy of the @@ -485,7 +487,7 @@ private boolean _newPrimaryKeys(int keyBatchSize, EOEntity eoentity, JDBCChannel attributesToFetch.addObject(generatedPrimaryKeyAttribute); } - sql.append(')'); + sql.append(")"); boolean pksGenerated = false; EOSQLExpression eosqlexpression = expressionFactory().expressionForString(sql.toString()); @@ -645,7 +647,7 @@ else if (upperExternalType.equals("CLOB")) return -1; } - public static class FrontbaseSynchronizationFactory extends EOSynchronizationFactory { + public static class FrontbaseSynchronizationFactory extends EOSchemaSynchronizationFactory { public FrontbaseSynchronizationFactory(EOAdaptor eoadaptor) { super(eoadaptor); @@ -665,10 +667,10 @@ public static boolean boolValueForKeyDefault(NSDictionary nsdictionary, String s } @Override - public String schemaCreationScriptForEntities(NSArray allEntities, NSDictionary options) { + public String schemaCreationScriptForEntities(NSArray allEntities, EOSchemaGenerationOptions options) { StringBuffer result = new StringBuffer(); if (options == null) { - options = NSDictionary.emptyDictionary(); + options = new EOSchemaGenerationOptions(); } NSArray statements = schemaCreationStatementsForEntities(allEntities, options); int i = 0; @@ -686,7 +688,7 @@ public String schemaCreationScriptForEntities(NSArray allEntities, NSD * */ @Override - public NSArray schemaCreationStatementsForEntities(NSArray entities, NSDictionary options) { + public NSArray schemaCreationStatementsForEntities(NSArray entities, EOSchemaGenerationOptions options) { NSMutableArray result = new NSMutableArray(); if (entities == null || entities.count() == 0) @@ -699,34 +701,34 @@ public NSArray schemaCreationStatementsForEntities(NSArray connectionDict = entities.lastObject().model().connectionDictionary(); - if (boolValueForKeyDefault(options, "dropDatabase", false)) { + if (options.dropDatabase()) { result.addObjectsFromArray(dropDatabaseStatementsForConnectionDictionary(connectionDict, null)); } - if (boolValueForKeyDefault(options, "createDatabase", false)) { + if (options.createDatabase()) { result.addObjectsFromArray(createDatabaseStatementsForConnectionDictionary(connectionDict, null)); } - if (boolValueForKeyDefault(options, "dropPrimaryKeySupport", true)) { + if (options.dropPrimaryKeySupport()) { NSArray> entityGroups = primaryKeyEntityGroupsForEntities(entities); result.addObjectsFromArray(dropPrimaryKeySupportStatementsForEntityGroups(entityGroups)); } - if (boolValueForKeyDefault(options, "dropTables", true)) { + if (options.dropTables()) { NSArray> entityGroups = tableEntityGroupsForEntities(entities); result.addObjectsFromArray(dropTableStatementsForEntityGroups(entityGroups)); } - if (boolValueForKeyDefault(options, "createTables", true)) { + if (options.createTables()) { NSArray> entityGroups = tableEntityGroupsForEntities(entities); result.addObjectsFromArray(createTableStatementsForEntityGroups(entityGroups)); result.addObjectsFromArray(createIndexStatementsForEntityGroups(entityGroups)); } - if (boolValueForKeyDefault(options, "createPrimaryKeySupport", true)) { + if (options.createPrimaryKeySupport()) { NSArray> entityGroups = primaryKeyEntityGroupsForEntities(entities); result.addObjectsFromArray(primaryKeySupportStatementsForEntityGroups(entityGroups)); } - if (boolValueForKeyDefault(options, "primaryKeyConstraints", true)) { + if (options.primaryKeyConstraints()) { NSArray> entityGroups = tableEntityGroupsForEntities(entities); result.addObjectsFromArray(primaryKeyConstraintStatementsForEntityGroups(entityGroups)); } - if (boolValueForKeyDefault(options, "foreignKeyConstraints", false)) { + if (options.foreignKeyConstraints()) { NSArray> entityGroups = tableEntityGroupsForEntities(entities); for (NSArray entityGroup : entityGroups) { result.addObjectsFromArray(_foreignKeyConstraintStatementsForEntityGroup(entityGroup)); @@ -776,9 +778,9 @@ public NSArray dropTableStatementsForEntityGroup(NSArray primaryKeySupportStatementsForEntityGroup(NSArray entityGroup) { - if (entityGroup == null) + if (entityGroup == null) { return NSArray.emptyArray(); - + } NSMutableArray result = new NSMutableArray(); for (int i = entityGroup.count() - 1; i >= 0; i--) { @@ -832,7 +834,7 @@ public NSArray foreignKeyConstraintStatementsForRelationship(EO NSArray attributes = relationship.sourceAttributes(); for (int i = 0; i < attributes.count(); i++) { - constraint.append('_'); + constraint.append("_"); if (i != 0) fkSql.append(", "); @@ -844,7 +846,7 @@ public NSArray foreignKeyConstraintStatementsForRelationship(EO } fkSql.append(") REFERENCES "); - constraint.append('_'); + constraint.append("_"); String referencedExternalName = relationship.destinationEntity().externalName(); fkSql.append(quoteTableName(referencedExternalName.toUpperCase())); @@ -855,7 +857,7 @@ public NSArray foreignKeyConstraintStatementsForRelationship(EO attributes = relationship.destinationAttributes(); for (int i = 0; i < attributes.count(); i++) { - constraint.append('_'); + constraint.append("_"); if (i != 0) fkSql.append(", "); @@ -904,9 +906,9 @@ public NSArray createTableStatementsForEntityGroup(NSArray nsmutablearray = new NSMutableArray(); int j = entityGroup != null ? entityGroup.count() : 0; - if (j == 0) + if (j == 0) { return NSArray.emptyArray(); - + } // 出力バッファーを準備 StringBuilder columns = new StringBuilder(); @@ -967,9 +969,9 @@ public NSArray createIndexStatementsForEntityGroup(NSArray statementsToConvertColumnType(String columnName, String tableName, ColumnTypes oldType, ColumnTypes newType, NSDictionary options) { + public NSArray statementsToConvertColumnType(String columnName, String tableName, ColumnTypes oldType, ColumnTypes newType, EOSchemaGenerationOptions options) { String columnTypeString = statementToCreateDataTypeClause(newType); NSArray statements = new NSArray(_expressionForString("alter column " + quoteTableName(tableName) + "." + quoteTableName(columnName) + " to " + columnTypeString)); return statements; } @Override - public NSArray statementsToModifyColumnNullRule(String columnName, String tableName, boolean allowsNull, NSDictionary options) { + public NSArray statementsToModifyColumnNullRule(String columnName, String tableName, boolean allowsNull, EOSchemaGenerationOptions options) { NSArray statements; if (allowsNull) { if (USE_NAMED_CONSTRAINTS) { @@ -1033,7 +1035,7 @@ public NSArray statementsToModifyColumnNullRule(String columnNa } @Override - public NSArray statementsToDeleteColumnNamed(String columnName, String tableName, NSDictionary options) { + public NSArray statementsToDeleteColumnNamed(String columnName, String tableName, EOSchemaGenerationOptions options) { return new NSArray(_expressionForString("alter table " + quoteTableName(tableName) + " drop column \"" + columnName.toUpperCase() + "\" cascade")); } @@ -1043,7 +1045,7 @@ public String _columnCreationClauseForAttribute(EOAttribute attribute) { } @Override - public NSArray statementsToInsertColumnForAttribute(EOAttribute attribute, NSDictionary options) { + public NSArray statementsToInsertColumnForAttribute(EOAttribute attribute, EOSchemaGenerationOptions options) { String clause = _columnCreationClauseForAttribute(attribute); return new NSArray(_expressionForString("alter table " + quoteTableName(attribute.entity().externalName()) + " add " + clause)); } @@ -1084,12 +1086,12 @@ private String statementToCreateDataTypeClause(EOSchemaSynchronization.ColumnTyp } @Override - public NSArray statementsToRenameColumnNamed(String columnName, String tableName, String newName, NSDictionary options) { + public NSArray statementsToRenameColumnNamed(String columnName, String tableName, String newName, EOSchemaGenerationOptions options) { return new NSArray(_expressionForString("alter column name " + quoteTableName(tableName) + "." + quoteTableName(columnName) + " to " + quoteTableName(newName))); } @Override - public NSArray statementsToRenameTableNamed(String tableName, String newName, NSDictionary options) { + public NSArray statementsToRenameTableNamed(String tableName, String newName, EOSchemaGenerationOptions options) { return new NSArray(_expressionForString("alter table name " + quoteTableName(tableName) + " to " + quoteTableName(newName))); } @@ -1136,9 +1138,9 @@ public NSArray primaryKeyConstraintStatementsForEntityGroup(NSA StringBuilder pkSql = new StringBuilder(" PRIMARY KEY ("); for (int j = 0; j < keys.count(); j++) { - constraint.append('_'); + constraint.append("_"); if (j != 0) - pkSql.append(','); + pkSql.append(","); pkSql.append("\""); String columnName = entity.attributeNamed(keys.objectAtIndex(j)).columnName(); @@ -1550,7 +1552,7 @@ else if (j == -1 && k == -1) sb.append(orderByClause); } if (lockClause != null && lockClause.length() > 0) { - sb.append(' '); + sb.append(" "); sb.append(lockClause); } return sb.toString(); @@ -1732,16 +1734,16 @@ public String sqlStringForKeyValueQualifier(EOKeyValueQualifier eokeyvaluequalif value = sqlStringForValue(qualifier, attrubute); sql.append(column); - sql.append(' '); + sql.append(" "); sql.append(sqlStringForSelector(nsselector, qualifier)); - sql.append(' '); + sql.append(" "); sql.append(value); } if (value.indexOf(sqlEscapeChar) != -1 && flag) { sql.append(" ESCAPE '"); sql.append(sqlEscapeChar); - sql.append('\''); + sql.append("'"); } return sql.toString(); } @@ -1796,7 +1798,7 @@ public String formatValueForAttribute(Object obj, EOAttribute eoattribute) { StringBuffer time = new StringBuffer("TIME '"); Date d = (Date)eoattribute.adaptorValueByConvertingAttributeValue(obj); TIME_FORMATTER.get().format(d, time, new FieldPosition(0)); - time.append('\''); + time.append("'"); return time.toString(); } @@ -1806,7 +1808,7 @@ public String formatValueForAttribute(Object obj, EOAttribute eoattribute) { SimpleDateFormat formatter = TIME_FORMATTER.get(); formatter.format(d, time, new FieldPosition(0)); time.append(getTimeZone(formatter.getTimeZone())); - time.append('\''); + time.append("'"); return time.toString(); } @@ -1814,7 +1816,7 @@ public String formatValueForAttribute(Object obj, EOAttribute eoattribute) { StringBuffer time = new StringBuffer("TIMESTAMP '"); Date d = (Date)eoattribute.adaptorValueByConvertingAttributeValue(obj); TIMESTAMP_FORMATTER.get().format(d, time, new FieldPosition(0)); - time.append('\''); + time.append("'"); return time.toString(); } case FrontBaseTypes.FB_TimestampTZ: { @@ -1823,14 +1825,14 @@ public String formatValueForAttribute(Object obj, EOAttribute eoattribute) { SimpleDateFormat formatter = TIMESTAMP_FORMATTER.get(); formatter.format(d, time, new FieldPosition(0)); time.append(getTimeZone(formatter.getTimeZone())); - time.append('\''); + time.append("'"); return time.toString(); } case FrontBaseTypes.FB_Date: { StringBuffer time = new StringBuffer("DATE '"); Date d = (Date)eoattribute.adaptorValueByConvertingAttributeValue(obj); DATE_FORMATTER.get().format(d, time, new FieldPosition(0)); - time.append('\''); + time.append("'"); return time.toString(); } case FrontBaseTypes.FB_Boolean: { @@ -1976,7 +1978,7 @@ String formatBit(NSData data) { result.append(heximals[b % 16]); } - result.append('\''); + result.append("'"); return result.toString(); }