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.