This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 8fc21319fdc8071f9088324da0790a134aa37e01 Author: Andrus Adamchik <[email protected]> AuthorDate: Mon Jul 20 14:57:56 2026 +0200 ObjectNameGenerator - ObjRelationship name is always derived from DbRelationship name no more join analysis for the Obj layer naming --- .../dbsync/merge/context/EntityMergeSupport.java | 6 +- .../dbsync/naming/BaseObjectNameGenerator.java | 8 +- .../cayenne/dbsync/naming/ObjectNameGenerator.java | 2 +- .../cayenne/dbsync/merge/EntityMergeSupportIT.java | 9 +- .../naming/DefaultObjectNameGeneratorTest.java | 122 ++++++++++++--------- .../naming/PatternObjectNameGeneratorTest.java | 6 +- .../modeler/ui/action/CreateObjEntityAction.java | 10 +- .../modeler/ui/action/DbEntitySyncAction.java | 22 ---- .../modeler/ui/action/ObjEntitySyncAction.java | 2 - .../modeler/ui/entitysync/EntitySyncDialog.java | 29 ++--- 10 files changed, 106 insertions(+), 110 deletions(-) diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java index ca3326921..953672571 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java @@ -84,7 +84,7 @@ public class EntityMergeSupport { SQL_ADDITIONAL_TYPES_TO_JAVA_TYPE.put("geometry", Wkt.class.getName()); } - private ObjectNameGenerator nameGenerator; + private final ObjectNameGenerator nameGenerator; private final List<EntityMergeListener> listeners; private final boolean removingMeaningfulFKs; private final NameFilter meaningfulPKsFilter; @@ -527,8 +527,4 @@ public class EntityMergeSupport { listener.objRelationshipAdded(rel); } } - - public void setNameGenerator(ObjectNameGenerator nameGenerator) { - this.nameGenerator = nameGenerator; - } } diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java index 8d1a06a7d..a818642d6 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/BaseObjectNameGenerator.java @@ -25,6 +25,7 @@ import org.apache.cayenne.map.DbRelationship; import org.apache.cayenne.util.Util; import java.util.List; +import java.util.Objects; /** * The default strategy for converting DB-layer to Object-layer names. @@ -52,9 +53,12 @@ public abstract class BaseObjectNameGenerator implements ObjectNameGenerator { throw new IllegalArgumentException("At least one relationship is expected"); } - DbRelationship first = relationshipChain[0]; + // the DbRelationship name is the source of truth for the Obj layer DbRelationship last = relationshipChain[relationshipChain.length - 1]; - return Util.underscoredToJava(relationshipBase(first.getJoins(), last.getTargetEntityName(), isToMany(relationshipChain)), false); + String name = Util.underscoredToJava(Objects.requireNonNull(last.getName(), "Unnamed DbRelationship"), false); + + // a to-many chain ending in a to-one (e.g. a flattened many-to-many) mirrors a singular name + return isToMany(relationshipChain) && !last.isToMany() ? EnglishInflector.pluralOf(name) : name; } @Override diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java index 81c3dfd39..26da836d3 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/ObjectNameGenerator.java @@ -43,7 +43,7 @@ public interface ObjectNameGenerator { String objAttributeName(DbAttribute dbAttribute); /** - * Generates a name for an ObjRelationship, derived from join semantics of a chain of connected DbRelationships. + * Generates a name for an ObjRelationship mapped to a chain of one or more connected DbRelationships. * * @since 5.0 */ 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 d88f2968c..0f0ad3577 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 @@ -93,11 +93,12 @@ public class EntityMergeSupportIT extends MergeCase { false); assertTrue(entityMergeSupport.synchronizeWithDbEntities(Arrays.asList(objEntity1, objEntity2))); assertNotNull(objEntity1.getAttribute("name")); - assertNotNull(objEntity1.getRelationship("newTable2s")); - assertNotNull(objEntity2.getRelationship("newTable")); - assertEquals(objEntity1.getRelationship("newTable2s").getDeleteRule(), DeleteRule.DEFAULT_DELETE_RULE_TO_MANY); - assertEquals(objEntity2.getRelationship("newTable").getDeleteRule(), DeleteRule.DEFAULT_DELETE_RULE_TO_ONE); + assertNotNull(objEntity1.getRelationship("rel1To2")); + assertNotNull(objEntity2.getRelationship("rel2To1")); + + assertEquals(DeleteRule.DEFAULT_DELETE_RULE_TO_MANY, objEntity1.getRelationship("rel1To2").getDeleteRule()); + assertEquals(DeleteRule.DEFAULT_DELETE_RULE_TO_ONE, objEntity2.getRelationship("rel2To1").getDeleteRule()); map.removeObjEntity(objEntity2.getName()); map.removeObjEntity(objEntity1.getName()); diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java index 50c0a96a3..102f6917c 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGeneratorTest.java @@ -46,119 +46,141 @@ public class DefaultObjectNameGeneratorTest { return relationship; } + private String dbRelationshipName(DbRelationship relationship) { + return generator.dbRelationshipName(relationship.getJoins(), relationship.isToMany()); + } + + @Test + public void objRelationshipName_MirrorsDbRelationshipName() { + + // the DbRelationship name is the source of truth for the ObjRelationship name + DbRelationship r1 = makeRelationship("painting", "artist_id", "artist", "artist_id", false); + r1.setName("creator"); + assertEquals("creator", generator.objRelationshipName(r1)); + + // a to-many DbRelationship name is already plural and is mirrored as-is + DbRelationship r2 = makeRelationship("artist", "artist_id", "painting", "artist_id", true); + r2.setName("works"); + assertEquals("works", generator.objRelationshipName(r2)); + + // underscored db names are converted to Java style + DbRelationship r3 = makeRelationship("TEAM", "TEAM_ID", "GAME", "HOME_TEAM_ID", true); + r3.setName("HOME_GAMES"); + assertEquals("homeGames", generator.objRelationshipName(r3)); + + // even the NameBuilder placeholder is mirrored, not regenerated + DbRelationship r4 = makeRelationship("painting", "artist_id", "artist", "artist_id", false); + r4.setName("untitledRel2"); + assertEquals("untitledRel2", generator.objRelationshipName(r4)); + } + + @Test + public void objRelationshipName_FlattenedChain() { + + // flattened many-to-many: a to-many leg to the join table, then a to-one leg to the target; + // the last leg's singular name is mirrored and pluralized + DbRelationship r1 = makeRelationship("movie", "movie_id", "person_movie", "movie_id", true); + r1.setName("personMovies"); + + DbRelationship r2 = makeRelationship("person_movie", "actor_id", "person", "person_id", false); + r2.setName("actor"); + assertEquals("actors", generator.objRelationshipName(r1, r2)); + + DbRelationship r3 = makeRelationship("person_movie", "director_id", "person", "person_id", false); + r3.setName("director"); + assertEquals("directors", generator.objRelationshipName(r1, r3)); + } + @Test - public void objRelationshipName_LowerCase_Underscores() { + public void dbRelationshipName_LowerCase_Underscores() { DbRelationship r1 = makeRelationship("painting", "artist_id", "artist", "artist_id", false); - assertEquals("artist", generator.objRelationshipName(r1)); + assertEquals("artist", dbRelationshipName(r1)); DbRelationship r2 = makeRelationship("artist", "artist_id", "painting", "artist_id", true); - assertEquals("paintings", generator.objRelationshipName(r2)); + assertEquals("paintings", dbRelationshipName(r2)); DbRelationship r3 = makeRelationship("person", "mother_id", "person", "person_id", false); - assertEquals("mother", generator.objRelationshipName(r3)); + assertEquals("mother", dbRelationshipName(r3)); DbRelationship r4 = makeRelationship("person", "person_id", "person", "mother_id", true); - assertEquals("people", generator.objRelationshipName(r4)); + assertEquals("people", dbRelationshipName(r4)); DbRelationship r5 = makeRelationship("person", "shipping_address_id", "address", "id", false); - assertEquals("shippingAddress", generator.objRelationshipName(r5)); + assertEquals("shippingAddress", dbRelationshipName(r5)); DbRelationship r6 = makeRelationship("person", "id", "address", "person_id", true); - assertEquals("addresses", generator.objRelationshipName(r6)); + assertEquals("addresses", dbRelationshipName(r6)); } @Test - public void objRelationshipName_UpperCase_Underscores() { + public void dbRelationshipName_UpperCase_Underscores() { DbRelationship r1 = makeRelationship("PAINTING", "ARTIST_ID", "ARTIST", "ARTIST_ID", false); - assertEquals("artist", generator.objRelationshipName(r1)); + assertEquals("artist", dbRelationshipName(r1)); DbRelationship r2 = makeRelationship("ARTIST", "ARTIST_ID", "PAINTING", "ARTIST_ID", true); - assertEquals("paintings", generator.objRelationshipName(r2)); + assertEquals("paintings", dbRelationshipName(r2)); DbRelationship r3 = makeRelationship("PERSON", "MOTHER_ID", "PERSON", "PERSON_ID", false); - assertEquals("mother", generator.objRelationshipName(r3)); + assertEquals("mother", dbRelationshipName(r3)); DbRelationship r4 = makeRelationship("PERSON", "PERSON_ID", "PERSON", "MOTHER_ID", true); - assertEquals("people", generator.objRelationshipName(r4)); + assertEquals("people", dbRelationshipName(r4)); DbRelationship r5 = makeRelationship("PERSON", "SHIPPING_ADDRESS_ID", "ADDRESS", "ID", false); - assertEquals("shippingAddress", generator.objRelationshipName(r5)); + assertEquals("shippingAddress", dbRelationshipName(r5)); DbRelationship r6 = makeRelationship("PERSON", "ID", "ADDRESS", "PERSON_ID", true); - assertEquals("addresses", generator.objRelationshipName(r6)); + assertEquals("addresses", dbRelationshipName(r6)); } @Test - public void objRelationshipName_ToMany_RoleQualifiedFk() { + public void dbRelationshipName_ToMany_RoleQualifiedFk() { // two FKs from GAME to TEAM: the reverse collections take the role from the FK column DbRelationship r1 = makeRelationship("TEAM", "TEAM_ID", "GAME", "HOME_TEAM_ID", true); - assertEquals("homeGames", generator.objRelationshipName(r1)); + assertEquals("homeGames", dbRelationshipName(r1)); DbRelationship r2 = makeRelationship("TEAM", "TEAM_ID", "GAME", "AWAY_TEAM_ID", true); - assertEquals("awayGames", generator.objRelationshipName(r2)); + assertEquals("awayGames", dbRelationshipName(r2)); DbRelationship r3 = makeRelationship("team", "team_id", "game", "home_team_id", true); - assertEquals("homeGames", generator.objRelationshipName(r3)); + assertEquals("homeGames", dbRelationshipName(r3)); // FK without an ID suffix still carries the role DbRelationship r4 = makeRelationship("TEAM", "TEAM_ID", "GAME", "HOME_TEAM", true); - assertEquals("homeGames", generator.objRelationshipName(r4)); + assertEquals("homeGames", dbRelationshipName(r4)); // multi-word qualifier and entity name DbRelationship r5 = makeRelationship("ARTIST_GROUP", "ID", "EXHIBIT", "PRIMARY_ARTIST_GROUP_ID", true); - assertEquals("primaryExhibits", generator.objRelationshipName(r5)); + assertEquals("primaryExhibits", dbRelationshipName(r5)); // FK role unrelated to the source entity name gets no qualifier DbRelationship r6 = makeRelationship("PERSON", "PERSON_ID", "PERSON", "MOTHER_ID", true); - assertEquals("people", generator.objRelationshipName(r6)); + assertEquals("people", dbRelationshipName(r6)); // FK ending with the entity name without a "_" boundary gets no qualifier DbRelationship r7 = makeRelationship("TEAM", "TEAM_ID", "GAME", "STEAM_ID", true); - assertEquals("games", generator.objRelationshipName(r7)); + assertEquals("games", dbRelationshipName(r7)); } @Test - public void objRelationshipName_ToMany_RoleQualifiedFk_FkDropsTablePrefix() { + public void dbRelationshipName_ToMany_RoleQualifiedFk_FkDropsTablePrefix() { // FK columns matching a "_"-token suffix of the entity name still carry the role... DbRelationship r1 = makeRelationship("nhl_team", "id", "nhl_game", "home_team_id", true); - assertEquals("homeNhlGames", generator.objRelationshipName(r1)); + assertEquals("homeNhlGames", dbRelationshipName(r1)); DbRelationship r2 = makeRelationship("nhl_team", "id", "nhl_game", "visiting_team_id", true); - assertEquals("visitingNhlGames", generator.objRelationshipName(r2)); + assertEquals("visitingNhlGames", dbRelationshipName(r2)); // ... and a plain suffix reference gets no qualifier DbRelationship r3 = makeRelationship("nhl_team", "id", "nhl_award", "team_id", true); - assertEquals("nhlAwards", generator.objRelationshipName(r3)); + assertEquals("nhlAwards", dbRelationshipName(r3)); DbRelationship r4 = makeRelationship("nhl_game_type", "id", "nhl_game", "type_id", true); - assertEquals("nhlGames", generator.objRelationshipName(r4)); - } - - @Test - public void dbRelationshipName_ToMany_RoleQualifiedFk() { - - DbRelationship r1 = makeRelationship("TEAM", "TEAM_ID", "GAME", "HOME_TEAM_ID", true); - assertEquals("homeGames", generator.dbRelationshipName(r1.getJoins(), r1.isToMany())); - - DbRelationship r2 = makeRelationship("TEAM", "TEAM_ID", "GAME", "AWAY_TEAM_ID", true); - assertEquals("awayGames", generator.dbRelationshipName(r2.getJoins(), r2.isToMany())); - } - - @Test - public void dbRelationshipName() { - - DbRelationship r1 = makeRelationship("painting", "artist_id", "artist", "artist_id", false); - assertEquals("artist", generator.dbRelationshipName(r1.getJoins(), r1.isToMany())); - - DbRelationship r2 = makeRelationship("artist", "artist_id", "painting", "artist_id", true); - assertEquals("paintings", generator.dbRelationshipName(r2.getJoins(), r2.isToMany())); - - DbRelationship r3 = makeRelationship("person", "shipping_address_id", "address", "id", false); - assertEquals("shippingAddress", generator.dbRelationshipName(r3.getJoins(), r3.isToMany())); + assertEquals("nhlGames", dbRelationshipName(r4)); } @Test diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java index 468c8a86a..554aeeeb9 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/PatternObjectNameGeneratorTest.java @@ -44,16 +44,16 @@ public class PatternObjectNameGeneratorTest { } @Test - public void objRelationshipName_ToMany_RoleQualifiedFk() { + public void dbRelationshipName_ToMany_RoleQualifiedFk() { PatternObjectNameGenerator generator = new PatternObjectNameGenerator("^AA_"); // the stripped prefix is transparent to role qualifier matching... DbRelationship r1 = makeRelationship("AA_TEAM", "TEAM_ID", "AA_GAME", "HOME_TEAM_ID", true); - assertEquals("homeGames", generator.objRelationshipName(r1)); + assertEquals("homeGames", generator.dbRelationshipName(r1.getJoins(), r1.isToMany())); // ... and doesn't itself become a qualifier when the FK column carries it too DbRelationship r2 = makeRelationship("AA_TEAM", "TEAM_ID", "AA_GAME", "AA_TEAM_ID", true); - assertEquals("games", generator.objRelationshipName(r2)); + assertEquals("games", generator.dbRelationshipName(r2.getJoins(), r2.isToMany())); } @Test diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java index 0f0d10558..5a6e5f319 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateObjEntityAction.java @@ -97,10 +97,12 @@ public class CreateObjEntityAction extends AppAction { dataMap.addObjEntity(entity); - // TODO: Modeler-controlled defaults for all the hardcoded boolean flags here. - EntityMergeSupport merger = new EntityMergeSupport(new DefaultObjectNameGenerator(), - NamePatternMatcher.EXCLUDE_ALL, true, false); - merger.setNameGenerator(new DbEntitySyncAction.PreserveRelationshipNameGenerator()); + EntityMergeSupport merger = new EntityMergeSupport( + new DefaultObjectNameGenerator(), + NamePatternMatcher.EXCLUDE_ALL, + true, + false); + merger.addEntityMergeListener(DeleteRuleUpdater.getEntityMergeListener()); merger.synchronizeWithDbEntity(entity); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java index 30d81d15d..5270036cf 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/DbEntitySyncAction.java @@ -21,10 +21,8 @@ package org.apache.cayenne.modeler.ui.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; import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.event.model.ObjEntityEvent; @@ -79,8 +77,6 @@ public class DbEntitySyncAction extends AppAction { return; } - merger.setNameGenerator(new PreserveRelationshipNameGenerator()); - DbEntitySyncUndoableEdit undoableEdit = new DbEntitySyncUndoableEdit(session, (DataChannelDescriptor) session.project().getRootNode(), session.getSelectedDataMap()); @@ -124,22 +120,4 @@ public class DbEntitySyncAction extends AppAction { private void filterInheritedEntities(final Collection<ObjEntity> entities) { entities.removeIf(e -> e.getSuperEntity() != null); } - - static class PreserveRelationshipNameGenerator extends DefaultObjectNameGenerator { - - @Override - public String objRelationshipName(DbRelationship... relationshipChain) { - if (relationshipChain.length == 0) { - return super.objRelationshipName(relationshipChain); - } - - DbRelationship last = relationshipChain[relationshipChain.length - 1]; - if (last.getName().startsWith("untitledRel")) { - return super.objRelationshipName(relationshipChain); - } - - // keep manually set relationship name - return last.getName(); - } - } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java index a96833b3e..5d05ab8f3 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ObjEntitySyncAction.java @@ -78,8 +78,6 @@ public class ObjEntitySyncAction extends AppAction { return; } - merger.setNameGenerator(new DbEntitySyncAction.PreserveRelationshipNameGenerator()); - if (merger.synchronizeWithDbEntity(entity)) { session .fireObjEntityEvent(ObjEntityEvent.ofChange(this, entity)); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java index c0f4eb942..49f91441c 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/entitysync/EntitySyncDialog.java @@ -24,12 +24,11 @@ import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import org.apache.cayenne.dbsync.filter.NamePatternMatcher; import org.apache.cayenne.dbsync.merge.context.EntityMergeSupport; -import org.apache.cayenne.dbsync.naming.ObjectNameGenerator; import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator; +import org.apache.cayenne.dbsync.naming.ObjectNameGenerator; import org.apache.cayenne.map.DbEntity; import org.apache.cayenne.map.ObjEntity; import org.apache.cayenne.modeler.Application; -import org.apache.cayenne.modeler.NameGeneratorPreferences; import org.apache.cayenne.modeler.toolkit.AppDialog; import javax.swing.*; @@ -86,37 +85,33 @@ public class EntitySyncDialog extends AppDialog { return null; } - ObjectNameGenerator namingStrategy; - try { - namingStrategy = NameGeneratorPreferences.getInstance().createNamingStrategy(app); - } catch (Throwable e) { - namingStrategy = new DefaultObjectNameGenerator(); - } + ObjectNameGenerator nameGenerator = new DefaultObjectNameGenerator(); - // TODO: Modeler-controlled defaults for all the hardcoded boolean flags here. - EntityMergeSupport merger = new EntityMergeSupport(namingStrategy, NamePatternMatcher.EXCLUDE_ALL, true, false); + EntityMergeSupport merger = new EntityMergeSupport( + nameGenerator, + NamePatternMatcher.EXCLUDE_ALL, + true, + false); for (ObjEntity entity : entities) { if (!merger.getMeaningfulFKs(entity).isEmpty()) { - return confirmMeaningfulFKs(namingStrategy); + return confirmMeaningfulFKs(nameGenerator); } } return merger; } - private EntityMergeSupport confirmMeaningfulFKs(ObjectNameGenerator namingStrategy) { + private EntityMergeSupport confirmMeaningfulFKs(ObjectNameGenerator nameGenerator) { pack(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); centerOnOwner(); makeCloseableOnEscape(); setVisible(true); - if (cancelled) { - return null; - } - // TODO: Modeler-controlled defaults for all the hardcoded flags here. - return new EntityMergeSupport(namingStrategy, NamePatternMatcher.EXCLUDE_ALL, removeFKs.isSelected(), false); + return cancelled + ? null + : new EntityMergeSupport(nameGenerator, NamePatternMatcher.EXCLUDE_ALL, removeFKs.isSelected(), false); } private Collection<ObjEntity> objEntities() {
