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
The following commit(s) were added to refs/heads/master by this push:
new 4adbc49a7 cleanup, refactoring
4adbc49a7 is described below
commit 4adbc49a7fcd170e569b39fe3b42bedeacd61bb8
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sat Jul 18 20:03:32 2026 -0400
cleanup, refactoring
---
.../dbsync/merge/context/EntityMergeSupport.java | 4 +-
.../merge/token/model/CreateTableToModel.java | 2 +-
.../cayenne/dbsync/naming/CallbackNameBuilder.java | 71 -------------------
.../dbsync/naming/DeduplicationVisitor.java | 15 ++--
.../dbsync/naming/DefaultObjectNameGenerator.java | 8 ---
.../apache/cayenne/dbsync/naming/NameBuilder.java | 81 +++++++++++++++-------
.../cayenne/dbsync/naming/PatternStemmer.java | 2 +-
.../dbimport/ManyToManyCandidateEntity.java | 2 +-
.../dbsync/reverse/dbload/RelationshipLoader.java | 12 ++--
.../cayenne/dbsync/naming/NameBuilderTest.java | 70 +++++++++----------
.../reverse/dbload/RelationshipsLoaderIT.java | 7 +-
.../cayenne/modeler/NameGeneratorPreferences.java | 4 +-
.../modeler/ui/action/CreateAttributeAction.java | 6 +-
.../ui/action/CreateCallbackMethodAction.java | 2 +-
.../modeler/ui/action/CreateDataMapAction.java | 2 +-
.../modeler/ui/action/CreateDbEntityAction.java | 2 +-
.../modeler/ui/action/CreateEmbeddableAction.java | 2 +-
.../modeler/ui/action/CreateNodeAction.java | 2 +-
.../modeler/ui/action/CreateObjEntityAction.java | 6 +-
.../modeler/ui/action/CreateProcedureAction.java | 2 +-
.../ui/action/CreateProcedureParameterAction.java | 2 +-
.../modeler/ui/action/DbEntitySyncAction.java | 20 +++---
.../modeler/ui/action/ImportDataMapAction.java | 2 +-
.../modeler/ui/action/ImportEOModelAction.java | 2 +-
.../modeler/ui/action/NewProjectAction.java | 5 +-
.../modeler/ui/action/ObjEntitySyncAction.java | 3 +-
.../cayenne/modeler/ui/action/PasteAction.java | 36 +++++-----
.../ui/dbrelationship/DbRelationshipDialog.java | 6 +-
.../relinfo/ObjRelationshipInfoDialog.java | 2 +-
.../ui/project/querytype/QueryTypeDialog.java | 2 +-
.../apache/cayenne/wocompat/EOModelProcessor.java | 3 +-
31 files changed, 166 insertions(+), 219 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 df6693771..0fc341035 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
@@ -201,7 +201,7 @@ public class EntityMergeSupport {
private boolean createObjRelationship(ObjEntity entity, DbRelationship dr,
String targetEntityName) {
ObjRelationship or = new ObjRelationship();
- or.setName(NameBuilder.builder(or, entity)
+ or.setName(NameBuilder.of(or).parent(entity)
.baseName(nameGenerator.relationshipName(dr))
.name());
@@ -268,7 +268,7 @@ public class EntityMergeSupport {
private void addMissingAttribute(ObjEntity entity, DbAttribute da) {
ObjAttribute oa = new ObjAttribute();
- oa.setName(NameBuilder.builder(oa,
entity).baseName(nameGenerator.objAttributeName(da)).name());
+
oa.setName(NameBuilder.of(oa).parent(entity).baseName(nameGenerator.objAttributeName(da)).name());
oa.setEntity(entity);
oa.setType(getTypeForObjAttribute(da));
oa.setDbAttributePath(da.getName());
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/CreateTableToModel.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/CreateTableToModel.java
index 4ff8ba5b5..35f6405e3 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/CreateTableToModel.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/CreateTableToModel.java
@@ -65,7 +65,7 @@ public class CreateTableToModel extends
AbstractToModelToken.Entity {
ObjEntity objEntity = new ObjEntity();
objEntity.setName(NameBuilder
- .builder(objEntity, dbEntity.getDataMap())
+ .of(objEntity).parent(dbEntity.getDataMap())
.baseName(context.getNameGenerator().objEntityName(dbEntity))
.name());
objEntity.setDbEntity(getEntity());
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
deleted file mode 100644
index 0466f24b8..000000000
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/CallbackNameBuilder.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cayenne.dbsync.naming;
-
-import org.apache.cayenne.configuration.ConfigurationNode;
-import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
-import org.apache.cayenne.map.ObjEntity;
-
-/**
- * @since 4.0
- */
-// TODO: fold CallbackMethod to org.apache.cayenne.map package and make it a
ConfigurationNode
-// then we can get rid off this fork...
-class CallbackNameBuilder extends NameBuilder {
-
- public CallbackNameBuilder() {
- super(new CallbackNode());
- }
-
- @Override
- public String name() {
- String baseName = this.baseName != null
- ? this.baseName
- : "onEvent";
-
- return new DeduplicationVisitor(parent, baseName,
dupesPattern).resolve(name -> {
-
- ObjEntity entity = (ObjEntity) parent;
-
- if (entity.getCallbackMethods().contains(name)) {
- return true;
- }
-
- if (name.startsWith("get")) {
- String conflictingProperty =
NameUtil.uncapitalize(name.substring(3));
-
- // check if either attribute or relationship name matches...
- if (entity.getAttribute(conflictingProperty) != null
- || entity.getRelationship(conflictingProperty) !=
null) {
- return true;
- }
- }
-
- return false;
- });
- }
-
- static class CallbackNode implements ConfigurationNode {
-
- @Override
- public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor) {
- return null;
- }
- }
-}
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
index 6138898e9..7483a8bd0 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DeduplicationVisitor.java
@@ -38,14 +38,11 @@ import org.apache.cayenne.map.QueryDescriptor;
import java.util.Objects;
import java.util.function.Predicate;
-/**
- * @since 4.0
- */
class DeduplicationVisitor implements ConfigurationNodeVisitor<String> {
- private ConfigurationNode parent;
- private String baseName;
- private String dupesPattern;
+ private final ConfigurationNode parent;
+ private final String baseName;
+ private final String dupesPattern;
DeduplicationVisitor(ConfigurationNode parent, String baseName, String
dupesPattern) {
this.parent = parent;
@@ -76,14 +73,12 @@ class DeduplicationVisitor implements
ConfigurationNodeVisitor<String> {
@Override
public String visitDataMap(DataMap dataMap) {
return resolve(name -> {
- // null context is a situation when DataMap is a
- // top level object of the project
+ // null context is a situation when DataMap is a top level object
of the project
if (parent == null) {
return false;
}
- if (parent instanceof DataChannelDescriptor) {
- DataChannelDescriptor domain = (DataChannelDescriptor) parent;
+ if (parent instanceof DataChannelDescriptor domain) {
return domain.getDataMap(name) != null;
}
return false;
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
index 387176a57..909dbe50b 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
@@ -36,10 +36,6 @@ public class DefaultObjectNameGenerator implements
ObjectNameGenerator {
private final DbEntityNameStemmer dbEntityNameStemmer;
- public DefaultObjectNameGenerator() {
- this.dbEntityNameStemmer = NoStemStemmer.getInstance();
- }
-
public DefaultObjectNameGenerator(DbEntityNameStemmer dbEntityNameStemmer)
{
this.dbEntityNameStemmer = dbEntityNameStemmer;
}
@@ -77,12 +73,8 @@ public class DefaultObjectNameGenerator implements
ObjectNameGenerator {
}
protected String toManyRelationshipName(DbRelationship...
relationshipChain) {
-
DbRelationship last = relationshipChain[relationshipChain.length - 1];
-
String baseName = stemmed(last.getTargetEntityName());
-
- // by default we use English rules here...
return EnglishInflector.pluralOf(baseName.toLowerCase());
}
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameBuilder.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameBuilder.java
index 3366db901..638fe7dc9 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameBuilder.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameBuilder.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.dbsync.naming;
import org.apache.cayenne.configuration.ConfigurationNode;
+import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
import org.apache.cayenne.map.ObjEntity;
import java.util.Objects;
@@ -26,43 +27,32 @@ import java.util.Objects;
/**
* A builder of names for model objects. Ensures that newly generated names do
not conflict with the names of siblings
* under the same parent node. Name generation can be performed based on
default base names for each model object type,
- * or with a user-provided base name. Used standalone or in conjunction with
{@link ObjectNameGenerator} that implements
- * DB-to-object name mapping conversions. Names generated by {@link
ObjectNameGenerator} can be used as "base names" for
- * {@link NameBuilder}.
+ * or with a user-provided base name.
*
* @since 4.0
*/
public class NameBuilder {
- protected ConfigurationNode nodeToName;
+ public static NameBuilder of(ConfigurationNode node) {
+ return new NameBuilder(node);
+ }
+
+ // TODO: make callback a ConfigurationNode (or remove it from the model
all together) to avoid a special case here
+ public static NameBuilder ofCallbackMethod() {
+ return new CallbackNameBuilder();
+ }
+
+ private final ConfigurationNode nodeToName;
protected ConfigurationNode parent;
protected String dupesPattern;
protected String baseName;
- protected NameBuilder(ConfigurationNode nodeToName) {
+ private NameBuilder(ConfigurationNode nodeToName) {
this.nodeToName = Objects.requireNonNull(nodeToName);
this.dupesPattern = "%s%d";
}
- public static NameBuilder builder(ConfigurationNode node) {
- return new NameBuilder(node);
- }
-
- public static NameBuilder builder(ConfigurationNode node,
ConfigurationNode parent) {
- return new NameBuilder(node).in(parent);
- }
-
- /**
- * A special builder starter for callback methods. Eventually callback
methods will be made into ConfigurationNodes,
- * and we can use regular {@link #builder(ConfigurationNode)} methods to
name them.
- */
- // TODO: fold CallbackMethod to org.apache.cayenne.map package and make it
a ConfigurationNode
- // then we can use normal API for it... for now have to keep a special
one-off method...
- public static NameBuilder builderForCallbackMethod(ObjEntity parent) {
- return new CallbackNameBuilder().in(parent);
- }
-
- public NameBuilder in(ConfigurationNode parent) {
+ public NameBuilder parent(ConfigurationNode parent) {
this.parent = Objects.requireNonNull(parent);
return this;
}
@@ -78,11 +68,52 @@ public class NameBuilder {
}
public String name() {
- String baseName = this.baseName != null && this.baseName.length() > 0
+ String baseName = this.baseName != null && !this.baseName.isEmpty()
? this.baseName
: nodeToName.acceptVisitor(DefaultBaseNameVisitor.INSTANCE);
String normalizedBaseName = nodeToName.acceptVisitor(new
NormalizationVisitor(baseName));
return nodeToName.acceptVisitor(new DeduplicationVisitor(parent,
normalizedBaseName, dupesPattern));
}
+
+ static class CallbackNameBuilder extends NameBuilder {
+
+ public CallbackNameBuilder() {
+ super(new CallbackNode());
+ }
+
+ @Override
+ public String name() {
+ String baseName = this.baseName != null
+ ? this.baseName
+ : "onEvent";
+
+ return new DeduplicationVisitor(parent, baseName,
dupesPattern).resolve(name -> {
+
+ ObjEntity entity = (ObjEntity) parent;
+
+ if (entity.getCallbackMethods().contains(name)) {
+ return true;
+ }
+
+ if (name.startsWith("get")) {
+ String conflictingProperty =
NameUtil.uncapitalize(name.substring(3));
+
+ // check if either attribute or relationship name
matches...
+ return entity.getAttribute(conflictingProperty) != null
+ || entity.getRelationship(conflictingProperty) !=
null;
+ }
+
+ return false;
+ });
+ }
+ }
+
+ static class CallbackNode implements ConfigurationNode {
+
+ @Override
+ public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor) {
+ return null;
+ }
+ }
}
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/PatternStemmer.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/PatternStemmer.java
index d57fa85ce..66edf28e6 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/PatternStemmer.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/PatternStemmer.java
@@ -26,7 +26,7 @@ import java.util.regex.Pattern;
*/
public class PatternStemmer implements DbEntityNameStemmer {
- private Pattern pattern;
+ private final Pattern pattern;
public PatternStemmer(String stripPattern, boolean caseSensitive) {
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java
index b331c4656..e4e82848c 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/ManyToManyCandidateEntity.java
@@ -100,7 +100,7 @@ class ManyToManyCandidateEntity {
ObjRelationship newRelationship = new ObjRelationship();
newRelationship.setName(NameBuilder
- .builder(newRelationship, srcEntity)
+ .of(newRelationship).parent(srcEntity)
.baseName(nameGenerator.relationshipName(rel1, rel2))
.name());
diff --git
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
index 76e3da376..4baf6a095 100644
---
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
+++
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
@@ -19,11 +19,6 @@
package org.apache.cayenne.dbsync.reverse.dbload;
-import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
-import java.util.Map;
-import java.util.Set;
-
import org.apache.cayenne.dbsync.naming.NameBuilder;
import org.apache.cayenne.dbsync.naming.ObjectNameGenerator;
import org.apache.cayenne.dbsync.reverse.filters.TableFilter;
@@ -34,6 +29,11 @@ import org.apache.cayenne.map.DbRelationship;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.util.Map;
+import java.util.Set;
+
public class RelationshipLoader extends AbstractLoader {
private static final Logger LOGGER =
LoggerFactory.getLogger(DbLoader.class);
@@ -104,7 +104,7 @@ public class RelationshipLoader extends AbstractLoader {
private void setRelationshipName(DbEntity entity, DbRelationship
relationship) {
relationship.setName(NameBuilder
- .builder(relationship, entity)
+ .of(relationship).parent(entity)
.baseName(nameGenerator.relationshipName(relationship))
.name());
}
diff --git
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameBuilderTest.java
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameBuilderTest.java
index 86ed87962..bf9288533 100644
---
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameBuilderTest.java
+++
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameBuilderTest.java
@@ -40,7 +40,7 @@ public class NameBuilderTest {
@Test
public void name_Root() {
- assertEquals("project", NameBuilder.builder(new
DataChannelDescriptor()).name());
+ assertEquals("project", NameBuilder.of(new
DataChannelDescriptor()).name());
}
@Test
@@ -48,22 +48,22 @@ public class NameBuilderTest {
DataChannelDescriptor descriptor = new DataChannelDescriptor();
DataMap m0 = new DataMap();
- m0.setName(NameBuilder.builder(m0).in(descriptor).name());
+ m0.setName(NameBuilder.of(m0).parent(descriptor).name());
assertEquals("datamap", m0.getName());
descriptor.getDataMaps().add(m0);
DataMap m1 = new DataMap();
- m1.setName(NameBuilder.builder(m1).in(descriptor).name());
+ m1.setName(NameBuilder.of(m1).parent(descriptor).name());
assertEquals("datamap1", m1.getName());
descriptor.getDataMaps().add(m1);
DataNodeDescriptor nd0 = new DataNodeDescriptor();
- nd0.setName(NameBuilder.builder(nd0).in(descriptor).name());
+ nd0.setName(NameBuilder.of(nd0).parent(descriptor).name());
assertEquals("datanode", nd0.getName());
descriptor.getNodeDescriptors().add(nd0);
DataNodeDescriptor nd1 = new DataNodeDescriptor();
- nd1.setName(NameBuilder.builder(nd1).in(descriptor).name());
+ nd1.setName(NameBuilder.of(nd1).parent(descriptor).name());
assertEquals("datanode1", nd1.getName());
descriptor.getNodeDescriptors().add(nd1);
}
@@ -75,62 +75,62 @@ public class NameBuilderTest {
map.setDefaultPackage("com.foo");
DbEntity de0 = new DbEntity();
- de0.setName(NameBuilder.builder(de0).in(map).name());
+ de0.setName(NameBuilder.of(de0).parent(map).name());
assertEquals("db_entity", de0.getName());
map.addDbEntity(de0);
DbEntity de1 = new DbEntity();
- de1.setName(NameBuilder.builder(de1).in(map).name());
+ de1.setName(NameBuilder.of(de1).parent(map).name());
assertEquals("db_entity1", de1.getName());
map.addDbEntity(de1);
ObjEntity oe0 = new ObjEntity();
- oe0.setName(NameBuilder.builder(oe0).in(map).name());
+ oe0.setName(NameBuilder.of(oe0).parent(map).name());
assertEquals("ObjEntity", oe0.getName());
map.addObjEntity(oe0);
ObjEntity oe1 = new ObjEntity();
- oe1.setName(NameBuilder.builder(oe1).in(map).name());
+ oe1.setName(NameBuilder.of(oe1).parent(map).name());
assertEquals("ObjEntity1", oe1.getName());
map.addObjEntity(oe1);
ObjEntity oe2 = new ObjEntity();
-
oe2.setName(NameBuilder.builder(oe0).in(map).baseName("db_entity").name());
+
oe2.setName(NameBuilder.of(oe0).parent(map).baseName("db_entity").name());
assertEquals("Db_entity", oe2.getName(), "Should not conflict with
similarly named DbEntity");
map.addObjEntity(oe2);
Procedure p0 = new Procedure();
- p0.setName(NameBuilder.builder(p0).in(map).name());
+ p0.setName(NameBuilder.of(p0).parent(map).name());
assertEquals("procedure", p0.getName());
map.addProcedure(p0);
Procedure p1 = new Procedure();
- p1.setName(NameBuilder.builder(p1).in(map).name());
+ p1.setName(NameBuilder.of(p1).parent(map).name());
assertEquals("procedure1", p1.getName());
map.addProcedure(p1);
Procedure p2 = new Procedure();
-
p2.setName(NameBuilder.builder(p1).in(map).baseName("db_enity").name());
+ p2.setName(NameBuilder.of(p1).parent(map).baseName("db_enity").name());
assertEquals("db_enity", p2.getName(), "Should not conflict with
similarly named DbEntity");
map.addProcedure(p2);
QueryDescriptor q0 = QueryDescriptor.selectQueryDescriptor();
- q0.setName(NameBuilder.builder(q0).in(map).name());
+ q0.setName(NameBuilder.of(q0).parent(map).name());
assertEquals("query", q0.getName());
map.addQueryDescriptor(q0);
QueryDescriptor q1 = QueryDescriptor.ejbqlQueryDescriptor();
- q1.setName(NameBuilder.builder(q1).in(map).name());
+ q1.setName(NameBuilder.of(q1).parent(map).name());
assertEquals("query1", q1.getName());
map.addQueryDescriptor(q1);
Embeddable e0 = new Embeddable();
- e0.setClassName("com.foo." + NameBuilder.builder(e0).in(map).name());
+ e0.setClassName("com.foo." + NameBuilder.of(e0).parent(map).name());
assertEquals("com.foo.Embeddable", e0.getClassName());
map.addEmbeddable(e0);
Embeddable e1 = new Embeddable();
- e1.setClassName("com.foo." + NameBuilder.builder(e1).in(map).name());
+ e1.setClassName("com.foo." + NameBuilder.of(e1).parent(map).name());
assertEquals("com.foo.Embeddable1", e1.getClassName());
map.addEmbeddable(e1);
}
@@ -143,31 +143,31 @@ public class NameBuilderTest {
entity.getCallbackMap().getPostAdd().addCallbackMethod("getMe");
ObjAttribute a0 = new ObjAttribute();
- String na0 = NameBuilder.builder(a0).in(entity).name();
+ String na0 = NameBuilder.of(a0).parent(entity).name();
assertEquals("untitledAttr", na0);
a0.setName(na0);
entity.addAttribute(a0);
ObjAttribute a1 = new ObjAttribute();
- String na1 = NameBuilder.builder(a1).in(entity).name();
+ String na1 = NameBuilder.of(a1).parent(entity).name();
assertEquals("untitledAttr1", na1);
a1.setName(na1);
entity.addAttribute(a1);
ObjAttribute a2 = new ObjAttribute();
- String na2 = NameBuilder.builder(a2).in(entity).baseName("me").name();
+ String na2 = NameBuilder.of(a2).parent(entity).baseName("me").name();
assertEquals("me1", na2, "Conflict with callback method was not
detected");
a2.setName(na2);
entity.addAttribute(a2);
ObjRelationship r0 = new ObjRelationship();
- String nr0 = NameBuilder.builder(r0).in(entity).name();
+ String nr0 = NameBuilder.of(r0).parent(entity).name();
assertEquals("untitledRel", nr0);
r0.setName(nr0);
entity.addRelationship(r0);
ObjRelationship r1 = new ObjRelationship();
- String nr1 = NameBuilder.builder(r1).in(entity).name();
+ String nr1 = NameBuilder.of(r1).parent(entity).name();
assertEquals("untitledRel1", nr1);
r1.setName(nr1);
entity.addRelationship(r1);
@@ -178,25 +178,25 @@ public class NameBuilderTest {
DbEntity entity = new DbEntity();
DbAttribute a0 = new DbAttribute();
- String na0 = NameBuilder.builder(a0).in(entity).name();
+ String na0 = NameBuilder.of(a0).parent(entity).name();
assertEquals("untitledAttr", na0);
a0.setName(na0);
entity.addAttribute(a0);
DbAttribute a1 = new DbAttribute();
- String na1 = NameBuilder.builder(a1).in(entity).name();
+ String na1 = NameBuilder.of(a1).parent(entity).name();
assertEquals("untitledAttr1", na1);
a1.setName(na1);
entity.addAttribute(a1);
DbRelationship r0 = new DbRelationship();
- String nr0 = NameBuilder.builder(r0).in(entity).name();
+ String nr0 = NameBuilder.of(r0).parent(entity).name();
assertEquals("untitledRel", nr0);
r0.setName(nr0);
entity.addRelationship(r0);
DbRelationship r1 = new DbRelationship();
- String nr1 = NameBuilder.builder(r1).in(entity).name();
+ String nr1 = NameBuilder.of(r1).parent(entity).name();
assertEquals("untitledRel1", nr1);
r1.setName(nr1);
entity.addRelationship(r1);
@@ -207,12 +207,12 @@ public class NameBuilderTest {
Procedure procedure = new Procedure();
ProcedureParameter p0 = new ProcedureParameter();
- p0.setName(NameBuilder.builder(p0).in(procedure).name());
+ p0.setName(NameBuilder.of(p0).parent(procedure).name());
assertEquals("UntitledProcedureParameter", p0.getName());
procedure.addCallParameter(p0);
ProcedureParameter p1 = new ProcedureParameter();
- p1.setName(NameBuilder.builder(p1).in(procedure).name());
+ p1.setName(NameBuilder.of(p1).parent(procedure).name());
assertEquals("UntitledProcedureParameter1", p1.getName());
procedure.addCallParameter(p1);
}
@@ -222,12 +222,12 @@ public class NameBuilderTest {
Embeddable embeddable = new Embeddable();
EmbeddableAttribute ea0 = new EmbeddableAttribute();
- ea0.setName(NameBuilder.builder(ea0).in(embeddable).name());
+ ea0.setName(NameBuilder.of(ea0).parent(embeddable).name());
assertEquals("untitledAttr", ea0.getName());
embeddable.addAttribute(ea0);
EmbeddableAttribute ea1 = new EmbeddableAttribute();
- ea1.setName(NameBuilder.builder(ea1).in(embeddable).name());
+ ea1.setName(NameBuilder.of(ea1).parent(embeddable).name());
assertEquals("untitledAttr1", ea1.getName());
embeddable.addAttribute(ea1);
}
@@ -238,13 +238,13 @@ public class NameBuilderTest {
ObjEntity entity = new ObjEntity();
ObjAttribute a0 = new ObjAttribute();
- String na0 =
NameBuilder.builder(a0).in(entity).baseName("myName").name();
+ String na0 =
NameBuilder.of(a0).parent(entity).baseName("myName").name();
assertEquals("myName", na0);
a0.setName(na0);
entity.addAttribute(a0);
ObjAttribute a1 = new ObjAttribute();
- String na1 =
NameBuilder.builder(a1).in(entity).baseName("MyName").name();
+ String na1 =
NameBuilder.of(a1).parent(entity).baseName("MyName").name();
assertEquals("myName1", na1);
a1.setName(na1);
entity.addAttribute(a1);
@@ -255,17 +255,17 @@ public class NameBuilderTest {
ObjEntity entity = new ObjEntity();
- String c0 = NameBuilder.builderForCallbackMethod(entity).name();
+ String c0 = NameBuilder.ofCallbackMethod().parent(entity).name();
assertEquals("onEvent", c0);
entity.getCallbackMap().getPostAdd().addCallbackMethod(c0);
- String c1 = NameBuilder.builderForCallbackMethod(entity).name();
+ String c1 = NameBuilder.ofCallbackMethod().parent(entity).name();
assertEquals("onEvent1", c1);
entity.getCallbackMap().getPostAdd().addCallbackMethod(c1);
entity.addAttribute(new ObjAttribute("untitledAttr"));
- String c3 =
NameBuilder.builderForCallbackMethod(entity).baseName("getUntitledAttr").name();
+ String c3 =
NameBuilder.ofCallbackMethod().parent(entity).baseName("getUntitledAttr").name();
assertEquals("getUntitledAttr1", c3);
entity.getCallbackMap().getPostAdd().addCallbackMethod(c3);
}
diff --git
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java
index 445b525c0..a46c34964 100644
---
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java
+++
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipsLoaderIT.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.dbsync.reverse.dbload;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.dbsync.naming.NoStemStemmer;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.junit.jupiter.api.Test;
@@ -55,7 +56,7 @@ public class RelationshipsLoaderIT extends BaseLoaderIT {
exportedKeyLoader.load(metaData, store);
// *** TESTING THIS ***
- RelationshipLoader relationshipLoader = new
RelationshipLoader(EMPTY_CONFIG, delegate, new DefaultObjectNameGenerator());
+ RelationshipLoader relationshipLoader = new
RelationshipLoader(EMPTY_CONFIG, delegate, new
DefaultObjectNameGenerator(NoStemStemmer.getInstance()));
relationshipLoader.load(metaData, store);
Collection<DbRelationship> rels =
getDbEntity("ARTIST").getRelationships();
@@ -94,7 +95,7 @@ public class RelationshipsLoaderIT extends BaseLoaderIT {
new PrimaryKeyLoader(EMPTY_CONFIG, delegate).load(metaData, store);
new ExportedKeyLoader(EMPTY_CONFIG, delegate).load(metaData, store);
- new RelationshipLoader(EMPTY_CONFIG, delegate, new
DefaultObjectNameGenerator()).load(metaData, store);
+ new RelationshipLoader(EMPTY_CONFIG, delegate, new
DefaultObjectNameGenerator(NoStemStemmer.getInstance())).load(metaData, store);
// COMPOUND_FK_TEST has a 2-column FK (F_KEY1, F_KEY2) ->
COMPOUND_PK_TEST (KEY1, KEY2)
DbEntity fkEntity = getDbEntity("COMPOUND_FK_TEST");
@@ -131,7 +132,7 @@ public class RelationshipsLoaderIT extends BaseLoaderIT {
new PrimaryKeyLoader(EMPTY_CONFIG, delegate).load(metaData, store);
new ExportedKeyLoader(EMPTY_CONFIG, delegate).load(metaData, store);
- new RelationshipLoader(EMPTY_CONFIG, delegate, new
DefaultObjectNameGenerator()).load(metaData, store);
+ new RelationshipLoader(EMPTY_CONFIG, delegate, new
DefaultObjectNameGenerator(NoStemStemmer.getInstance())).load(metaData, store);
// TWO_FK_B has two separate single-column FKs (A_ID1, A_ID2) ->
TWO_FK_A (ID)
DbEntity bEntity = getDbEntity("TWO_FK_B");
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/NameGeneratorPreferences.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/NameGeneratorPreferences.java
index 06d41e6b7..033aa9593 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/NameGeneratorPreferences.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/NameGeneratorPreferences.java
@@ -74,7 +74,7 @@ public class NameGeneratorPreferences {
// move to top
strategies.remove(strategy);
- strategies.add(0, strategy);
+ strategies.addFirst(strategy);
StringBuilder res = new StringBuilder();
for (String str : strategies) {
@@ -88,6 +88,6 @@ public class NameGeneratorPreferences {
public ObjectNameGenerator createNamingStrategy(Application application)
throws Exception {
return application.getClassLoader()
- .loadClass(ObjectNameGenerator.class,
getLastUsedStrategies(application).get(0)).getDeclaredConstructor().newInstance();
+ .loadClass(ObjectNameGenerator.class,
getLastUsedStrategies(application).getFirst()).getDeclaredConstructor().newInstance();
}
}
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateAttributeAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateAttributeAction.java
index 7f0c42983..deaa71cb8 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateAttributeAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateAttributeAction.java
@@ -110,7 +110,7 @@ public class CreateAttributeAction extends AppAction {
EmbeddableAttribute attr = new EmbeddableAttribute();
attr.setName(NameBuilder
- .builder(attr, embeddable)
+ .of(attr).parent(embeddable)
.name());
createEmbAttribute(embeddable, attr);
@@ -124,7 +124,7 @@ public class CreateAttributeAction extends AppAction {
ObjEntity objEntity = session.getSelectedObjEntity();
ObjAttribute attr = new ObjAttribute();
- attr.setName(NameBuilder.builder(attr, objEntity).name());
+ attr.setName(NameBuilder.of(attr).parent(objEntity).name());
createObjAttribute(session.getSelectedDataMap(), objEntity, attr);
@@ -135,7 +135,7 @@ public class CreateAttributeAction extends AppAction {
DbEntity dbEntity = getProjectSession().getSelectedDbEntity();
DbAttribute attr = new DbAttribute();
- attr.setName(NameBuilder.builder(attr, dbEntity).name());
+ attr.setName(NameBuilder.of(attr).parent(dbEntity).name());
attr.setType(TypesMapping.NOT_DEFINED);
attr.setEntity(dbEntity);
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateCallbackMethodAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateCallbackMethodAction.java
index 13e670fd0..5597addec 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateCallbackMethodAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateCallbackMethodAction.java
@@ -56,7 +56,7 @@ public class CreateCallbackMethodAction extends AppAction {
CallbackType callbackType =
getProjectSession().getSelectedCallbackType();
String methodName = NameBuilder
-
.builderForCallbackMethod(getProjectSession().getSelectedObjEntity())
+
.ofCallbackMethod().parent(getProjectSession().getSelectedObjEntity())
.baseName(toMethodName(callbackType.getType()))
.name();
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDataMapAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDataMapAction.java
index 5b90a21f0..691715069 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDataMapAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDataMapAction.java
@@ -73,7 +73,7 @@ public class CreateDataMapAction extends AppAction {
.getRootNode();
DataMap map = new DataMap();
- map.setName(NameBuilder.builder(map, dataChannelDescriptor).name());
+ map.setName(NameBuilder.of(map).parent(dataChannelDescriptor).name());
onMapCreated(this, getProjectSession(), map);
app.getUndoManager().addEdit(new
CreateDataMapUndoableEdit(getProjectSession(), dataChannelDescriptor, map));
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDbEntityAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDbEntityAction.java
index 52737f2f4..606cd1feb 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDbEntityAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateDbEntityAction.java
@@ -63,7 +63,7 @@ public class CreateDbEntityAction extends AppAction {
public void performAction(ActionEvent e) {
DataMap map = getProjectSession().getSelectedDataMap();
DbEntity entity = new DbEntity();
- entity.setName(NameBuilder.builder(entity, map).name());
+ entity.setName(NameBuilder.of(entity).parent(map).name());
createEntity(map, entity);
app.getUndoManager().addEdit(new
CreateDbEntityUndoableEdit(getProjectSession(), map, entity));
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateEmbeddableAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateEmbeddableAction.java
index 3761c7603..26e4d1944 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateEmbeddableAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateEmbeddableAction.java
@@ -68,7 +68,7 @@ public class CreateEmbeddableAction extends AppAction {
DataMap dataMap = getProjectSession().getSelectedDataMap();
Embeddable embeddable = new Embeddable();
- String baseName = NameBuilder.builder(embeddable, dataMap).name();
+ String baseName = NameBuilder.of(embeddable).parent(dataMap).name();
String nameWithPackage = dataMap.getNameWithDefaultPackage(baseName);
embeddable.setClassName(nameWithPackage);
createEmbeddable(dataMap, embeddable);
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateNodeAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateNodeAction.java
index f7fb5127b..92c105ef9 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateNodeAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateNodeAction.java
@@ -91,7 +91,7 @@ public class CreateNodeAction extends AppAction {
*/
DataNodeDescriptor buildDataNode(DataChannelDescriptor
dataChannelDescriptor) {
DataNodeDescriptor node = new DataNodeDescriptor();
- node.setName(NameBuilder.builder(node, dataChannelDescriptor).name());
+
node.setName(NameBuilder.of(node).parent(dataChannelDescriptor).name());
node.setDataChannelDescriptor(dataChannelDescriptor);
return node;
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 a42765085..f0ca27c81 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
@@ -76,7 +76,7 @@ public class CreateObjEntityAction extends AppAction {
DataMap dataMap = session.getSelectedDataMap();
ObjEntity entity = new ObjEntity();
- entity.setName(NameBuilder.builder(entity, dataMap).name());
+ entity.setName(NameBuilder.of(entity).parent(dataMap).name());
// init defaults
entity.setSuperClassName(dataMap.getDefaultSuperclass());
@@ -89,7 +89,7 @@ public class CreateObjEntityAction extends AppAction {
// TODO: use injectable name generator
String baseName = new
DefaultObjectNameGenerator(NoStemStemmer.getInstance()).objEntityName(dbEntity);
entity.setName(NameBuilder
- .builder(entity, dbEntity.getDataMap())
+ .of(entity).parent(dbEntity.getDataMap())
.baseName(baseName)
.name());
}
@@ -101,7 +101,7 @@ public class CreateObjEntityAction extends AppAction {
// TODO: Modeler-controlled defaults for all the hardcoded boolean
flags here.
EntityMergeSupport merger = new EntityMergeSupport(new
DefaultObjectNameGenerator(NoStemStemmer.getInstance()),
NamePatternMatcher.EXCLUDE_ALL, true, false);
- merger.setNameGenerator(new
DbEntitySyncAction.PreserveRelationshipNameGenerator());
+ merger.setNameGenerator(new
DbEntitySyncAction.PreserveRelationshipNameGenerator(NoStemStemmer.getInstance()));
merger.addEntityMergeListener(DeleteRuleUpdater.getEntityMergeListener());
merger.synchronizeWithDbEntity(entity);
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureAction.java
index 96e3e1a45..3507c76c3 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureAction.java
@@ -61,7 +61,7 @@ public class CreateProcedureAction extends AppAction {
DataMap map = getProjectSession().getSelectedDataMap();
Procedure procedure = new Procedure();
- procedure.setName(NameBuilder.builder(procedure, map).name());
+ procedure.setName(NameBuilder.of(procedure).parent(map).name());
createProcedure(map, procedure);
app.getUndoManager().addEdit(new
CreateProcedureUndoableEdit(getProjectSession(), map, procedure));
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureParameterAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureParameterAction.java
index d6519ff0a..703c1c554 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureParameterAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/CreateProcedureParameterAction.java
@@ -71,7 +71,7 @@ public class CreateProcedureParameterAction extends AppAction
{
if (getProjectSession().getSelectedProcedure() != null) {
Procedure procedure = getProjectSession().getSelectedProcedure();
ProcedureParameter parameter = new ProcedureParameter();
- parameter.setName(NameBuilder.builder(parameter,
procedure).name());
+
parameter.setName(NameBuilder.of(parameter).parent(procedure).name());
createProcedureParameter(procedure, parameter);
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 64048e9be..d1c05ac39 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,7 +21,9 @@ 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.DbEntityNameStemmer;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.dbsync.naming.NoStemStemmer;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
@@ -40,8 +42,7 @@ import java.awt.event.KeyEvent;
import java.util.Collection;
/**
- * Action that synchronizes all ObjEntities with the current state of the
- * selected DbEntity.
+ * Action that synchronizes all ObjEntities with the current state of the
selected DbEntity.
*/
public class DbEntitySyncAction extends AppAction {
@@ -54,18 +55,13 @@ public class DbEntitySyncAction extends AppAction {
return KeyStroke.getKeyStroke(KeyEvent.VK_U,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx());
}
+ @Override
public String getIconName() {
return "icon-sync.png";
}
- /**
- * @see AppAction#performAction(ActionEvent)
- */
+ @Override
public void performAction(ActionEvent e) {
- syncDbEntity();
- }
-
- protected void syncDbEntity() {
ProjectSession session = getProjectSession();
DbEntity dbEntity = session.getSelectedDbEntity();
@@ -85,7 +81,7 @@ public class DbEntitySyncAction extends AppAction {
return;
}
- merger.setNameGenerator(new PreserveRelationshipNameGenerator());
+ merger.setNameGenerator(new
PreserveRelationshipNameGenerator(NoStemStemmer.getInstance()));
DbEntitySyncUndoableEdit undoableEdit = new
DbEntitySyncUndoableEdit(session,
(DataChannelDescriptor) session.project().getRootNode(),
session.getSelectedDataMap());
@@ -133,6 +129,10 @@ public class DbEntitySyncAction extends AppAction {
static class PreserveRelationshipNameGenerator extends
DefaultObjectNameGenerator {
+ public PreserveRelationshipNameGenerator(DbEntityNameStemmer
dbEntityNameStemmer) {
+ super(dbEntityNameStemmer);
+ }
+
@Override
public String relationshipName(DbRelationship... relationshipChain) {
if (relationshipChain.length == 0) {
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java
index 4e6b27c49..e515145ff 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportDataMapAction.java
@@ -78,7 +78,7 @@ public class ImportDataMapAction extends AppAction {
ConfigurationNode root =
getProjectSession().project().getRootNode();
newMap.setName(NameBuilder
- .builder(newMap, root)
+ .of(newMap).parent(root)
.baseName(newMap.getName())
.name());
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
index 0e5501553..61bad0719 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/ImportEOModelAction.java
@@ -285,7 +285,7 @@ public class ImportEOModelAction extends AppAction {
// fix DataMap name, as there maybe a map with the same name
already
ConfigurationNode root = session.project().getRootNode();
map.setName(NameBuilder
- .builder(map, root)
+ .of(map).parent(root)
.baseName(map.getName())
.name());
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/NewProjectAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/NewProjectAction.java
index 1d9ee18de..397bca333 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/NewProjectAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/NewProjectAction.java
@@ -61,11 +61,10 @@ public class NewProjectAction extends AppAction {
DataChannelDescriptor dataChannelDescriptor = new
DataChannelDescriptor();
dataChannelDescriptor.setName(NameBuilder
- .builder(dataChannelDescriptor)
+ .of(dataChannelDescriptor)
.name());
- Project project = new Project(
- new
ConfigurationTree<DataChannelDescriptor>(dataChannelDescriptor));
+ Project project = new Project(new
ConfigurationTree<>(dataChannelDescriptor));
controller.onProjectOpened(project, null);
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 626f777fe..2c2c025fe 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
@@ -21,6 +21,7 @@ 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.NoStemStemmer;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.modeler.event.model.ObjEntityEvent;
import org.apache.cayenne.modeler.Application;
@@ -78,7 +79,7 @@ public class ObjEntitySyncAction extends AppAction {
return;
}
- merger.setNameGenerator(new
DbEntitySyncAction.PreserveRelationshipNameGenerator());
+ merger.setNameGenerator(new
DbEntitySyncAction.PreserveRelationshipNameGenerator(NoStemStemmer.getInstance()));
if (merger.synchronizeWithDbEntity(entity)) {
session
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
index 26949af8c..dd09b1851 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/action/PasteAction.java
@@ -158,7 +158,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
// paste DataMap to DataDomain or DataNode
dataMap.setName(NameBuilder
- .builder(dataMap, dataChannelDescriptor)
+ .of(dataMap).parent(dataChannelDescriptor)
.baseName(dataMap.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -173,7 +173,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
for (DbEntity dbEntity : dataMap.getDbEntities()) {
String oldName = dbEntity.getName();
dbEntity.setName(NameBuilder
- .builder(dbEntity, dataMap)
+ .of(dbEntity).parent(dataMap)
.baseName(dbEntity.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -186,7 +186,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
for (ObjEntity objEntity : dataMap.getObjEntities()) {
String oldName = objEntity.getName();
objEntity.setName(NameBuilder
- .builder(objEntity, dataMap)
+ .of(objEntity).parent(dataMap)
.baseName(objEntity.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -198,7 +198,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
for (Embeddable embeddable : dataMap.getEmbeddables()) {
embeddable.setClassName(NameBuilder
- .builder(embeddable, dataMap)
+ .of(embeddable).parent(dataMap)
.baseName(embeddable.getClassName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -206,14 +206,14 @@ public class PasteAction extends AppAction implements
FlavorListener {
for (Procedure procedure : dataMap.getProcedures()) {
procedure.setName(NameBuilder
- .builder(procedure, dataMap)
+ .of(procedure).parent(dataMap)
.baseName(procedure.getName())
.dupesPattern(COPY_PATTERN)
.name());
}
for (QueryDescriptor query : dataMap.getQueryDescriptors()) {
- query.setName(NameBuilder.builder(query, dataMap)
+ query.setName(NameBuilder.of(query).parent(dataMap)
.baseName(query.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -256,7 +256,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
if (content instanceof DbEntity dbEntity) {
dbEntity.setName(NameBuilder
- .builder(dbEntity, dataMap)
+ .of(dbEntity).parent(dataMap)
.baseName(dbEntity.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -265,7 +265,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
CreateDbEntityAction.onDbEntityCreated(this, session,
dbEntity);
} else if (content instanceof ObjEntity objEntity) {
// paste ObjEntity to DataMap
- objEntity.setName(NameBuilder.builder(objEntity, dataMap)
+ objEntity.setName(NameBuilder.of(objEntity).parent(dataMap)
.baseName(objEntity.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -279,7 +279,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
} else if (content instanceof Embeddable embeddable) {
// paste Embeddable to DataMap
embeddable.setClassName(NameBuilder
- .builder(embeddable, dataMap)
+ .of(embeddable).parent(dataMap)
.baseName(embeddable.getClassName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -293,7 +293,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
} else if (content instanceof QueryDescriptor query) {
query.setName(NameBuilder
- .builder(query, dataMap)
+ .of(query).parent(dataMap)
.dupesPattern(COPY_PATTERN)
.baseName(query.getName())
.name());
@@ -304,7 +304,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
} else if (content instanceof Procedure procedure) {
// paste Procedure to DataMap
procedure.setName(NameBuilder
- .builder(procedure, dataMap)
+ .of(procedure).parent(dataMap)
.dupesPattern(COPY_PATTERN)
.baseName(procedure.getName())
.name());
@@ -320,7 +320,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
if (content instanceof DbAttribute attr) {
attr.setName(NameBuilder
- .builder(attr, dbEntity)
+ .of(attr).parent(dbEntity)
.dupesPattern(COPY_PATTERN)
.baseName(attr.getName())
.name());
@@ -330,7 +330,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
.getSelectedDataMap(), dbEntity, attr);
} else if (content instanceof DbRelationship rel) {
rel.setName(NameBuilder
- .builder(rel, dbEntity)
+ .of(rel).parent(dbEntity)
.baseName(rel.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -346,7 +346,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
if (content instanceof ObjAttribute attr) {
attr.setName(NameBuilder
- .builder(attr, objEntity)
+ .of(attr).parent(objEntity)
.baseName(attr.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -356,7 +356,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
.getSelectedDataMap(), objEntity, attr);
} else if (content instanceof ObjRelationship rel) {
rel.setName(NameBuilder
- .builder(rel, objEntity)
+ .of(rel).parent(objEntity)
.baseName(rel.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -370,7 +370,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
} else if (content instanceof ObjCallbackMethod method) {
method.setName(NameBuilder
- .builderForCallbackMethod(objEntity)
+ .ofCallbackMethod().parent(objEntity)
.baseName(method.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -387,7 +387,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
if (content instanceof EmbeddableAttribute attr) {
attr.setName(NameBuilder
- .builder(attr, embeddable)
+ .of(attr).parent(embeddable)
.baseName(attr.getName())
.dupesPattern(COPY_PATTERN)
.name());
@@ -406,7 +406,7 @@ public class PasteAction extends AppAction implements
FlavorListener {
if (content instanceof ProcedureParameter param) {
param.setName(NameBuilder
- .builder(param, procedure)
+ .of(param).parent(procedure)
.baseName(param.getName())
.dupesPattern(COPY_PATTERN)
.name());
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
index 9e5b29f94..bdecb3f23 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/dbrelationship/DbRelationshipDialog.java
@@ -93,7 +93,7 @@ public class DbRelationshipDialog extends ProjectDialog {
public static Optional<DbRelationship> openForCreate(ProjectSession
session, Window owner, DbEntity sourceEntity) {
DbRelationship relationship = new DbRelationship();
- relationship.setName(NameBuilder.builder(relationship,
sourceEntity).name());
+
relationship.setName(NameBuilder.of(relationship).parent(sourceEntity).name());
relationship.setSourceEntity(sourceEntity);
DbRelationshipDialog dialog = new DbRelationshipDialog(session, owner,
relationship, true);
@@ -347,7 +347,7 @@ public class DbRelationshipDialog extends ProjectDialog {
if (reverse == null) {
reverse = new DbRelationship();
reverse.setName(NameBuilder
- .builder(reverse, relationship.getTargetEntity())
+ .of(reverse).parent(relationship.getTargetEntity())
.baseName(reverseName.getText().trim())
.name());
@@ -455,7 +455,7 @@ public class DbRelationshipDialog extends ProjectDialog {
}
String newName = NameBuilder
- .builder(rel, rel.getSourceEntity())
+ .of(rel).parent(rel.getSourceEntity())
.baseName(userInputName)
.name();
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
index 9c318c6b1..5cfafbaed 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/objentity/relinfo/ObjRelationshipInfoDialog.java
@@ -139,7 +139,7 @@ public class ObjRelationshipInfoDialog extends
ProjectDialog implements TreeSele
public ObjRelationshipInfoDialog createRelationship(ObjEntity objEntity) {
ObjRelationship rel = new ObjRelationship();
- rel.setName(NameBuilder.builder(rel, objEntity).name());
+ rel.setName(NameBuilder.of(rel).parent(objEntity).name());
rel.setSourceEntity(objEntity);
DeleteRuleUpdater.updateObjRelationship(rel);
isCreate = true;
diff --git
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
index 1054f7141..3ab4c555e 100644
---
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
+++
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/querytype/QueryTypeDialog.java
@@ -115,7 +115,7 @@ public class QueryTypeDialog extends ProjectDialog {
private void createQuery() {
QueryDescriptor query =
QueryDescriptor.descriptor(selectedQueryType());
- query.setName(NameBuilder.builder(query, dataMap).name());
+ query.setName(NameBuilder.of(query).parent(dataMap).name());
query.setDataMap(dataMap);
dataMap.addQueryDescriptor(query);
diff --git
a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
index fc22630da..cc7b78fa8 100644
---
a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
+++
b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
@@ -39,7 +39,6 @@ import org.apache.cayenne.wocompat.parser.Parser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.sql.Types;
@@ -685,7 +684,7 @@ public class EOModelProcessor {
if (relationship.getReverseRelationship() == null) {
DbRelationship reverse =
relationship.createReverseRelationship();
- reverse.setName(NameBuilder.builder(reverse,
reverse.getSourceEntity())
+
reverse.setName(NameBuilder.of(reverse).parent(reverse.getSourceEntity())
// TODO: we can do better with
ObjectNameGenerator
.baseName(relationship.getName() + "Reverse")
.name());