Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornhauge2012-07-06 16:43:23 +0000
committernhauge2012-07-06 16:43:23 +0000
commit795bbce1f48aec0a3a5197cdedc6f754dec1fa0e (patch)
treeac18cac802cc8d3091e263cae40414b1d3d196ef /jpa/plugins/org.eclipse.jpt.jpa.gen/src
parent76c90f68e6b09e0a95579695f378ad1cd39daf0d (diff)
downloadwebtools.dali-795bbce1f48aec0a3a5197cdedc6f754dec1fa0e.tar.gz
webtools.dali-795bbce1f48aec0a3a5197cdedc6f754dec1fa0e.tar.xz
webtools.dali-795bbce1f48aec0a3a5197cdedc6f754dec1fa0e.zip
364197 - Fix custom M-M addition. Patch from Nan.
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.gen/src')
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.gen/src/org/eclipse/jpt/jpa/gen/internal/Association.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.gen/src/org/eclipse/jpt/jpa/gen/internal/Association.java b/jpa/plugins/org.eclipse.jpt.jpa.gen/src/org/eclipse/jpt/jpa/gen/internal/Association.java
index 889b4a7d6e..32fd857e7f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.gen/src/org/eclipse/jpt/jpa/gen/internal/Association.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.gen/src/org/eclipse/jpt/jpa/gen/internal/Association.java
@@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.gen.internal;
import java.util.List;
import org.eclipse.jpt.jpa.db.ForeignKey;
+import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.jpt.jpa.gen.internal.util.StringUtil;
/**
@@ -140,7 +141,7 @@ public class Association implements java.io.Serializable
if (pkCols.size() == referrerCols.size()) {
boolean isFkPk = true;
for (int i = 0, n = pkCols.size(); i < n; ++i) {
- if (!((ORMGenColumn)pkCols.get(i)).getName().equals(((ORMGenColumn)referrerCols.get(i)).getName())) {
+ if (!pkCols.get(i).getName().equals(referrerCols.get(i).getName())) {
isFkPk = false;
break;
}
@@ -329,20 +330,35 @@ public class Association implements java.io.Serializable
return false;
}
if (mJoinTableName != null) {
- if (!isValidTableAndColumns(mJoinTableName, mReferrerJoinColNames)
- || !isValidTableAndColumns(mJoinTableName, mReferencedJoinColNames)) {
+ if (!isValidJoinTableAndColumns(mJoinTableName, mReferrerJoinColNames)
+ || !isValidJoinTableAndColumns(mJoinTableName, mReferencedJoinColNames)) {
return false;
}
}
return true;
}
+
+ private boolean isValidJoinTableAndColumns(String joinTableName, List<String> joinColNames) {
+ Table table = mCustomizer.getSchema().getTableNamed(joinTableName);
+ if (table == null) {
+ return false;
+ }
+ for (int i = 0, n = joinColNames.size(); i < n; ++i) {
+ String colName = joinColNames.get(i);
+ if (table.getColumnNamed(colName) == null) {
+ return false;
+ }
+ }
+ return true;
+ }
+
private boolean isValidTableAndColumns(String tableName, List<String> columnNames) {
ORMGenTable table = mCustomizer.getTable(tableName);
if (table == null) {
return false;
}
for (int i = 0, n = columnNames.size(); i < n; ++i) {
- String colName = (String)columnNames.get(i);
+ String colName = columnNames.get(i);
if (table.getColumnByName(colName) == null) {
return false;
}
@@ -354,9 +370,12 @@ public class Association implements java.io.Serializable
this.mForeignKey = foreignKey;
}
+
public ForeignKey getForeignKey(){
return this.mForeignKey;
};
+
+ @Override
public boolean equals(Object obj) {
if( this == obj )
return true;
@@ -382,6 +401,8 @@ public class Association implements java.io.Serializable
}
return false;
}
+
+ @Override
public String toString(){
return mReferrerTableName + " " + mCardinality + " " + mReferencedTableName ;
}

Back to the top