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