Repository: cayenne
Updated Branches:
  refs/heads/master 0a9430f34 -> 48f7e411c


CAY-2183 Newly created DbRelationship is unexpectedly renamed by the Modeler
plus some code cleanup


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

Branch: refs/heads/master
Commit: 48f7e411cc013cf591e3564157f53d95d2decdfa
Parents: 0a9430f
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Fri Jan 20 17:35:50 2017 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Fri Jan 20 17:35:50 2017 +0300

----------------------------------------------------------------------
 docs/doc/src/main/resources/RELEASE-NOTES.txt   |  1 +
 .../modeler/dialog/DbJoinTableModel.java        | 10 +--
 .../dialog/ResolveDbRelationshipDialog.java     | 82 ++++++++------------
 3 files changed, 37 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/48f7e411/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 713c286..bdd5abc 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -31,6 +31,7 @@ Bug Fixes:
 CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join 
conditions
 CAY-2174 Change FK attribute name cause ObjAttribute appear after Reverse 
Engineering
 CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
+CAY-2183 Newly created DbRelationship is unexpectedly renamed by the Modeler
 
 ----------------------------------
 Release: 4.0.M4

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48f7e411/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
index e95e0a6..5638456 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/DbJoinTableModel.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.modeler.util.CayenneTableModel;
  *  don't take place until commit() is called. Creation of the new
  *  DbAttributes is not allowed - user should choose from the existing ones.
 */
-public class DbJoinTableModel extends CayenneTableModel {
+public class DbJoinTableModel extends CayenneTableModel<DbJoin> {
 
     // Columns
     static final int SOURCE = 0;
@@ -49,10 +49,10 @@ public class DbJoinTableModel extends CayenneTableModel {
         ProjectController mediator,
         Object src) {
 
-        super(mediator, src, new ArrayList(relationship.getJoins()));
+        super(mediator, src, new ArrayList<>(relationship.getJoins()));
         this.relationship = relationship;
-        this.source = (DbEntity) relationship.getSourceEntity();
-        this.target = (DbEntity) relationship.getTargetEntity();
+        this.source = relationship.getSourceEntity();
+        this.target = relationship.getTargetEntity();
     }
 
     public DbJoinTableModel(
@@ -96,7 +96,7 @@ public class DbJoinTableModel extends CayenneTableModel {
 
     public DbJoin getJoin(int row) {
         return (row >= 0 && row < objectList.size())
-            ? (DbJoin) objectList.get(row)
+            ? objectList.get(row)
             : null;
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48f7e411/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
index 885c4c2..6c09638 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
@@ -178,9 +178,7 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
         TableColumn sourceColumn = table.getColumnModel().getColumn(
                 DbJoinTableModel.SOURCE);
         JComboBox comboBox = Application.getWidgetFactory().createComboBox(
-                ModelerUtil.getDbAttributeNames(getMediator(), (DbEntity) 
relationship
-                        .getSourceEntity()),
-                true);
+                ModelerUtil.getDbAttributeNames(getMediator(), 
relationship.getSourceEntity()), true);
 
         AutoCompletion.enable(comboBox);
         
sourceColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(
@@ -189,9 +187,7 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
         TableColumn targetColumn = table.getColumnModel().getColumn(
                 DbJoinTableModel.TARGET);
         comboBox = Application.getWidgetFactory().createComboBox(
-                ModelerUtil.getDbAttributeNames(getMediator(), (DbEntity) 
relationship
-                        .getTargetEntity()),
-                true);
+                ModelerUtil.getDbAttributeNames(getMediator(), 
relationship.getTargetEntity()), true);
         AutoCompletion.enable(comboBox);
 
         
targetColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(
@@ -272,28 +268,11 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
     private void save() {
         stopEditing();
 
-        // extract names...
-        String sourceEntityName = NameBuilder
-                .builder(relationship, relationship.getSourceEntity())
-                .baseName(name.getText().trim())
-                .name();
-
-        // check if reverse name is valid
         DbJoinTableModel model = (DbJoinTableModel) table.getModel();
         boolean updatingReverse = model.getObjectList().size() > 0;
 
         // handle name update
-        if (!Util.nullSafeEquals(sourceEntityName, relationship.getName())) {
-            String oldName = relationship.getName();
-
-            relationship.setName(sourceEntityName);
-
-            undo.addNameUndo(relationship, oldName, sourceEntityName);
-
-            getMediator().fireDbRelationshipEvent(
-                    new RelationshipEvent(this, relationship, relationship
-                            .getSourceEntity(), oldName));
-        }
+        handleNameUpdate(relationship, name.getText().trim());
 
         model.commit();
 
@@ -331,28 +310,10 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
                                     MapEvent.ADD));
                 }
             } else {
-
-                String targetEntityName = NameBuilder
-                        .builder(reverseRelationship, 
relationship.getTargetEntity())
-                        .baseName(reverseName.getText().trim())
-                        .name();
-
-                if (!Util.nullSafeEquals(targetEntityName, 
reverseRelationship.getName())) {
-
-                    String oldName = reverseRelationship.getName();
-                    reverseRelationship.setName(targetEntityName);
-                    undo.addNameUndo(reverseRelationship, oldName, 
targetEntityName);
-
-                    getMediator().fireDbRelationshipEvent(
-                            new RelationshipEvent(
-                                    this,
-                                    reverseRelationship,
-                                    reverseRelationship.getSourceEntity(),
-                                    oldName));
-                }
+                handleNameUpdate(reverseRelationship, 
reverseName.getText().trim());
             }
 
-            Collection reverseJoins = getReverseJoins();
+            Collection<DbJoin> reverseJoins = getReverseJoins();
             reverseRelationship.setJoins(reverseJoins);
 
             // check if joins map to a primary key of this entity
@@ -363,20 +324,39 @@ public class ResolveDbRelationshipDialog extends 
CayenneDialog {
 
         Application.getInstance().getUndoManager().addEdit(undo);
 
-        getMediator()
-                .fireDbRelationshipEvent(
-                        new RelationshipEvent(this, relationship, relationship
-                                .getSourceEntity()));
+        getMediator().fireDbRelationshipEvent(
+                new RelationshipEvent(this, relationship, 
relationship.getSourceEntity()));
+    }
+
+    private void handleNameUpdate(DbRelationship relationship, String 
userInputName) {
+        if(Util.nullSafeEquals(relationship.getName(), userInputName)) {
+            return;
+        }
+
+        String sourceEntityName = NameBuilder
+                .builder(relationship, relationship.getSourceEntity())
+                .baseName(userInputName)
+                .name();
+
+        if (Util.nullSafeEquals(sourceEntityName, relationship.getName())) {
+            return;
+        }
+        String oldName = relationship.getName();
+        relationship.setName(sourceEntityName);
+        undo.addNameUndo(relationship, oldName, sourceEntityName);
+
+        getMediator().fireDbRelationshipEvent(
+                new RelationshipEvent(this, relationship, 
relationship.getSourceEntity(), oldName));
     }
 
-    private Collection getReverseJoins() {
+    private Collection<DbJoin> getReverseJoins() {
         Collection<DbJoin> joins = relationship.getJoins();
 
         if ((joins == null) || (joins.size() == 0)) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         }
 
-        List reverseJoins = new ArrayList(joins.size());
+        List<DbJoin> reverseJoins = new ArrayList<>(joins.size());
 
         // Loop through the list of attribute pairs, create reverse pairs
         // and put them to the reverse list.

Reply via email to