CAY-2047 | Relationship mapping with target inheritance

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/ea750528
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/ea750528
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/ea750528

Branch: refs/heads/master
Commit: ea750528a23acec15dfb7da4bf02a03e67edfdc0
Parents: c07db4b
Author: Savva Kolbachev <[email protected]>
Authored: Wed Jan 20 12:40:26 2016 +0300
Committer: Savva Kolbachev <[email protected]>
Committed: Wed Jan 20 12:40:26 2016 +0300

----------------------------------------------------------------------
 docs/doc/src/main/resources/RELEASE-NOTES.txt   |  1 +
 .../dialog/objentity/ObjRelationshipInfo.java   | 22 ++++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/ea750528/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt 
b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 9814b36..9f41f4d 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -54,6 +54,7 @@ CAY-2003 cdbimport doesn't work properly with several 
includeTable tags
 CAY-2015 Joint prefetches combined with DisjointById prefetches return null 
incorrectly
 CAY-2020 typo: correction to upper alpha range in Rot13PasswordEncoder
 CAY-2041 "cayenne.jdbc.max_connections" and "cayenne.jdbc.min_connections" 
command line options are ignored
+CAY-2047 Relationship mapping with target inheritance
 CAY-2049 Changing the Relationship name in ObjRelationship Inspector has no 
effect
 
 ----------------------------------

http://git-wip-us.apache.org/repos/asf/cayenne/blob/ea750528/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
----------------------------------------------------------------------
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 445f512..9edde13 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
@@ -50,10 +50,13 @@ import javax.swing.tree.TreePath;
 import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.Vector;
 
 public class ObjRelationshipInfo extends CayenneController implements 
TreeSelectionListener {
@@ -94,9 +97,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
         super(mediator);
         this.view = new ObjRelationshipInfoView(mediator);
         this.mediator = mediator;
-        ObjEntity target = getObjectTarget();
         getPathBrowser().addTreeSelectionListener(this);
-        setObjectTarget(target);
         
view.sourceEntityLabel.setText(relationship.getSourceEntity().getName());
         this.relationship = relationship;
         this.view.getRelationshipName().setText(relationship.getName());
@@ -109,6 +110,7 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
         this.objectTarget = (ObjEntity) relationship.getTargetEntity();
         if (objectTarget != null) {
             updateTargetCombo(objectTarget.getDbEntity());
+            view.targetCombo.setSelectedItem(objectTarget.getName());
         }
 
         // validate -
@@ -177,6 +179,20 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
                 setMapKey();
             }
         });
+        view.getTargetCombo().addItemListener(new ItemListener() {
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                if (e.getStateChange() == ItemEvent.SELECTED) {
+                    Object targetName = e.getItem();
+                    for (ObjEntity target : objectTargets) {
+                        if (Objects.equals(target.getName(), targetName)) {
+                            setObjectTarget(target);
+                            return;
+                        }
+                    }
+                }
+            }
+        });
     }
 
     void initFromModel() {
@@ -408,7 +424,6 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
             relPath.add((DbRelationship) selectedPath.getPathComponent(i));
         }
         setDbRelationships(relPath);
-        setObjectTarget(objEntities.size() == 0 ? null : 
objEntities.iterator().next());
 
         updateCollectionChoosers();
     }
@@ -416,7 +431,6 @@ public class ObjRelationshipInfo extends CayenneController 
implements TreeSelect
     public void setObjectTarget(ObjEntity objectTarget) {
         if (this.objectTarget != objectTarget) {
             this.objectTarget = objectTarget;
-            view.targetCombo.setSelectedItem(objectTarget);
 
             // init available map keys
             initMapKeys();

Reply via email to