User: dsundstrom
Date: 01/08/18 08:58:57
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc SQLUtil.java
Log:
Added helper methods for bean to bean compare and bean to parameter compare.
Revision Changes Path
1.3 +70 -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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SQLUtil.java 2001/08/03 17:15:46 1.2
+++ SQLUtil.java 2001/08/18 15:58:57 1.3
@@ -13,7 +13,7 @@
* SQLUtil helps with building sql statements.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class SQLUtil {
// =======================================================================
@@ -263,4 +263,73 @@
return buf.toString();
}
+ /**
+ * 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 getWhereClause(JDBCType pkType, String parent, JDBCType
fkType, String child) {
+ if(parent.length() > 0) {
+ parent += ".";
+ }
+ if(child.length() > 0) {
+ child += ".";
+ }
+
+ String[] pkColumnNames = pkType.getColumnNames();
+ String[] fkColumnNames = fkType.getColumnNames();
+ if(pkColumnNames.length != fkColumnNames.length) {
+ throw new IllegalArgumentException("PK and FK have different
number of columns");
+ }
+
+ StringBuffer buf = new StringBuffer();
+ for(int i=0; i<pkColumnNames.length; i++) {
+ if(i!=0) {
+ buf.append(" AND ");
+ }
+ buf.append(parent).append(pkColumnNames[i]);
+ buf.append("=");
+ buf.append(child).append(fkColumnNames[i]);
+ }
+ return buf.toString();
+ }
+
+ public static String getSelfCompareWhereClause(JDBCCMPFieldBridge[] fields,
String fromIdentifier, String toIdentifier) {
+
+ StringBuffer buf = new StringBuffer();
+ for(int i=0; i<fields.length; i++) {
+ if(i!=0) {
+ buf.append(" AND ");
+ }
+ buf.append(getSelfCompareWhereClause(fields[i].getJDBCType(),
fromIdentifier, toIdentifier));
+ }
+ return buf.toString();
+ }
+
+ public static String getSelfCompareWhereClause(JDBCType type, String
fromIdentifier, String toIdentifier) {
+ if(fromIdentifier.length() > 0) {
+ fromIdentifier += ".";
+ }
+ if(toIdentifier.length() > 0) {
+ toIdentifier += ".";
+ }
+
+ String[] columnNames = type.getColumnNames();
+
+ StringBuffer buf = new StringBuffer();
+ for(int i=0; i<columnNames.length; i++) {
+ if(i!=0) {
+ buf.append(" AND ");
+ }
+ buf.append(fromIdentifier).append(columnNames[i]);
+ buf.append(" = ");
+ buf.append(toIdentifier).append(columnNames[i]);
+ }
+ return buf.toString();
+ }
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development