You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2021/12/07 10:13:34 UTC

[cayenne] branch master updated (d1c063a -> 1f712fb)

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from d1c063a  Add new version to RELEASE-NOTES.txt
     new f65bf95  change relationship preservetion function
     new 8c7845e  Merge remote-tracking branch 'parent/pr/474' into asf-master
     new 1f712fb  CAY-2724 Duplicating relationship after editing its name

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 RELEASE-NOTES.txt                                  |  1 +
 .../dialog/objentity/ObjRelationshipInfo.java      | 10 +++----
 .../apache/cayenne/modeler/util/ProjectUtil.java   | 34 ++++++++++++----------
 3 files changed, 24 insertions(+), 21 deletions(-)

[cayenne] 03/03: CAY-2724 Duplicating relationship after editing its name

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 1f712fbdee9545b33be59ae29b8f9a9110932886
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Tue Dec 7 13:13:23 2021 +0300

    CAY-2724 Duplicating relationship after editing its name
---
 RELEASE-NOTES.txt                                                  | 1 +
 .../cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java      | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 87034ef..2f45843 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
 Changes/New Features:
 
 Bug Fixes:
+CAY-2724 Duplicating relationship after editing its name
 
 ----------------------------------
 Release: 4.2.B1
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index e2d670d..fb08f1b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -52,7 +52,12 @@ import org.apache.cayenne.modeler.dialog.DbRelationshipDialog;
 import org.apache.cayenne.modeler.event.RelationshipDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateRelationshipUndoableEdit;
 import org.apache.cayenne.modeler.undo.RelationshipUndoableEdit;
-import org.apache.cayenne.modeler.util.*;
+import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.modeler.util.Comparators;
+import org.apache.cayenne.modeler.util.EntityTreeModel;
+import org.apache.cayenne.modeler.util.EntityTreeRelationshipFilter;
+import org.apache.cayenne.modeler.util.MultiColumnBrowser;
+import org.apache.cayenne.modeler.util.ProjectUtil;
 import org.apache.cayenne.project.extension.info.ObjectInfo;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.Util;

[cayenne] 02/03: Merge remote-tracking branch 'parent/pr/474' into asf-master

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 8c7845e92fc37238cbcdf0d2e723ee97bde6b9b0
Merge: d1c063a f65bf95
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Tue Dec 7 13:05:28 2021 +0300

    Merge remote-tracking branch 'parent/pr/474' into asf-master

 .../dialog/objentity/ObjRelationshipInfo.java      | 15 ++++------
 .../apache/cayenne/modeler/util/ProjectUtil.java   | 34 ++++++++++++----------
 2 files changed, 23 insertions(+), 26 deletions(-)

[cayenne] 01/03: change relationship preservetion function

Posted by nt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit f65bf950b8e1f1d66a1710c04b8aba7cbf03d988
Author: Oleg Khodokevich <ol...@mail.ru>
AuthorDate: Mon Dec 6 19:06:15 2021 +0300

    change relationship preservetion function
---
 .../dialog/objentity/ObjRelationshipInfo.java      | 15 ++++------
 .../apache/cayenne/modeler/util/ProjectUtil.java   | 34 ++++++++++++----------
 2 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index e173c21..e2d670d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -52,11 +52,7 @@ import org.apache.cayenne.modeler.dialog.DbRelationshipDialog;
 import org.apache.cayenne.modeler.event.RelationshipDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateRelationshipUndoableEdit;
 import org.apache.cayenne.modeler.undo.RelationshipUndoableEdit;
-import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.modeler.util.Comparators;
-import org.apache.cayenne.modeler.util.EntityTreeModel;
-import org.apache.cayenne.modeler.util.EntityTreeRelationshipFilter;
-import org.apache.cayenne.modeler.util.MultiColumnBrowser;
+import org.apache.cayenne.modeler.util.*;
 import org.apache.cayenne.project.extension.info.ObjectInfo;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.Util;
@@ -280,10 +276,9 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
                 this.savedDbRelationships = new ArrayList<>(dbRelationships);
             }
         }
