You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ab...@apache.org on 2019/04/05 12:27:20 UTC

[cayenne] branch master updated: CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship

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

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


The following commit(s) were added to refs/heads/master by this push:
     new cfaedd0  CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
cfaedd0 is described below

commit cfaedd0f88c5f69647fadd664397437c92d019cd
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Fri Apr 5 15:25:01 2019 +0300

    CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
---
 RELEASE-NOTES.txt                                  |  1 +
 .../apache/cayenne/modeler/util/ProjectUtil.java   | 29 ++++++++++------------
 2 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 701329d..b1eee3a0 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -39,6 +39,7 @@ CAY-2535 Modeler: Impossible to import stored procedure apart from db tables
 CAY-2537 Modeler: Schema Generation Complete popup window is hidden
 CAY-2544 Possible name clash of ivar and property name in generated class
 CAY-2547 CayenneDataObject serialization issue
+CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
 
 ----------------------------------
 Release: 4.1.B1
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 a201a75..50154d9 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
@@ -19,6 +19,11 @@
 
 package org.apache.cayenne.modeler.util;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.Attribute;
@@ -37,18 +42,11 @@ import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
 import org.apache.cayenne.map.Procedure;
 import org.apache.cayenne.map.ProcedureParameter;
-import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.util.Util;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Pattern;
-
 /**
  * Provides utility methods to perform various manipulations with project objects.
  */
@@ -465,19 +463,18 @@ public class ProjectUtil {
                                                                                DbRelationship relationship) {
         DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
         List<ObjAttribute> attributes = new ArrayList<>();
-        String[] dbAttrPathByDot;
         if (domain != null) {
             for (DataMap map : domain.getDataMaps()) {
                 for (ObjEntity entity : map.getObjEntities()) {
                     for (ObjAttribute objAttribute : entity.getAttributes()) {
-                        if(objAttribute.getDbAttributePath() != null) {
-                            dbAttrPathByDot = objAttribute.getDbAttributePath()
-                                    .split(Pattern.quote("."));
-                            for (String partOfPath : dbAttrPathByDot) {
-                                if (partOfPath.equals(relationship.getName())) {
-                                    attributes.add(objAttribute);
+                        if(objAttribute.isFlattened()) {
+                            objAttribute.getDbPathIterator().forEachRemaining(entry -> {
+                                if(entry instanceof DbRelationship) {
+                                    if(entry.equals(relationship)) {
+                                        attributes.add(objAttribute);
+                                    }
                                 }
-                            }
+                            });
                         }
                     }
                 }