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 2016/10/04 12:45:35 UTC
[7/7] cayenne git commit: CAY-2114 cdbimport: object layer settings
are not respected
CAY-2114 cdbimport: object layer settings are not respected
* will respect meaningful PK filter
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/1455622f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/1455622f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/1455622f
Branch: refs/heads/master
Commit: 1455622fad83db8d181e2dfb0ba5f6efeeeae37e
Parents: 0ab7948
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Tue Oct 4 14:16:48 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Tue Oct 4 15:45:16 2016 +0300
----------------------------------------------------------------------
.../dbsync/filter/NamePatternMatcher.java | 8 ++++
.../dbsync/merge/EntityMergeSupport.java | 47 +++++++-------------
.../cayenne/dbsync/merge/MergerContext.java | 14 +++++-
.../dbsync/merge/EntityMergeSupportIT.java | 3 +-
.../tools/dbimport/DbImportConfiguration.java | 21 ++++++++-
.../tools/dbimport/DefaultDbImportAction.java | 4 ++
.../dbimport/DefaultDbImportActionTest.java | 2 +
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
.../modeler/action/CreateObjEntityAction.java | 9 ++--
.../modeler/action/DbEntitySyncAction.java | 2 +
.../dialog/objentity/EntitySyncController.java | 9 ++--
11 files changed, 77 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
index 211b62e..1e3757a 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
@@ -35,6 +35,14 @@ import java.util.regex.PatternSyntaxException;
*/
public class NamePatternMatcher implements NameFilter {
+ public static final NameFilter EXCLUDE_ALL = new NameFilter() {
+
+ @Override
+ public boolean isIncluded(String obj) {
+ return false;
+ }
+ };
+
private static final String[] EMPTY_ARRAY = new String[0];
private static final Pattern COMMA = Pattern.compile(",");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
index c0d46d7..978ba41 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/EntityMergeSupport.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.dbsync.merge;
import org.apache.cayenne.dba.TypesMapping;
+import org.apache.cayenne.dbsync.filter.NameFilter;
import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
import org.apache.cayenne.map.DataMap;
@@ -65,18 +66,18 @@ public class EntityMergeSupport {
private final ObjectNameGenerator nameGenerator;
private final List<EntityMergeListener> listeners;
private final boolean removingMeaningfulFKs;
- private final boolean removingMeaningfulPKs;
+ private final NameFilter meaningfulPKsFilter;
private final boolean usingPrimitives;
public EntityMergeSupport(ObjectNameGenerator nameGenerator,
- boolean removingMeaningfulPKs,
+ NameFilter meaningfulPKsFilter,
boolean removingMeaningfulFKs,
boolean usingPrimitives) {
this.listeners = new ArrayList<>();
this.nameGenerator = nameGenerator;
this.removingMeaningfulFKs = removingMeaningfulFKs;
- this.removingMeaningfulPKs = removingMeaningfulPKs;
+ this.meaningfulPKsFilter = meaningfulPKsFilter;
this.usingPrimitives = usingPrimitives;
// will ensure that all created ObjRelationships would have
@@ -88,9 +89,6 @@ public class EntityMergeSupport {
return removingMeaningfulFKs;
}
- public boolean isRemovingMeaningfulPKs() {
- return removingMeaningfulPKs;
- }
/**
* Updates each one of the collection of ObjEntities, adding attributes and
@@ -110,20 +108,6 @@ public class EntityMergeSupport {
}
/**
- * @since 4.0
- */
- protected boolean removePK(DbEntity dbEntity) {
- return removingMeaningfulPKs;
- }
-
- /**
- * @since 4.0
- */
- protected boolean removeFK(DbEntity dbEntity) {
- return removingMeaningfulFKs;
- }
-
- /**
* Updates ObjEntity attributes and relationships based on the current state
* of its DbEntity.
*
@@ -142,7 +126,7 @@ public class EntityMergeSupport {
boolean changed = false;
- if (removeFK(dbEntity)) {
+ if (removingMeaningfulFKs) {
changed = getRidOfAttributesThatAreNowSrcAttributesForRelationships(entity);
}
@@ -158,7 +142,7 @@ public class EntityMergeSupport {
public boolean synchronizeOnDbAttributeAdded(ObjEntity entity, DbAttribute dbAttribute) {
Collection<DbRelationship> incomingRels = getIncomingRelationships(dbAttribute.getEntity());
- if (isMissingFromObjEntity(entity, dbAttribute, incomingRels)) {
+ if (shouldAddToObjEntity(entity, dbAttribute, incomingRels)) {
addMissingAttribute(entity, dbAttribute);
return true;
}
@@ -171,7 +155,7 @@ public class EntityMergeSupport {
*/
public boolean synchronizeOnDbRelationshipAdded(ObjEntity entity, DbRelationship dbRelationship) {
- if (isMissingFromObjEntity(entity, dbRelationship)) {
+ if (shouldAddToObjEntity(entity, dbRelationship)) {
addMissingRelationship(entity, dbRelationship);
}
@@ -336,7 +320,7 @@ public class EntityMergeSupport {
for (DbAttribute dba : dbEntity.getAttributes()) {
- if (isMissingFromObjEntity(objEntity, dba, incomingRels)) {
+ if (shouldAddToObjEntity(objEntity, dba, incomingRels)) {
missing.add(dba);
}
}
@@ -344,14 +328,15 @@ public class EntityMergeSupport {
return missing;
}
- protected boolean isMissingFromObjEntity(ObjEntity entity, DbAttribute dbAttribute, Collection<DbRelationship> incomingRels) {
+ protected boolean shouldAddToObjEntity(ObjEntity entity, DbAttribute dbAttribute, Collection<DbRelationship> incomingRels) {
if (dbAttribute.getName() == null || entity.getAttributeForDbAttribute(dbAttribute) != null) {
return false;
}
- boolean removeMeaningfulPKs = removePK(dbAttribute.getEntity());
- if (removeMeaningfulPKs && dbAttribute.isPrimaryKey()) {
+ boolean addMeaningfulPK = meaningfulPKsFilter.isIncluded(entity.getDbEntityName());
+
+ if (dbAttribute.isPrimaryKey() && !addMeaningfulPK) {
return false;
}
@@ -368,7 +353,7 @@ public class EntityMergeSupport {
}
}
- if (!removeMeaningfulPKs) {
+ if (addMeaningfulPK) {
if (!dbAttribute.isPrimaryKey() && isFK) {
return false;
}
@@ -390,7 +375,7 @@ public class EntityMergeSupport {
}
}
- if (!removeMeaningfulPKs) {
+ if (addMeaningfulPK) {
if (!dbAttribute.isPrimaryKey() && isFK) {
return false;
}
@@ -403,7 +388,7 @@ public class EntityMergeSupport {
return true;
}
- protected boolean isMissingFromObjEntity(ObjEntity entity, DbRelationship dbRelationship) {
+ protected boolean shouldAddToObjEntity(ObjEntity entity, DbRelationship dbRelationship) {
return dbRelationship.getName() != null && entity.getRelationshipForDbRelationship(dbRelationship) == null;
}
@@ -431,7 +416,7 @@ public class EntityMergeSupport {
protected List<DbRelationship> getRelationshipsToAdd(ObjEntity objEntity) {
List<DbRelationship> missing = new ArrayList<DbRelationship>();
for (DbRelationship dbRel : objEntity.getDbEntity().getRelationships()) {
- if (isMissingFromObjEntity(objEntity, dbRel)) {
+ if (shouldAddToObjEntity(objEntity, dbRel)) {
missing.add(dbRel);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/MergerContext.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/MergerContext.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/MergerContext.java
index cf7f7fb..1ae9337 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/MergerContext.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/MergerContext.java
@@ -20,6 +20,8 @@ package org.apache.cayenne.dbsync.merge;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dbsync.filter.NameFilter;
+import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
import org.apache.cayenne.map.DataMap;
@@ -105,6 +107,7 @@ public class MergerContext {
private MergerContext context;
private ObjectNameGenerator nameGenerator;
private boolean usingPrimitives;
+ private NameFilter meaningfulPKsFilter;
private Builder(DataMap dataMap) {
this.context = new MergerContext();
@@ -128,7 +131,11 @@ public class MergerContext {
nameGenerator = new DefaultObjectNameGenerator();
}
- context.entityMergeSupport = new EntityMergeSupport(nameGenerator, true, true, usingPrimitives);
+ if(meaningfulPKsFilter == null) {
+ meaningfulPKsFilter = NamePatternMatcher.EXCLUDE_ALL;
+ }
+
+ context.entityMergeSupport = new EntityMergeSupport(nameGenerator, meaningfulPKsFilter, true, usingPrimitives);
return context;
}
@@ -153,6 +160,11 @@ public class MergerContext {
return this;
}
+ public Builder meaningfulPKFilter(NameFilter filter) {
+ this.meaningfulPKsFilter = Objects.requireNonNull(filter);
+ return this;
+ }
+
public Builder syntheticDataNode(DataSource dataSource, DbAdapter adapter) {
DataNode dataNode = new DataNode();
dataNode.setDataSource(dataSource);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
index b47ac20..9f6e002 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/EntityMergeSupportIT.java
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.cayenne.dbsync.merge;
+import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -87,7 +88,7 @@ public class EntityMergeSupportIT extends MergeCase {
objEntity2.setDbEntity(dbEntity2);
map.addObjEntity(objEntity2);
- assertTrue(new EntityMergeSupport(new DefaultObjectNameGenerator(), true, true, true)
+ assertTrue(new EntityMergeSupport(new DefaultObjectNameGenerator(), NamePatternMatcher.EXCLUDE_ALL, true, true)
.synchronizeWithDbEntities(Arrays.asList(objEntity1, objEntity2)));
assertNotNull(objEntity1.getAttribute("name"));
assertNotNull(objEntity1.getRelationship("rel1To2"));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index 931df78..2b62b06 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -22,6 +22,8 @@ import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dbsync.filter.NameFilter;
+import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.merge.DefaultModelMergeDelegate;
import org.apache.cayenne.dbsync.merge.ModelMergeDelegate;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
@@ -43,6 +45,7 @@ import java.io.IOException;
import java.net.MalformedURLException;
import java.sql.Connection;
import java.util.Collections;
+import java.util.regex.Pattern;
/**
* @since 4.0
@@ -140,6 +143,22 @@ public class DbImportConfiguration {
return new DbLoader(connection, adapter, loaderDelegate, getNameGenerator());
}
+ public NameFilter getMeaningfulPKFilter() {
+
+ if (meaningfulPkTables == null) {
+ return NamePatternMatcher.EXCLUDE_ALL;
+ }
+
+ // TODO: this filter can't handle table names with comma in them
+ String[] patternStrings = meaningfulPkTables.split(",");
+ Pattern[] patterns = new Pattern[patternStrings.length];
+ for (int i = 0; i < patterns.length; i++) {
+ patterns[i] = Pattern.compile(patternStrings[i]);
+ }
+
+ return new NamePatternMatcher(patterns, new Pattern[0]);
+ }
+
public ObjectNameGenerator getNameGenerator() {
// TODO: load via DI AdhocObjectFactory
@@ -205,7 +224,7 @@ public class DbImportConfiguration {
DataMap dataMap = new DataMap();
initializeDataMap(dataMap);
- return dataMap;
+ return dataMap;
}
protected void initializeDataMap(DataMap dataMap) throws MalformedURLException {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
index 6ce01f9..df548c3 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DefaultDbImportAction.java
@@ -23,6 +23,7 @@ import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.configuration.server.DataSourceFactory;
import org.apache.cayenne.configuration.server.DbAdapterFactory;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dbsync.filter.NameFilter;
import org.apache.cayenne.dbsync.merge.AbstractToModelToken;
import org.apache.cayenne.dbsync.merge.AddRelationshipToDb;
import org.apache.cayenne.dbsync.merge.DbMerger;
@@ -159,6 +160,7 @@ public class DefaultDbImportAction implements DbImportAction {
targetDataMap,
log(sort(reverse(mergerTokenFactory, tokens))),
config.getNameGenerator(),
+ config.getMeaningfulPKFilter(),
config.isUsePrimitives());
if (hasChanges) {
@@ -239,6 +241,7 @@ public class DefaultDbImportAction implements DbImportAction {
DataMap targetDataMap,
Collection<MergerToken> tokens,
ObjectNameGenerator nameGenerator,
+ NameFilter meaningfulPKFilter,
boolean usingPrimitives) {
if (tokens.isEmpty()) {
@@ -261,6 +264,7 @@ public class DefaultDbImportAction implements DbImportAction {
.delegate(mergeDelegate)
.nameGenerator(nameGenerator)
.usingPrimitives(usingPrimitives)
+ .meaningfulPKFilter(meaningfulPKFilter)
.build();
for (MergerToken token : tokens) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
index cbe8156..1bf48c7 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/tools/dbimport/DefaultDbImportActionTest.java
@@ -24,6 +24,7 @@ import org.apache.cayenne.configuration.server.DataSourceFactory;
import org.apache.cayenne.configuration.server.DbAdapterFactory;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dbsync.CayenneDbSyncModule;
+import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.merge.AddColumnToDb;
import org.apache.cayenne.dbsync.merge.AddRelationshipToDb;
import org.apache.cayenne.dbsync.merge.CreateTableToDb;
@@ -171,6 +172,7 @@ public class DefaultDbImportActionTest {
when(params.createMergeDelegate()).thenReturn(new DefaultModelMergeDelegate());
when(params.getDbLoaderConfig()).thenReturn(new DbLoaderConfiguration());
when(params.getNameGenerator()).thenReturn(new DefaultObjectNameGenerator());
+ when(params.getMeaningfulPKFilter()).thenReturn(NamePatternMatcher.EXCLUDE_ALL);
final boolean[] haveWeTriedToSave = {false};
DefaultDbImportAction action = buildDbImportAction(new FileProjectSaver() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/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 64b3e71..40a2cb7 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -32,6 +32,7 @@ CAY-2107 cayenne-crypto: Lazy initialization of crypto subsystem
CAY-2111 Unbind transaction object from the current thread for iterated queries
CAY-2112 Expose callback for "performInTransaction"
CAY-2113 cdbimport: Reverse-engineering reinstates previously ignored columns
+CAY-2114 cdbimport: object layer settings are not respected
CAY-2115 DbLoader - allow loading DataMap without Obj layer
CAY-2116 Split schema synchronization code in a separate module
CAY-2118 cdbimport: drop support for the old style of table filtering
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
index 8602415..eb084fc 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
@@ -20,9 +20,10 @@ package org.apache.cayenne.modeler.action;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.merge.EntityMergeSupport;
-import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
@@ -82,9 +83,7 @@ public class CreateObjEntityAction extends CayenneAction {
DataMap dataMap = mediator.getCurrentDataMap();
ObjEntity entity = new ObjEntity();
- entity.setName(NameBuilder
- .builder(entity, dataMap)
- .name());
+ entity.setName(NameBuilder.builder(entity, dataMap).name());
// init defaults
entity.setSuperClassName(dataMap.getDefaultSuperclass());
@@ -112,7 +111,7 @@ public class CreateObjEntityAction extends CayenneAction {
dataMap.addObjEntity(entity);
// TODO: Modeler-controlled defaults for all the hardcoded boolean flags here.
- EntityMergeSupport merger = new EntityMergeSupport(new DefaultObjectNameGenerator(), true, true, true);
+ EntityMergeSupport merger = new EntityMergeSupport(new DefaultObjectNameGenerator(), NamePatternMatcher.EXCLUDE_ALL, true, true);
merger.addEntityMergeListener(DeleteRuleUpdater.getEntityMergeListener());
merger.synchronizeWithDbEntity(entity);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/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 5a5f346..b8495df 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
@@ -89,6 +89,8 @@ public class DbEntitySyncAction extends CayenneAction {
merger.addEntityMergeListener(listener);
+ // 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)));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/1455622f/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
index e02080c..f13a5b9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
@@ -19,10 +19,11 @@
package org.apache.cayenne.modeler.dialog.objentity;
+import org.apache.cayenne.dbsync.filter.NamePatternMatcher;
import org.apache.cayenne.dbsync.merge.EntityMergeSupport;
+import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.modeler.util.NameGeneratorPreferences;
@@ -69,7 +70,7 @@ public class EntitySyncController extends CayenneController {
}
// TODO: Modeler-controlled defaults for all the hardcoded boolean flags here.
- EntityMergeSupport merger = new EntityMergeSupport(namingStrategy, true, true, true);
+ EntityMergeSupport merger = new EntityMergeSupport(namingStrategy, NamePatternMatcher.EXCLUDE_ALL, true, true);
// see if we need to remove meaningful attributes...
for (ObjEntity entity : entities) {
@@ -114,8 +115,8 @@ public class EntitySyncController extends CayenneController {
makeCloseableOnEscape();
view.setVisible(true);
- // TODO: Modeler-controlled defaults for all the hardcoded boolean flags here.
- return cancel[0] ? null : new EntityMergeSupport(namingStrategy, true, removeFKs[0], true);
+ // TODO: Modeler-controlled defaults for all the hardcoded flags here.
+ return cancel[0] ? null : new EntityMergeSupport(namingStrategy, NamePatternMatcher.EXCLUDE_ALL, removeFKs[0], true);
}
@Override