User: dsundstrom Date: 02/01/15 14:25:49 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCStartCommand.java Log: Converted to merged CMR field and CMP field interface. Converted from field arrays to lists. Revision Changes Path 1.16 +43 -68 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java Index: JDBCStartCommand.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- JDBCStartCommand.java 2002/01/05 12:08:51 1.15 +++ JDBCStartCommand.java 2002/01/15 22:25:49 1.16 @@ -12,8 +12,11 @@ import java.sql.ResultSet; import java.sql.Statement; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import javax.sql.DataSource; @@ -36,7 +39,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a> * @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a> * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a> - * @version $Revision: 1.15 $ + * @version $Revision: 1.16 $ */ public class JDBCStartCommand { @@ -70,8 +73,6 @@ public void execute() throws Exception { - boolean debug = log.isDebugEnabled(); - // Create table if necessary if(!entity.getTableExists()) { if(entityMetaData.getCreateTable()) { @@ -79,36 +80,33 @@ entity.getDataSource(), entity.getTableName(), getEntityCreateTableSQL()); - } - else if (debug) - { + } else { log.debug("Table not create as requested: " + entity.getTableName()); } entity.setTableExists(true); } - + // create relation tables - JDBCCMRFieldBridge[] cmrFields = entity.getJDBCCMRFields(); - for(int i=0; i<cmrFields.length; i++) { - JDBCRelationMetaData relationMetaData = - cmrFields[i].getRelationMetaData(); + List cmrFields = entity.getCMRFields(); + for(Iterator iter = cmrFields.iterator(); iter.hasNext();) { + JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge)iter.next(); + JDBCRelationMetaData relationMetaData = cmrField.getRelationMetaData(); + // if the table for the related entity has been created - if(cmrFields[i].getRelatedEntity().getTableExists()) { + if(cmrField.getRelatedEntity().getTableExists()) { // create the relation table if(relationMetaData.isTableMappingStyle() && !relationMetaData.getTableExists()) { - + if(relationMetaData.getCreateTable()) { createTable( relationMetaData.getDataSource(), relationMetaData.getTableName(), - getRelationCreateTableSQL(cmrFields[i])); - } - else if (debug) - { + getRelationCreateTableSQL(cmrField)); + } else { log.debug("Relation table not create as requested: " + relationMetaData.getTableName()); } @@ -116,10 +114,10 @@ relationMetaData.setTableExists(true); // Create my fk constraint - addForeignKeyConstraint(cmrFields[i]); + addForeignKeyConstraint(cmrField); // Create related fk constraint - addForeignKeyConstraint(cmrFields[i].getRelatedCMRField()); + addForeignKeyConstraint(cmrField.getRelatedCMRField()); } } } @@ -137,27 +135,24 @@ Connection con = null; Statement statement = null; - boolean debug = log.isDebugEnabled(); try { // since we use the pools, we have to do this within a transaction manager.getContainer().getTransactionManager().begin (); // get the connection con = dataSource.getConnection(); - + // create the statement statement = con.createStatement(); - + // execute sql - if (debug) - log.debug("Executing SQL: " + sql); + log.debug("Executing SQL: " + sql); statement.executeUpdate(sql); // commit the transaction manager.getContainer().getTransactionManager().commit (); } catch (Exception e) { - if (debug) - log.debug("Could not create table " + tableName, e); + log.debug("Could not create table " + tableName, e); try { manager.getContainer().getTransactionManager().rollback (); } catch (Exception _e) { @@ -205,19 +200,9 @@ sql.append("CREATE TABLE ").append(entityMetaData.getTableName()); sql.append(" ("); - // add cmp fields - sql.append(SQLUtil.getCreateTableColumnsClause( - entity.getJDBCCMPFields())); + // add fields + sql.append(SQLUtil.getCreateTableColumnsClause(entity.getFields())); - // add foriegn key fields - JDBCCMRFieldBridge[] cmrFields = entity.getJDBCCMRFields(); - for(int i=0; i<cmrFields.length; i++) { - if(cmrFields[i].hasForeignKey()) { - sql.append(", ").append(SQLUtil.getCreateTableColumnsClause( - cmrFields[i].getForeignKeyFields())); - } - } - // add a pk constraint if(entityMetaData.hasPrimaryKeyConstraint()) { JDBCFunctionMappingMetaData pkConstraint = @@ -228,7 +213,7 @@ } String[] args = new String[] { "pk_"+entityMetaData.getTableName(), - SQLUtil.getColumnNamesClause(entity.getJDBCPrimaryKeyFields())}; + SQLUtil.getColumnNamesClause(entity.getPrimaryKeyFields())}; sql.append(", ").append(pkConstraint.getFunctionSql(args)); } @@ -238,20 +223,17 @@ } private String getRelationCreateTableSQL(JDBCCMRFieldBridge cmrField) { + List fields = new ArrayList(); + fields.addAll(cmrField.getTableKeyFields()); + fields.addAll(cmrField.getRelatedCMRField().getTableKeyFields()); StringBuffer sql = new StringBuffer(); sql.append("CREATE TABLE ").append( cmrField.getRelationMetaData().getTableName()); sql.append(" ("); - // add cmr table key fields - sql.append(SQLUtil.getCreateTableColumnsClause( - cmrField.getTableKeyFields())); - - // add related cmr table key fields - sql.append(", "); - sql.append(SQLUtil.getCreateTableColumnsClause( - cmrField.getRelatedCMRField().getTableKeyFields())); + // add field declaration + sql.append(SQLUtil.getCreateTableColumnsClause(fields)); // add a pk constraint if(cmrField.getRelationMetaData().hasPrimaryKeyConstraint()) { @@ -263,11 +245,7 @@ } String[] args = new String[] { "pk_"+cmrField.getRelationMetaData().getTableName(), - SQLUtil.getColumnNamesClause(cmrField.getTableKeyFields()) + - ", " + - SQLUtil.getColumnNamesClause( - cmrField.getRelatedCMRField().getTableKeyFields())}; - + SQLUtil.getColumnNamesClause(fields)}; sql.append(", ").append(pkConstraint.getFunctionSql(args)); } sql.append(")"); @@ -285,7 +263,7 @@ cmrField.getFieldName(), cmrField.getTableKeyFields(), cmrField.getEntity().getTableName(), - cmrField.getEntity().getJDBCPrimaryKeyFields()); + cmrField.getEntity().getPrimaryKeyFields()); } else if(cmrField.hasForeignKey()) { addForeignKeyConstraint( @@ -294,12 +272,10 @@ cmrField.getFieldName(), cmrField.getForeignKeyFields(), cmrField.getRelatedEntity().getTableName(), - cmrField.getRelatedEntity().getJDBCPrimaryKeyFields()); + cmrField.getRelatedEntity().getPrimaryKeyFields()); } - } - else if (log.isDebugEnabled()) - { - log.debug("Foreign key constaint not added as requested: " + + } else { + log.debug("Foreign key constaint not added as requested: " + "relationshipRolename=" + cmrField.getMetaData().getRelationshipRoleName()); } @@ -310,9 +286,9 @@ DataSource dataSource, String tableName, String cmrFieldName, - JDBCCMPFieldBridge[] fields, + List fields, String referencesTableName, - JDBCCMPFieldBridge[] referencesFields) { + List referencesFields) { // can only alter tables we created Set createdTables = (Set)manager.getApplicationData(CREATED_TABLES_KEY); @@ -326,30 +302,30 @@ throw new IllegalStateException("Foreign key constriant is not " + "allowed for this type of datastore"); } + String a = SQLUtil.getColumnNamesClause(fields); + String b = SQLUtil.getColumnNamesClause(referencesFields); String[] args = new String[] { tableName, "fk_"+tableName+"_"+cmrFieldName, - SQLUtil.getColumnNamesClause(fields), + a, referencesTableName, - SQLUtil.getColumnNamesClause(referencesFields)}; + b}; String sql = fkConstraint.getFunctionSql(args); Connection con = null; Statement statement = null; - boolean debug = log.isDebugEnabled(); try { // since we use the pools, we have to do this within a transaction manager.getContainer().getTransactionManager().begin(); // get the connection con = dataSource.getConnection(); - + // create the statement statement = con.createStatement(); - + // execute sql - if (debug) - log.debug("Executing SQL: " + sql); + log.debug("Executing SQL: " + sql); statement.executeUpdate(sql); // commit the transaction @@ -358,8 +334,7 @@ // success log.info("Added foreign key constriant to table '" + tableName); } catch (Exception e) { - if (debug) - log.debug("Could not add foreign key constriant to table " + + log.debug("Could not add foreign key constriant to table " + tableName, e); try { manager.getContainer().getTransactionManager().rollback ();
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development