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:37:48 UTC
[cayenne] branch STABLE-4.1 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 STABLE-4.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/STABLE-4.1 by this push:
new 16a6685 CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
16a6685 is described below
commit 16a668508564133a67114834b36d254036a7b511
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Fri Apr 5 15:36:31 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 | 35 ++++++++++------------
2 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 94df294..96ea851 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -13,6 +13,7 @@ Date:
----------------------------------
Bug Fixes:
CAY-2550 Modeler: ObjAttribute inspector modifies wrong columns in attribute table
+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..8dbce2c 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.
*/
@@ -380,7 +378,7 @@ public class ProjectUtil {
Entity parent = attribute.getEntity();
if (parent == null) {
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
}
Collection<DbRelationship> parentRelationships = (Collection<DbRelationship>) parent
@@ -406,12 +404,12 @@ public class ProjectUtil {
Entity parent = attribute.getEntity();
if (parent == null) {
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
}
DataMap map = parent.getDataMap();
if (map == null) {
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
}
Collection<DbRelationship> relationships = new ArrayList<DbRelationship>();
@@ -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);
+ }
}
- }
+ });
}
}
}