-
-        savePath();
-        relationship.getSourceEntity().addRelationship(relationship);
+        configureRelationship();
         if(isCreate) {
+            relationship.getSourceEntity().addRelationship(relationship);
             fireObjRelationshipEvent(this);
             Application.getInstance().getUndoManager().addEdit(
                     new CreateRelationshipUndoableEdit(relationship.getSourceEntity(), new ObjRelationship[]{relationship}));
@@ -541,7 +536,7 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
     /**
      * Stores current state of the model in the internal ObjRelationship.
      */
-    public boolean savePath() {
+    public boolean configureRelationship() {
         boolean hasChanges = false;
 
         boolean oldToMany = relationship.isToMany();
@@ -549,8 +544,8 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
 
         String relationshipName = getRelationshipName();
         if (!Util.nullSafeEquals(relationship.getName(), relationshipName)) {
+            ProjectUtil.setRelationshipName(relationship.getSourceEntity(), relationship, relationshipName);
             hasChanges = true;
-            relationship.setName(relationshipName);
         }
 
         if (savedDbRelationships.size() > 0) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java
index 23b20e4..d774415 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/ProjectUtil.java
@@ -208,16 +208,19 @@ public class ProjectUtil {
         }
     }
 
-    /** Changes the name of the attribute in all places in DataMap. */
+    /**
+     * Adds or changes the name of the attribute in all places in DataMap.
+     */
     public static void setRelationshipName(Entity entity, Relationship rel, String newName) {
-
-        if (rel == null || rel != entity.getRelationship(rel.getName())) {
-            return;
+        Relationship existingRelationship = entity.getRelationship(newName);
+        if (existingRelationship != null && existingRelationship != rel) {
+            throw new IllegalArgumentException("An attempt to override relationship '" + rel.getName() + "'");
+        }
+        if (rel != null) {
+            entity.removeRelationship(rel.getName());
+            rel.setName(newName);
+            entity.addRelationship(rel);
         }
-
-        entity.removeRelationship(rel.getName());
-        rel.setName(newName);
-        entity.addRelationship(rel);
     }
 
     /**
@@ -253,8 +256,7 @@ public class ProjectUtil {
                             att.setDbAttributePath(null);
                         }
                     }
-                }
-                else {
+                } else {
                     DbAttribute dbAtt = att.getDbAttribute();
                     if (dbAtt != null) {
                         if (dbEnt.getAttribute(dbAtt.getName()) != dbAtt) {
@@ -286,7 +288,7 @@ public class ProjectUtil {
      * objects, each <code>DbRelationship</code> object have  following <code>DbRelationship</code>
      * object as a target, last component is <code>DbAttribute</code>
      *
-     * @param currentEnt current db entity
+     * @param currentEnt      current db entity
      * @param dbAttributePath path to check
      * @return if path is correct return true
      */
@@ -433,7 +435,7 @@ public class ProjectUtil {
 
     public static Collection<ObjEntity> getCollectionOfChildren(ObjEntity objEntity) {
         Collection<ObjEntity> objEntities = new ArrayList<>();
-        for (ObjEntity child: objEntity.getDataMap().getObjEntities()) {
+        for (ObjEntity child : objEntity.getDataMap().getObjEntities()) {
             if (child.isSubentityOf(objEntity)) {
                 objEntities.add(child);
             }
@@ -460,17 +462,17 @@ public class ProjectUtil {
     }
 
     public static Collection<ObjAttribute> findObjAttributesForDbRelationship(ProjectController mediator,
-                                                                               DbRelationship relationship) {
+                                                                              DbRelationship relationship) {
         DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
         List<ObjAttribute> attributes = new ArrayList<>();
         if (domain != null) {
             for (DataMap map : domain.getDataMaps()) {
                 for (ObjEntity entity : map.getObjEntities()) {
                     for (ObjAttribute objAttribute : entity.getAttributes()) {
-                        if(objAttribute.isFlattened()) {
+                        if (objAttribute.isFlattened()) {
                             objAttribute.getDbPathIterator().forEachRemaining(entry -> {
-                                if(entry instanceof DbRelationship) {
-                                    if(entry.equals(relationship)) {
+                                if (entry instanceof DbRelationship) {
+                                    if (entry.equals(relationship)) {
                                         attributes.add(objAttribute);
                                     }
                                 }