User: dsundstrom
Date: 02/04/12 14:36:27
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc
JDBCStartCommand.java SQLUtil.java
Log:
Limited constrint name length to DataBaseMetaData.getMaxTableNameLength().
I'm not sure if the is the right choice but the metadata is very limited.
Revision Changes Path
1.27 +29 -12
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.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- JDBCStartCommand.java 12 Apr 2002 20:47:09 -0000 1.26
+++ JDBCStartCommand.java 12 Apr 2002 21:36:27 -0000 1.27
@@ -43,7 +43,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.26 $
+ * @version $Revision: 1.27 $
*/
public class JDBCStartCommand {
@@ -80,10 +80,11 @@
// Create table if necessary
if(!entity.getTableExists()) {
if(entityMetaData.getCreateTable()) {
+ DataSource dataSource = entity.getDataSource();
createTable(
- entity.getDataSource(),
+ dataSource,
entity.getTableName(),
- getEntityCreateTableSQL());
+ getEntityCreateTableSQL(dataSource));
} else {
log.debug("Table not create as requested: " +
entity.getTableName());
@@ -106,10 +107,11 @@
!relationMetaData.getTableExists()) {
if(relationMetaData.getCreateTable()) {
+ DataSource dataSource = relationMetaData.getDataSource();
createTable(
- relationMetaData.getDataSource(),
+ dataSource,
cmrField.getTableName(),
- getRelationCreateTableSQL(cmrField));
+ getRelationCreateTableSQL(cmrField, dataSource));
} else {
log.debug("Relation table not create as requested: " +
cmrField.getTableName());
@@ -232,7 +234,8 @@
}
}
- private String getEntityCreateTableSQL() {
+ private String getEntityCreateTableSQL(DataSource dataSource)
+ throws DeploymentException {
StringBuffer sql = new StringBuffer();
sql.append("CREATE TABLE ").append(entity.getTableName());
@@ -247,10 +250,14 @@
manager.getMetaData().getTypeMapping().getPkConstraintTemplate();
if(pkConstraint == null) {
throw new IllegalStateException("Primary key constriant is " +
- "not allowed for this type of datastore");
+ "not allowed for this type of data source");
}
+
+ String name =
+ "pk_" + entity.getMetaData().getDefaultTableName();
+ name = SQLUtil.fixConstraintName(name, dataSource);
String[] args = new String[] {
- "pk_"+entity.getTableName(),
+ name,
SQLUtil.getColumnNamesClause(entity.getPrimaryKeyFields())};
sql.append(", ").append(pkConstraint.getFunctionSql(args));
}
@@ -260,7 +267,10 @@
return sql.toString();
}
- private String getRelationCreateTableSQL(JDBCCMRFieldBridge cmrField) {
+ private String getRelationCreateTableSQL(
+ JDBCCMRFieldBridge cmrField,
+ DataSource dataSource) throws DeploymentException {
+
List fields = new ArrayList();
fields.addAll(cmrField.getTableKeyFields());
fields.addAll(cmrField.getRelatedCMRField().getTableKeyFields());
@@ -279,10 +289,14 @@
manager.getMetaData().getTypeMapping().getPkConstraintTemplate();
if(pkConstraint == null) {
throw new IllegalStateException("Primary key constriant is " +
- "not allowed for this type of datastore");
+ "not allowed for this type of data store");
}
+
+ String name =
+ "pk_" + cmrField.getRelationMetaData().getDefaultTableName();
+ name = SQLUtil.fixConstraintName(name, dataSource);
String[] args = new String[] {
- "pk_"+cmrField.getTableName(),
+ name,
SQLUtil.getColumnNamesClause(fields)};
sql.append(", ").append(pkConstraint.getFunctionSql(args));
}
@@ -342,9 +356,12 @@
}
String a = SQLUtil.getColumnNamesClause(fields);
String b = SQLUtil.getColumnNamesClause(referencesFields);
+
+
String[] args = new String[] {
tableName,
- "fk_"+tableName+"_"+cmrFieldName,
+ SQLUtil.fixConstraintName(
+ "fk_"+tableName+"_"+cmrFieldName, dataSource),
a,
referencesTableName,
b};
1.10 +7 -1 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java
Index: SQLUtil.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SQLUtil.java 12 Apr 2002 20:00:46 -0000 1.9
+++ SQLUtil.java 12 Apr 2002 21:36:27 -0000 1.10
@@ -27,7 +27,7 @@
* SQLUtil helps with building sql statements.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.9 $
+ * @version $Revision: 1.10 $
*/
public class SQLUtil {
public static String fixTableName(String tableName, DataSource dataSource)
@@ -68,6 +68,12 @@
} finally {
JDBCUtil.safeClose(con);
}
+ }
+
+ public static String fixConstraintName(String name, DataSource dataSource)
+ throws DeploymentException {
+
+ return fixTableName(name, dataSource);
}
// =======================================================================
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development