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