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();
