You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/04/18 11:52:36 UTC
[1/2] cayenne git commit: CAY-2427
Repository: cayenne
Updated Branches:
refs/heads/master faa8a2b89 -> cacea3671
CAY-2427
Skip adding DbEntitySyncUndoableEdit if no changes on DbEntitySyncAction.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/115bc003
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/115bc003
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/115bc003
Branch: refs/heads/master
Commit: 115bc003740c6bfa63f9cc5bd2c91c4a42059d13
Parents: 17063b8
Author: kkomyak <co...@gmail.com>
Authored: Thu Apr 12 09:20:03 2018 +0300
Committer: kkomyak <co...@gmail.com>
Committed: Sat Apr 14 09:48:55 2018 +0300
----------------------------------------------------------------------
RELEASE-NOTES.txt | 1 +
.../modeler/action/DbEntitySyncAction.java | 54 +++++++++++---------
2 files changed, 31 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/115bc003/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index a619bcc..abc5802 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -52,6 +52,7 @@ CAY-2411 Wrong resolution of ExtendedType with ValueObjectType for inherited cla
CAY-2418 Modeler: unable to edit entity selected via Search
CAY-2419 Modeler: Not changing highlight on selecting search results within one entity
CAY-2420 Modeler: search is not performed for Stored Procedures
+CAY-2427 Modeler: Undo throws exeption
----------------------------------
Release: 4.1.M1
http://git-wip-us.apache.org/repos/asf/cayenne/blob/115bc003/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
index b774233..8a08180 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.modeler.action;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.dbsync.merge.context.EntityMergeSupport;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
@@ -33,8 +34,8 @@ import org.apache.cayenne.modeler.dialog.objentity.EntitySyncController;
import org.apache.cayenne.modeler.undo.DbEntitySyncUndoableEdit;
import org.apache.cayenne.modeler.util.CayenneAction;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.KeyStroke;
+import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.Collection;
@@ -50,7 +51,7 @@ public class DbEntitySyncAction extends CayenneAction {
return "Sync Dependent ObjEntities with DbEntity";
}
- public DbEntitySyncAction(Application application) {
+ public DbEntitySyncAction(final Application application) {
super(getActionName(), application);
}
@@ -68,23 +69,22 @@ public class DbEntitySyncAction extends CayenneAction {
/**
* @see org.apache.cayenne.modeler.util.CayenneAction#performAction(ActionEvent)
*/
- public void performAction(ActionEvent e) {
+ public void performAction(final ActionEvent e) {
syncDbEntity();
}
protected void syncDbEntity() {
- ProjectController mediator = getProjectController();
-
- DbEntity dbEntity = mediator.getCurrentDbEntity();
+ final ProjectController mediator = getProjectController();
+ final DbEntity dbEntity = mediator.getCurrentDbEntity();
if (dbEntity != null) {
- Collection<ObjEntity> entities = dbEntity.getDataMap().getMappedEntities(dbEntity);
+ final Collection<ObjEntity> entities = dbEntity.getDataMap().getMappedEntities(dbEntity);
if (entities.isEmpty()) {
return;
}
- EntityMergeSupport merger = new EntitySyncController(Application.getInstance().getFrameController(), dbEntity)
+ final EntityMergeSupport merger = new EntitySyncController(Application.getInstance().getFrameController(), dbEntity)
.createMerger();
if (merger == null) {
@@ -93,34 +93,40 @@ public class DbEntitySyncAction extends CayenneAction {
merger.setNameGenerator(new PreserveRelationshipNameGenerator());
- DbEntitySyncUndoableEdit undoableEdit = new DbEntitySyncUndoableEdit((DataChannelDescriptor) mediator
+ final DbEntitySyncUndoableEdit undoableEdit = new DbEntitySyncUndoableEdit((DataChannelDescriptor) mediator
.getProject().getRootNode(), mediator.getCurrentDataMap());
// filter out inherited entities, as we need to add attributes only to the roots
filterInheritedEntities(entities);
- for(ObjEntity entity : entities) {
+ boolean hasChanges = false;
+ for (final ObjEntity entity : entities) {
- DbEntitySyncUndoableEdit.EntitySyncUndoableListener listener = undoableEdit.new EntitySyncUndoableListener(
+ final DbEntitySyncUndoableEdit.EntitySyncUndoableListener listener = undoableEdit.new EntitySyncUndoableListener(
entity);
merger.addEntityMergeListener(listener);
+ final Collection<DbAttribute> meaningfulFKs = merger.getMeaningfulFKs(entity);
+
// TODO: addition or removal of model objects should be reflected in listener callbacks...
// we should not be trying to introspect the merger
- if (merger.isRemovingMeaningfulFKs()) {
- undoableEdit.addEdit(undoableEdit.new MeaningfulFKsUndoableEdit(entity, merger
- .getMeaningfulFKs(entity)));
+ if (merger.isRemovingMeaningfulFKs() && !meaningfulFKs.isEmpty()) {
+ undoableEdit.addEdit(undoableEdit.new MeaningfulFKsUndoableEdit(entity, meaningfulFKs));
+ hasChanges = true;
}
if (merger.synchronizeWithDbEntity(entity)) {
mediator.fireObjEntityEvent(new EntityEvent(this, entity, MapEvent.CHANGE));
+ hasChanges = true;
}
merger.removeEntityMergeListener(listener);
}
- application.getUndoManager().addEdit(undoableEdit);
+ if (hasChanges) {
+ application.getUndoManager().addEdit(undoableEdit);
+ }
}
}
@@ -128,11 +134,11 @@ public class DbEntitySyncAction extends CayenneAction {
* This method works only for case when all inherited entities bound to same DbEntity
* if this will ever change some additional checks should be performed.
*/
- private void filterInheritedEntities(Collection<ObjEntity> entities) {
+ private void filterInheritedEntities(final Collection<ObjEntity> entities) {
// entities.removeIf(c -> c.getSuperEntity() != null);
- Iterator<ObjEntity> it = entities.iterator();
- while(it.hasNext()) {
- if(it.next().getSuperEntity() != null) {
+ final Iterator<ObjEntity> it = entities.iterator();
+ while (it.hasNext()) {
+ if (it.next().getSuperEntity() != null) {
it.remove();
}
}
@@ -141,13 +147,13 @@ public class DbEntitySyncAction extends CayenneAction {
static class PreserveRelationshipNameGenerator extends DefaultObjectNameGenerator {
@Override
- public String relationshipName(DbRelationship... relationshipChain) {
- if(relationshipChain.length == 0) {
+ public String relationshipName(final DbRelationship... relationshipChain) {
+ if (relationshipChain.length == 0) {
return super.relationshipName(relationshipChain);
}
- DbRelationship last = relationshipChain[relationshipChain.length - 1];
+ final DbRelationship last = relationshipChain[relationshipChain.length - 1];
// must be in sync with DefaultBaseNameVisitor.visitDbRelationship
- if(last.getName().startsWith("untitledRel")) {
+ if (last.getName().startsWith("untitledRel")) {
return super.relationshipName(relationshipChain);
}
[2/2] cayenne git commit: Merge PR #288
Posted by nt...@apache.org.
Merge PR #288
# Conflicts:
# RELEASE-NOTES.txt
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/cacea367
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/cacea367
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/cacea367
Branch: refs/heads/master
Commit: cacea3671977c4eb72e4c2ea80641b7ab48721de
Parents: faa8a2b 115bc00
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Apr 18 14:52:17 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Apr 18 14:52:17 2018 +0300
----------------------------------------------------------------------
RELEASE-NOTES.txt | 1 +
.../modeler/action/DbEntitySyncAction.java | 54 +++++++++++---------
2 files changed, 31 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/cacea367/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --cc RELEASE-NOTES.txt
index 7cb5cb8,abc5802..424ddbe
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@@ -53,7 -52,7 +53,8 @@@ CAY-2411 Wrong resolution of ExtendedTy
CAY-2418 Modeler: unable to edit entity selected via Search
CAY-2419 Modeler: Not changing highlight on selecting search results within one entity
CAY-2420 Modeler: search is not performed for Stored Procedures
+CAY-2425 Modeler: Migrate DB Direction field is locked if no option was selected in dropdown list
+ CAY-2427 Modeler: Undo throws exeption
----------------------------------
Release: 4.1.M1