You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/01/12 15:26:38 UTC
svn commit: r1432430 - in
/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler:
action/PasteAction.java undo/PasteUndoableEdit.java
Author: aadamchik
Date: Sat Jan 12 14:26:38 2013
New Revision: 1432430
URL: http://svn.apache.org/viewvc?rev=1432430&view=rev
Log:
CAY-1701 Modeler cannot undo pasting of obj (db) entity
patch by Ilya Drabenia
Modified:
cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/PasteUndoableEdit.java
Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java?rev=1432430&r1=1432429&r2=1432430&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java Sat Jan 12 14:26:38 2013
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import javax.swing.KeyStroke;
+import javax.swing.undo.UndoableEdit;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
@@ -39,6 +40,8 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.EmbeddableAttribute;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.MappingNamespace;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
@@ -102,15 +105,15 @@ public class PasteAction extends Cayenne
Object currentObject = getProjectController().getCurrentObject();
if (content != null && currentObject != null) {
-
- PasteCompoundUndoableEdit undoableEdit = new PasteCompoundUndoableEdit();
-
DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController()
.getProject()
.getRootNode();
DataMap map = getProjectController().getCurrentDataMap();
+ UndoableEdit undoableEdit;
if (content instanceof List) {
+ undoableEdit = new PasteCompoundUndoableEdit();
+
for (Object o : (List) content) {
paste(currentObject, o);
undoableEdit.addEdit(new PasteUndoableEdit(
@@ -122,11 +125,7 @@ public class PasteAction extends Cayenne
}
else {
paste(currentObject, content);
- undoableEdit.addEdit(new PasteUndoableEdit(
- domain,
- map,
- currentObject,
- content));
+ undoableEdit = new PasteUndoableEdit(domain, map, currentObject, content);
}
application.getUndoManager().addEdit(undoableEdit);
@@ -259,6 +258,9 @@ public class PasteAction extends Cayenne
// paste DbEntity to DataMap
final DataMap dataMap = ((DataMap) where);
+ // clear data map parent cache
+ clearDataMapCache(dataMap);
+
if (content instanceof DbEntity) {
DbEntity dbEntity = (DbEntity) content;
dbEntity.setName(getFreeName(new DbEntityNameChecker(domain), dbEntity
@@ -449,6 +451,13 @@ public class PasteAction extends Cayenne
}
}
+ private void clearDataMapCache(DataMap dataMap) {
+ MappingNamespace ns = dataMap.getNamespace();
+ if (ns instanceof EntityResolver) {
+ ((EntityResolver) ns).clearCache();
+ }
+ }
+
/**
* Finds avaliable name for an object
*/
Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/PasteUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/PasteUndoableEdit.java?rev=1432430&r1=1432429&r2=1432430&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/PasteUndoableEdit.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/PasteUndoableEdit.java Sat Jan 12 14:26:38 2013
@@ -102,6 +102,9 @@ public class PasteUndoableEdit extends C
else if (content instanceof ObjEntity) {
rAction.removeObjEntity(map, (ObjEntity) content);
}
+ else if (content instanceof Embeddable) {
+ rAction.removeEmbeddable(map, (Embeddable) content);
+ }
else if (content instanceof Query) {
rAction.removeQuery(map, (Query) content);
}