You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/11/11 19:43:51 UTC
[1/2] cayenne git commit: Redundant relationship created when syncing
ObjEntity with many-to-many relationship and DbEntity
Repository: cayenne
Updated Branches:
refs/heads/master 94dfec08d -> b67f8f1fc
Redundant relationship created when syncing ObjEntity with many-to-many relationship and DbEntity
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/f5de1f2a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/f5de1f2a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/f5de1f2a
Branch: refs/heads/master
Commit: f5de1f2a07835d153ea5579ea564bb1eab0f576a
Parents: 2b7a21b
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Nov 8 17:19:18 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Nov 8 17:19:18 2016 +0300
----------------------------------------------------------------------
.../dbsync/merge/EntityMergeSupport.java | 61 +++++++++++++++++++-
1 file changed, 59 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/f5de1f2a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
index c7b3b2a..a61de0c 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
@@ -31,6 +31,7 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.util.DeleteRuleUpdater;
import org.apache.cayenne.util.EntityMergeListener;
import org.apache.commons.logging.Log;
@@ -388,8 +389,64 @@ public class EntityMergeSupport {
return true;
}
- protected boolean shouldAddToObjEntity(ObjEntity entity, DbRelationship dbRelationship) {
- return dbRelationship.getName() != null && entity.getRelationshipForDbRelationship(dbRelationship) == null;
+ private boolean shouldAddToObjEntity(ObjEntity entity, DbRelationship dbRelationship) {
+ if(dbRelationship.getName() == null) {
+ return false;
+ }
+
+ for(Relationship relationship : entity.getRelationships()) {
+ ObjRelationship objRelationship = (ObjRelationship)relationship;
+ if(objRelationshipHasDbRelationship(objRelationship, dbRelationship)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * @return true if objRelationship includes given dbRelationship
+ */
+ private boolean objRelationshipHasDbRelationship(ObjRelationship objRelationship, DbRelationship dbRelationship) {
+ for(DbRelationship relationship : objRelationship.getDbRelationships()) {
+
+ if(relationship.getSourceEntityName().equals(dbRelationship.getSourceEntityName())
+ && relationship.getTargetEntityName().equals(dbRelationship.getTargetEntityName())
+ && isSameAttributes(relationship.getSourceAttributes(), dbRelationship.getSourceAttributes())
+ && isSameAttributes(relationship.getTargetAttributes(), dbRelationship.getTargetAttributes())) {
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+
+ /**
+ * @param collection1 first collection to compare
+ * @param collection2 second collection to compare
+ * @return true if collections have same size and attributes in them have same names
+ */
+ private boolean isSameAttributes(Collection<DbAttribute> collection1, Collection<DbAttribute> collection2) {
+ if(collection1.size() != collection2.size()) {
+ return false;
+ }
+
+ if(collection1.isEmpty()) {
+ return true;
+ }
+
+ Iterator<DbAttribute> iterator1 = collection1.iterator();
+ Iterator<DbAttribute> iterator2 = collection2.iterator();
+ for(int i=0; i<collection1.size(); i++) {
+ DbAttribute attr1 = iterator1.next();
+ DbAttribute attr2 = iterator2.next();
+ if(!attr1.getName().equals(attr2.getName())) {
+ return false;
+ }
+ }
+
+ return true;
}
private Collection<DbRelationship> getIncomingRelationships(DbEntity entity) {
[2/2] cayenne git commit: Merge branch '121'
Posted by sk...@apache.org.
Merge branch '121'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/b67f8f1f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/b67f8f1f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/b67f8f1f
Branch: refs/heads/master
Commit: b67f8f1fca29ec520bff5ee883218b3286e30d04
Parents: 94dfec0 f5de1f2
Author: Savva Kolbachev <s....@gmail.com>
Authored: Fri Nov 11 22:08:44 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Fri Nov 11 22:08:44 2016 +0300
----------------------------------------------------------------------
.../dbsync/merge/EntityMergeSupport.java | 61 +++++++++++++++++++-
1 file changed, 59 insertions(+), 2 deletions(-)
----------------------------------------------------------------------