User: dsundstrom
Date: 01/12/30 11:11:38
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc
JDBCStartCommand.java
Log:
Added support for primary key and foreign key templates.
Revision Changes Path
1.13 +50 -3
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.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- JDBCStartCommand.java 2001/12/27 17:34:33 1.12
+++ JDBCStartCommand.java 2001/12/30 19:11:37 1.13
@@ -24,6 +24,7 @@
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationMetaData;
+import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCFunctionMappingMetaData;
import org.jboss.logging.Logger;
/**
@@ -35,7 +36,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.12 $
+ * @version $Revision: 1.13 $
*/
public class JDBCStartCommand {
@@ -210,12 +211,24 @@
// add a pk constraint
if(entityMetaData.hasPrimaryKeyConstraint()) {
+/*
sql.append(", CONSTRAINT pk").append(entityMetaData.getTableName());
sql.append(" PRIMARY KEY (");
sql.append(SQLUtil.getColumnNamesClause(
entity.getJDBCPrimaryKeyFields()));
sql.append(")");
+*/
+ JDBCFunctionMappingMetaData pkConstraint =
+ manager.getMetaData().getTypeMapping().getPkConstraintTemplate();
+ if(pkConstraint == null) {
+ throw new IllegalStateException("Primary key constriant is " +
+ "not allowed for this type of datastore");
+ }
+ String[] args = new String[] {
+ "pk_"+entityMetaData.getTableName(),
+ SQLUtil.getColumnNamesClause(entity.getJDBCPrimaryKeyFields())};
+ sql.append(", ").append(pkConstraint.getFunctionSql(args));
}
sql.append(")");
@@ -241,6 +254,7 @@
// add a pk constraint
if(cmrField.getRelationMetaData().hasPrimaryKeyConstraint()) {
+/*
sql.append(", CONSTRAINT pk").append(
cmrField.getRelationMetaData().getTableName());
@@ -251,6 +265,21 @@
sql.append(SQLUtil.getColumnNamesClause(
cmrField.getRelatedCMRField().getTableKeyFields()));
sql.append(")");
+*/
+ JDBCFunctionMappingMetaData pkConstraint =
+ manager.getMetaData().getTypeMapping().getPkConstraintTemplate();
+ if(pkConstraint == null) {
+ throw new IllegalStateException("Primary key constriant is " +
+ "not allowed for this type of datastore");
+ }
+ String[] args = new String[] {
+ "pk_"+cmrField.getRelationMetaData().getTableName(),
+ SQLUtil.getColumnNamesClause(cmrField.getTableKeyFields()) +
+ ", " +
+ SQLUtil.getColumnNamesClause(
+ cmrField.getRelatedCMRField().getTableKeyFields())};
+
+ sql.append(", ").append(pkConstraint.getFunctionSql(args));
}
sql.append(")");
@@ -264,6 +293,7 @@
addForeignKeyConstraint(
cmrField.getRelationMetaData().getDataSource(),
cmrField.getRelationMetaData().getTableName(),
+ cmrField.getFieldName(),
cmrField.getTableKeyFields(),
cmrField.getEntity().getTableName(),
cmrField.getEntity().getJDBCPrimaryKeyFields());
@@ -272,6 +302,7 @@
addForeignKeyConstraint(
cmrField.getEntity().getDataSource(),
cmrField.getEntity().getTableName(),
+ cmrField.getFieldName(),
cmrField.getForeignKeyFields(),
cmrField.getRelatedEntity().getTableName(),
cmrField.getRelatedEntity().getJDBCPrimaryKeyFields());
@@ -287,6 +318,7 @@
private void addForeignKeyConstraint(
DataSource dataSource,
String tableName,
+ String cmrFieldName,
JDBCCMPFieldBridge[] fields,
String referencesTableName,
JDBCCMPFieldBridge[] referencesFields) {
@@ -297,6 +329,21 @@
return;
}
+ JDBCFunctionMappingMetaData fkConstraint =
+ manager.getMetaData().getTypeMapping().getFkConstraintTemplate();
+ if(fkConstraint == null) {
+ throw new IllegalStateException("Foreign key constriant is not " +
+ "allowed for this type of datastore");
+ }
+ String[] args = new String[] {
+ tableName,
+ "fk_"+tableName+"_"+cmrFieldName,
+ SQLUtil.getColumnNamesClause(fields),
+ referencesTableName,
+ SQLUtil.getColumnNamesClause(referencesFields)};
+ String sql = fkConstraint.getFunctionSql(args);
+
+/*
StringBuffer sql = new StringBuffer(100);
sql.append("ALTER TABLE ").append(tableName);
@@ -311,7 +358,7 @@
sql.append("(");
sql.append(SQLUtil.getColumnNamesClause(referencesFields));
sql.append(")");
-
+*/
Connection con = null;
Statement statement = null;
try {
@@ -326,7 +373,7 @@
// execute sql
log.debug("Executing SQL: " + sql);
- statement.executeUpdate(sql.toString());
+ statement.executeUpdate(sql);
// commit the transaction
manager.getContainer().getTransactionManager().commit();
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development