User: dsundstrom
Date: 02/01/15 13:29:50
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc SQLUtil.java
Log:
Converted field arrays to Lists for easier handling.
Revision Changes Path
1.5 +184 -90 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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SQLUtil.java 2001/09/01 22:03:15 1.4
+++ SQLUtil.java 2002/01/15 21:29:50 1.5
@@ -7,44 +7,54 @@
package org.jboss.ejb.plugins.cmp.jdbc;
-import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCFieldBridge;
+
/**
* SQLUtil helps with building sql statements.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class SQLUtil {
// =======================================================================
// Create Table Columns Clause
- // columnName0 sqlType0 [, columnName1 sqlType0 [, columnName2 sqlType0
[...]]]
+ // columnName0 sqlType0
+ // [, columnName1 sqlType0
+ // [, columnName2 sqlType0 [...]]]
// =======================================================================
-
- /**
- * Returns columnName0 [, columnName1 [AND columnName2 [...]]]
- */
- public static String getCreateTableColumnsClause(JDBCCMPFieldBridge[] fields) {
+ public static String getCreateTableColumnsClause(List fields) {
StringBuffer buf = new StringBuffer();
- for(int i=0; i<fields.length; i++) {
- if(i!=0) {
+
+ List types = getJDBCTypes(fields);
+ for(Iterator iter = types.iterator(); iter.hasNext();) {
+ JDBCType type = (JDBCType)iter.next();
+ buf.append(getCreateTableColumnsClause(type));
+ if(iter.hasNext()) {
buf.append(", ");
}
- buf.append(getCreateTableColumnsClause(fields[i].getJDBCType()));
}
return buf.toString();
}
-
+
/**
- * Returns columnName0 sqlType0 [, columnName1 sqlType0 [, columnName2 sqlType0
[...]]]
- */
- public static String getCreateTableColumnsClause(JDBCCMPFieldBridge field) {
+ * Returns columnName0 sqlType0
+ * [, columnName1 sqlType0
+ * [, columnName2 sqlType0 [...]]]
+ */
+ public static String getCreateTableColumnsClause(JDBCFieldBridge field) {
return getCreateTableColumnsClause(field.getJDBCType());
}
/**
- * Returns columnName0 sqlType0 [, columnName1 sqlType0 [, columnName2 sqlType0
[...]]]
- */
+ * Returns columnName0 sqlType0
+ * [, columnName1 sqlType0
+ * [, columnName2 sqlType0 [...]]]
+ */
public static String getCreateTableColumnsClause(JDBCType type) {
String[] columnNames = type.getColumnNames();
String[] sqlTypes = type.getSQLTypes();
@@ -65,43 +75,52 @@
// =======================================================================
/**
- * Returns columnName0 [, columnName1 [AND columnName2 [...]]]
- */
- public static String getColumnNamesClause(JDBCCMPFieldBridge[] fields) {
+ * Returns columnName0 [, columnName1 [AND columnName2 [...]]]
+ */
+ public static String getColumnNamesClause(List fields) {
return getColumnNamesClause(fields, "");
}
/**
- * Returns columnName0 [, columnName1 [AND columnName2 [...]]]
- */
- public static String getColumnNamesClause(JDBCCMPFieldBridge[] fields, String
identifier) {
+ * Returns columnName0 [, columnName1 [AND columnName2 [...]]]
+ */
+ public static String getColumnNamesClause(List fields, String identifier) {
StringBuffer buf = new StringBuffer();
- for(int i=0; i<fields.length; i++) {
- if(i!=0) {
+
+ List types = getJDBCTypes(fields);
+ for(Iterator iter = types.iterator(); iter.hasNext();) {
+ JDBCType type = (JDBCType)iter.next();
+ buf.append(getColumnNamesClause(type, identifier));
+ if(iter.hasNext()) {
buf.append(", ");
}
- buf.append(getColumnNamesClause(fields[i].getJDBCType(), identifier));
}
return buf.toString();
}
-
+
/**
- * Returns columnName0 [, columnName1 [, columnName2 [...]]]
- */
- public static String getColumnNamesClause(JDBCCMPFieldBridge field) {
+ * Returns columnName0 [, columnName1 [, columnName2 [...]]]
+ */
+ public static String getColumnNamesClause(JDBCFieldBridge field) {
return getColumnNamesClause(field, "");
}
/**
- * Returns identifier.columnName0 [, identifier.columnName1 [,
identifier.columnName2 [...]]]
- */
- public static String getColumnNamesClause(JDBCCMPFieldBridge field, String
identifier) {
+ * Returns identifier.columnName0
+ * [, identifier.columnName1
+ * [, identifier.columnName2 [...]]]
+ */
+ public static String getColumnNamesClause(
+ JDBCFieldBridge field, String identifier) {
+
return getColumnNamesClause(field.getJDBCType(), identifier);
}
/**
- * Returns identifier.columnName0 [, identifier.columnName1 [,
identifier.columnName2 [...]]]
- */
+ * Returns identifier.columnName0
+ * [, identifier.columnName1
+ * [, identifier.columnName2 [...]]]
+ */
public static String getColumnNamesClause(JDBCType type, String identifier) {
if(identifier.length() > 0) {
identifier += ".";
@@ -125,29 +144,32 @@
// =======================================================================
/**
- * Returns columnName0=? [, columnName1=? [, columnName2=? [...]]]
- */
- public static String getSetClause(JDBCCMPFieldBridge[] fields) {
+ * Returns columnName0=? [, columnName1=? [, columnName2=? [...]]]
+ */
+ public static String getSetClause(List fields) {
StringBuffer buf = new StringBuffer();
- for(int i=0; i<fields.length; i++) {
- if(i!=0) {
+
+ List types = getJDBCTypes(fields);
+ for(Iterator iter = types.iterator(); iter.hasNext();) {
+ JDBCType type = (JDBCType)iter.next();
+ buf.append(getSetClause(type));
+ if(iter.hasNext()) {
buf.append(", ");
}
- buf.append(getSetClause(fields[i].getJDBCType()));
}
return buf.toString();
}
/**
- * Returns columnName0=? [, columnName1=? [, columnName2=? [...]]]
- */
- public static String getSetClause(JDBCCMPFieldBridge field) {
+ * Returns columnName0=? [, columnName1=? [, columnName2=? [...]]]
+ */
+ public static String getSetClause(JDBCFieldBridge field) {
return getSetClause(field.getJDBCType());
}
/**
- * Returns columnName0=? [, columnName1=? [, columnName2=? [...]]]
- */
+ * Returns columnName0=? [, columnName1=? [, columnName2=? [...]]]
+ */
public static String getSetClause(JDBCType type) {
String[] columnNames = type.getColumnNames();
@@ -167,29 +189,32 @@
// =======================================================================
/**
- * Returns ? [, ? [, ? [...]]]
- */
- public static String getValuesClause(JDBCCMPFieldBridge[] fields) {
+ * Returns ? [, ? [, ? [...]]]
+ */
+ public static String getValuesClause(List fields) {
StringBuffer buf = new StringBuffer();
- for(int i=0; i<fields.length; i++) {
- if(i!=0) {
+
+ List types = getJDBCTypes(fields);
+ for(Iterator iter = types.iterator(); iter.hasNext();) {
+ JDBCType type = (JDBCType)iter.next();
+ buf.append(getValuesClause(type));
+ if(iter.hasNext()) {
buf.append(", ");
}
- buf.append(getValuesClause(fields[i].getJDBCType()));
}
return buf.toString();
}
-
+
/**
- * Returns ? [, ? [, ? [...]]]
- */
- public static String getValuesClause(JDBCCMPFieldBridge field) {
+ * Returns ? [, ? [, ? [...]]]
+ */
+ public static String getValuesClause(JDBCFieldBridge field) {
return getValuesClause(field.getJDBCType());
}
/**
- * Returns ? [, ? [, ? [...]]]
- */
+ * Returns ? [, ? [, ? [...]]]
+ */
public static String getValuesClause(JDBCType type) {
int columnCount = type.getColumnNames().length;
@@ -209,43 +234,54 @@
// =======================================================================
/**
- * Returns columnName0=? [AND columnName1=? [AND columnName2=? [...]]]
- */
- public static String getWhereClause(JDBCCMPFieldBridge[] fields) {
+ * Returns columnName0=? [AND columnName1=? [AND columnName2=? [...]]]
+ */
+ public static String getWhereClause(List fields) {
return getWhereClause(fields, "");
}
/**
- * Returns identifier.columnName0=? [AND identifier.columnName1=? [AND
identifier.columnName2=? [...]]]
- */
- public static String getWhereClause(JDBCCMPFieldBridge[] fields, String
identifier) {
+ * Returns identifier.columnName0=?
+ * [AND identifier.columnName1=?
+ * [AND identifier.columnName2=? [...]]]
+ */
+ public static String getWhereClause(List fields, String identifier) {
StringBuffer buf = new StringBuffer();
- for(int i=0; i<fields.length; i++) {
- if(i!=0) {
+
+ List types = getJDBCTypes(fields);
+ for(Iterator iter = types.iterator(); iter.hasNext();) {
+ JDBCType type = (JDBCType)iter.next();
+ buf.append(getWhereClause(type, identifier));
+ if(iter.hasNext()) {
buf.append(" AND ");
}
- buf.append(getWhereClause(fields[i].getJDBCType(), identifier));
}
return buf.toString();
}
-
+
/**
- * Returns columnName0=? [AND columnName1=? [AND columnName2=? [...]]]
- */
- public static String getWhereClause(JDBCCMPFieldBridge field) {
+ * Returns columnName0=? [AND columnName1=? [AND columnName2=? [...]]]
+ */
+ public static String getWhereClause(JDBCFieldBridge field) {
return getWhereClause(field, "");
}
/**
- * Returns identifier.columnName0=? [AND identifier.columnName1=? [AND
identifier.columnName2=? [...]]]
- */
- public static String getWhereClause(JDBCCMPFieldBridge field, String identifier)
{
+ * Returns identifier.columnName0=?
+ * [AND identifier.columnName1=?
+ * [AND identifier.columnName2=? [...]]]
+ */
+ public static String getWhereClause(
+ JDBCFieldBridge field, String identifier) {
+
return getWhereClause(field.getJDBCType(), identifier);
}
/**
- * Returns identifier.columnName0=? [AND identifier.columnName1=? [AND
identifier.columnName2=? [...]]]
- */
+ * Returns identifier.columnName0=?
+ * [AND identifier.columnName1=?
+ * [AND identifier.columnName2=? [...]]]
+ */
public static String getWhereClause(JDBCType type, String identifier) {
if(identifier.length() > 0) {
identifier += ".";
@@ -264,16 +300,53 @@
}
/**
- * Returns parent.pkColumnName0=child.fkColumnName0 [AND
parent.pkColumnName1=child.fkColumnName1 [AND parent.pkColumnName2=child.fkColumnName2
[...]]]
- */
- public static String getWhereClause(JDBCCMPFieldBridge pkField, String parent,
JDBCCMPFieldBridge fkField, String child) {
- return getWhereClause(pkField.getJDBCType(), parent, fkField.getJDBCType(),
child);
+ * Returns parent.pkColumnName0=child.fkColumnName0
+ * [AND parent.pkColumnName1=child.fkColumnName1
+ * [AND parent.pkColumnName2=child.fkColumnName2 [...]]]
+ */
+ public static String getJoinClause(
+ JDBCFieldBridge pkField, String parent,
+ JDBCFieldBridge fkField, String child) {
+
+ return getJoinClause(
+ pkField.getJDBCType(), parent,
+ fkField.getJDBCType(), child);
}
+ public static String getJoinClause(
+ List pkFields, String parent, List fkFields, String child) {
+
+ if(pkFields.size() != fkFields.size()) {
+ throw new IllegalArgumentException(
+ "Error createing theta join clause:" +
+ " pkField.size()="+pkFields.size() +
+ " fkField.size()="+fkFields.size());
+ }
+
+ StringBuffer buf = new StringBuffer();
+
+ List pkTypes = getJDBCTypes(pkFields);
+ List fkTypes = getJDBCTypes(fkFields);
+ Iterator fkIter = fkTypes.iterator();
+ for(Iterator pkIter = pkTypes.iterator(); pkIter.hasNext();) {
+ JDBCType pkType = (JDBCType)pkIter.next();
+ JDBCType fkType = (JDBCType)fkIter.next();
+
+ buf.append(getJoinClause(pkType, parent, fkType, child));
+ if(pkIter.hasNext()) {
+ buf.append(" AND ");
+ }
+ }
+ return buf.toString();
+ }
+
/**
- * Returns parent.pkColumnName0=child.fkColumnName0 [AND
parent.pkColumnName1=child.fkColumnName1 [AND parent.pkColumnName2=child.fkColumnName2
[...]]]
- */
- public static String getWhereClause(JDBCType pkType, String parent, JDBCType
fkType, String child) {
+ * Returns parent.pkColumnName0=child.fkColumnName0
+ * [AND parent.pkColumnName1=child.fkColumnName1
+ * [AND parent.pkColumnName2=child.fkColumnName2 [...]]]
+ */
+ public static String getJoinClause(
+ JDBCType pkType, String parent, JDBCType fkType, String child) {
if(parent.length() > 0) {
parent += ".";
}
@@ -284,7 +357,8 @@
String[] pkColumnNames = pkType.getColumnNames();
String[] fkColumnNames = fkType.getColumnNames();
if(pkColumnNames.length != fkColumnNames.length) {
- throw new IllegalArgumentException("PK and FK have different number of
columns");
+ throw new IllegalArgumentException(
+ "PK and FK have different number of columns");
}
StringBuffer buf = new StringBuffer();
@@ -299,19 +373,26 @@
return buf.toString();
}
- public static String getSelfCompareWhereClause(JDBCCMPFieldBridge[] fields,
String fromIdentifier, String toIdentifier) {
+ public static String getSelfCompareWhereClause(
+ List fields, String fromIdentifier, String toIdentifier) {
StringBuffer buf = new StringBuffer();
- for(int i=0; i<fields.length; i++) {
- if(i!=0) {
+
+ List types = getJDBCTypes(fields);
+ for(Iterator iter = types.iterator(); iter.hasNext();) {
+ JDBCType type = (JDBCType)iter.next();
+ buf.append(getSelfCompareWhereClause(
+ type, fromIdentifier, toIdentifier));
+ if(iter.hasNext()) {
buf.append(" AND ");
}
- buf.append(getSelfCompareWhereClause(fields[i].getJDBCType(),
fromIdentifier, toIdentifier));
}
return buf.toString();
}
-
- public static String getSelfCompareWhereClause(JDBCType type, String
fromIdentifier, String toIdentifier) {
+
+ public static String getSelfCompareWhereClause(
+ JDBCType type, String fromIdentifier, String toIdentifier) {
+
if(fromIdentifier.length() > 0) {
fromIdentifier += ".";
}
@@ -332,4 +413,17 @@
}
return buf.toString();
}
+
+ private static List getJDBCTypes(List fields) {
+ ArrayList types = new ArrayList(fields.size());
+
+ for(Iterator iter = fields.iterator(); iter.hasNext();) {
+ JDBCFieldBridge field = (JDBCFieldBridge)iter.next();
+ JDBCType type = field.getJDBCType();
+ if(type != null && type.getColumnNames().length > 0) {
+ types.add(type);
+ }
+ }
+ return Collections.unmodifiableList(types);
+ }
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development