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/09/30 18:04:57 UTC
[1/5] cayenne git commit: CAY-2116 Split schema synchronization code
in a separate module
Repository: cayenne
Updated Branches:
refs/heads/master fc27ef7ae -> ad9447556
CAY-2116 Split schema synchronization code in a separate module
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/3e03bc11
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/3e03bc11
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/3e03bc11
Branch: refs/heads/master
Commit: 3e03bc1155555a364b3acec06442442d760c1048
Parents: fc27ef7
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Sep 30 17:34:49 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Sep 30 17:53:47 2016 +0300
----------------------------------------------------------------------
.../cayenne/dbsync/reverse/db/DbLoader.java | 1 -
.../cayenne/dbsync/reverse/db/ExportedKey.java | 270 +++++++++++++++++++
.../reverse/db/ManyToManyCandidateEntity.java | 1 -
.../naming/DefaultObjectNameGenerator.java | 2 +-
.../naming/LegacyObjectNameGenerator.java | 2 +-
.../reverse/naming/ObjectNameGenerator.java | 2 +-
.../naming/DefaultObjectNameGeneratorTest.java | 2 +-
.../naming/LegacyObjectNameGeneratorTest.java | 3 +-
.../apache/cayenne/map/naming/ExportedKey.java | 270 -------------------
.../InferRelationshipsControllerBase.java | 2 +-
.../dialog/objentity/ObjRelationshipInfo.java | 2 +-
11 files changed, 277 insertions(+), 280 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
index a522ab2..2811981 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
@@ -35,7 +35,6 @@ import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
-import org.apache.cayenne.map.naming.ExportedKey;
import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java
new file mode 100644
index 0000000..080d6c4
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ExportedKey.java
@@ -0,0 +1,270 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.reverse.db;
+
+import org.apache.cayenne.util.EqualsBuilder;
+import org.apache.cayenne.util.HashCodeBuilder;
+import org.apache.commons.lang.builder.CompareToBuilder;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ * ExportedKey is an representation of relationship between two tables
+ * in database. It can be used for creating names for relationships
+ *
+ * Example:
+ * Table A with primary key ID
+ * Table B with primary key ID and foreign key A_ID
+ *
+ * In that case ExportedKey will be:
+ * pkTable: A
+ * pkColumn: A.ID
+ * fkTable: B
+ * fkColumn: B.A_ID
+ * fkName: name of foreign key
+ * pkName:
+ * keySeq: TODO
+ *
+ */
+public class ExportedKey implements Comparable {
+
+ public final String pkCatalog;
+ public final String pkSchema;
+ /**
+ * Name of source table
+ */
+ public final String pkTable;
+
+ /**
+ * Name of source column
+ */
+ public final String pkColumn;
+
+ public final String fkCatalog;
+ public final String fkSchema;
+ /**
+ * Name of destination table
+ */
+ public final String fkTable;
+
+ /**
+ * Name of destination column
+ */
+ public final String fkColumn;
+
+ /**
+ * Name of foreign key (might be null)
+ */
+ public final String fkName;
+
+ /**
+ * Name of primary key (might be null)
+ */
+ public final String pkName;
+
+
+ public final short keySeq;
+
+ public ExportedKey(String pkTable, String pkColumn, String pkName,
+ String fkTable, String fkColumn, String fkName, short keySeq) {
+ this(null, null, pkTable, pkColumn, pkName, null, null, fkTable, fkColumn, fkName, keySeq);
+ }
+
+ public ExportedKey(String pkCatalog, String pkSchema, String pkTable, String pkColumn, String pkName,
+ String fkCatalog, String fkSchema, String fkTable, String fkColumn, String fkName, short keySeq) {
+ this.pkCatalog = pkCatalog;
+ this.pkSchema = pkSchema;
+ this.pkTable = pkTable;
+ this.pkColumn = pkColumn;
+ this.pkName = pkName;
+ this.fkCatalog = fkCatalog;
+ this.fkSchema = fkSchema;
+ this.fkTable = fkTable;
+ this.fkColumn = fkColumn;
+ this.fkName = fkName;
+ this.keySeq = keySeq;
+ }
+
+ /**
+ * Extracts data from a resultset pointing to a exported key to
+ * ExportedKey class instance
+ *
+ * @param rs ResultSet pointing to a exported key, fetched using
+ * DataBaseMetaData.getExportedKeys(...)
+ */
+ public static ExportedKey extractData(ResultSet rs) throws SQLException {
+ return new ExportedKey(
+ rs.getString("PKTABLE_CAT"),
+ rs.getString("PKTABLE_SCHEM"),
+ rs.getString("PKTABLE_NAME"),
+ rs.getString("PKCOLUMN_NAME"),
+ rs.getString("PK_NAME"),
+ rs.getString("FKTABLE_CAT"),
+ rs.getString("FKTABLE_SCHEM"),
+ rs.getString("FKTABLE_NAME"),
+ rs.getString("FKCOLUMN_NAME"),
+ rs.getString("FK_NAME"),
+ rs.getShort("KEY_SEQ")
+ );
+ }
+
+
+ public String getPkCatalog() {
+ return pkCatalog;
+ }
+
+ public String getPkSchema() {
+ return pkSchema;
+ }
+
+ public String getFkCatalog() {
+ return fkCatalog;
+ }
+
+ public String getFkSchema() {
+ return fkSchema;
+ }
+
+ /**
+ * @return source table name
+ */
+ public String getPKTableName() {
+ return pkTable;
+ }
+
+ /**
+ * @return destination table name
+ */
+ public String getFKTableName() {
+ return fkTable;
+ }
+
+ /**
+ * @return source column name
+ */
+ public String getPKColumnName() {
+ return pkColumn;
+ }
+
+ /**
+ * @return destination column name
+ */
+ public String getFKColumnName() {
+ return fkColumn;
+ }
+
+ /**
+ * @return PK name
+ */
+ public String getPKName() {
+ return pkName;
+ }
+
+ /**
+ * @return FK name
+ */
+ public String getFKName() {
+ return fkName;
+ }
+
+ public short getKeySeq() {
+ return keySeq;
+ }
+
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (obj == this) {
+ return true;
+ }
+ if (obj.getClass() != getClass()) {
+ return false;
+ }
+ ExportedKey rhs = (ExportedKey) obj;
+ return new EqualsBuilder()
+ .append(this.pkCatalog, rhs.pkCatalog)
+ .append(this.pkSchema, rhs.pkSchema)
+ .append(this.pkTable, rhs.pkTable)
+ .append(this.pkColumn, rhs.pkColumn)
+ .append(this.fkCatalog, rhs.fkCatalog)
+ .append(this.fkSchema, rhs.fkSchema)
+ .append(this.fkTable, rhs.fkTable)
+ .append(this.fkColumn, rhs.fkColumn)
+ .append(this.fkName, rhs.fkName)
+ .append(this.pkName, rhs.pkName)
+ .append(this.keySeq, rhs.keySeq)
+ .isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(pkCatalog)
+ .append(pkSchema)
+ .append(pkTable)
+ .append(pkColumn)
+ .append(fkCatalog)
+ .append(fkSchema)
+ .append(fkTable)
+ .append(fkColumn)
+ .append(fkName)
+ .append(pkName)
+ .append(keySeq)
+ .toHashCode();
+ }
+
+ @Override
+ public int compareTo(Object obj) {
+ if (obj == null || !obj.getClass().equals(getClass())) {
+ throw new IllegalArgumentException();
+ }
+ if (obj == this) {
+ return 0;
+ }
+
+ ExportedKey rhs = (ExportedKey) obj;
+ return new CompareToBuilder()
+ .append(pkCatalog, rhs.pkCatalog)
+ .append(pkSchema, rhs.pkSchema)
+ .append(pkTable, rhs.pkTable)
+ .append(pkName, rhs.pkName)
+ .append(fkCatalog, rhs.fkCatalog)
+ .append(fkSchema, rhs.fkSchema)
+ .append(fkTable, rhs.fkTable)
+ .append(fkName, rhs.fkName)
+ .append(keySeq, rhs.keySeq)
+ .append(pkColumn, rhs.pkColumn)
+ .append(fkColumn, rhs.fkColumn)
+ .toComparison();
+ }
+
+ @Override
+ public String toString() {
+ return getStrKey() + " # " + keySeq;
+ }
+
+ public String getStrKey() {
+ return pkCatalog + "." + pkSchema + "." + pkTable + "." + pkColumn
+ + " <- " + fkCatalog + "." + fkSchema + "." + fkTable + "." + fkColumn;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
index e912ab1..718015b 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
-import org.apache.cayenne.map.naming.ExportedKey;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.commons.logging.Log;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
index a2ec096..8cb59db 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dbsync.reverse.naming;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.apache.cayenne.map.naming.NameConverter;
import org.jvnet.inflector.Noun;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
index 11ac007..47e7ea5 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dbsync.reverse.naming;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.apache.cayenne.map.naming.NameConverter;
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/ObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/ObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/ObjectNameGenerator.java
index 8922190..da45ab3 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/ObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/ObjectNameGenerator.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dbsync.reverse.naming;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
/**
* ObjectNameGenerator is a strategy for creating names for entities,
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGeneratorTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGeneratorTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGeneratorTest.java
index 0a70fdb..a29c786 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGeneratorTest.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGeneratorTest.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dbsync.reverse.naming;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGeneratorTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGeneratorTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGeneratorTest.java
index 750dcd2..ea4902d 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGeneratorTest.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGeneratorTest.java
@@ -18,11 +18,10 @@
****************************************************************/
package org.apache.cayenne.dbsync.reverse.naming;
-import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
deleted file mode 100644
index 9a415d8..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ExportedKey.java
+++ /dev/null
@@ -1,270 +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
- *
- * http://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.map.naming;
-
-import org.apache.cayenne.util.EqualsBuilder;
-import org.apache.cayenne.util.HashCodeBuilder;
-import org.apache.commons.lang.builder.CompareToBuilder;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * ExportedKey is an representation of relationship between two tables
- * in database. It can be used for creating names for relationships
- *
- * Example:
- * Table A with primary key ID
- * Table B with primary key ID and foreign key A_ID
- *
- * In that case ExportedKey will be:
- * pkTable: A
- * pkColumn: A.ID
- * fkTable: B
- * fkColumn: B.A_ID
- * fkName: name of foreign key
- * pkName:
- * keySeq: TODO
- *
- */
-public class ExportedKey implements Comparable {
-
- public final String pkCatalog;
- public final String pkSchema;
- /**
- * Name of source table
- */
- public final String pkTable;
-
- /**
- * Name of source column
- */
- public final String pkColumn;
-
- public final String fkCatalog;
- public final String fkSchema;
- /**
- * Name of destination table
- */
- public final String fkTable;
-
- /**
- * Name of destination column
- */
- public final String fkColumn;
-
- /**
- * Name of foreign key (might be null)
- */
- public final String fkName;
-
- /**
- * Name of primary key (might be null)
- */
- public final String pkName;
-
-
- public final short keySeq;
-
- public ExportedKey(String pkTable, String pkColumn, String pkName,
- String fkTable, String fkColumn, String fkName, short keySeq) {
- this(null, null, pkTable, pkColumn, pkName, null, null, fkTable, fkColumn, fkName, keySeq);
- }
-
- public ExportedKey(String pkCatalog, String pkSchema, String pkTable, String pkColumn, String pkName,
- String fkCatalog, String fkSchema, String fkTable, String fkColumn, String fkName, short keySeq) {
- this.pkCatalog = pkCatalog;
- this.pkSchema = pkSchema;
- this.pkTable = pkTable;
- this.pkColumn = pkColumn;
- this.pkName = pkName;
- this.fkCatalog = fkCatalog;
- this.fkSchema = fkSchema;
- this.fkTable = fkTable;
- this.fkColumn = fkColumn;
- this.fkName = fkName;
- this.keySeq = keySeq;
- }
-
- /**
- * Extracts data from a resultset pointing to a exported key to
- * ExportedKey class instance
- *
- * @param rs ResultSet pointing to a exported key, fetched using
- * DataBaseMetaData.getExportedKeys(...)
- */
- public static ExportedKey extractData(ResultSet rs) throws SQLException {
- return new ExportedKey(
- rs.getString("PKTABLE_CAT"),
- rs.getString("PKTABLE_SCHEM"),
- rs.getString("PKTABLE_NAME"),
- rs.getString("PKCOLUMN_NAME"),
- rs.getString("PK_NAME"),
- rs.getString("FKTABLE_CAT"),
- rs.getString("FKTABLE_SCHEM"),
- rs.getString("FKTABLE_NAME"),
- rs.getString("FKCOLUMN_NAME"),
- rs.getString("FK_NAME"),
- rs.getShort("KEY_SEQ")
- );
- }
-
-
- public String getPkCatalog() {
- return pkCatalog;
- }
-
- public String getPkSchema() {
- return pkSchema;
- }
-
- public String getFkCatalog() {
- return fkCatalog;
- }
-
- public String getFkSchema() {
- return fkSchema;
- }
-
- /**
- * @return source table name
- */
- public String getPKTableName() {
- return pkTable;
- }
-
- /**
- * @return destination table name
- */
- public String getFKTableName() {
- return fkTable;
- }
-
- /**
- * @return source column name
- */
- public String getPKColumnName() {
- return pkColumn;
- }
-
- /**
- * @return destination column name
- */
- public String getFKColumnName() {
- return fkColumn;
- }
-
- /**
- * @return PK name
- */
- public String getPKName() {
- return pkName;
- }
-
- /**
- * @return FK name
- */
- public String getFKName() {
- return fkName;
- }
-
- public short getKeySeq() {
- return keySeq;
- }
-
-
- @Override
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (obj == this) {
- return true;
- }
- if (obj.getClass() != getClass()) {
- return false;
- }
- ExportedKey rhs = (ExportedKey) obj;
- return new EqualsBuilder()
- .append(this.pkCatalog, rhs.pkCatalog)
- .append(this.pkSchema, rhs.pkSchema)
- .append(this.pkTable, rhs.pkTable)
- .append(this.pkColumn, rhs.pkColumn)
- .append(this.fkCatalog, rhs.fkCatalog)
- .append(this.fkSchema, rhs.fkSchema)
- .append(this.fkTable, rhs.fkTable)
- .append(this.fkColumn, rhs.fkColumn)
- .append(this.fkName, rhs.fkName)
- .append(this.pkName, rhs.pkName)
- .append(this.keySeq, rhs.keySeq)
- .isEquals();
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder()
- .append(pkCatalog)
- .append(pkSchema)
- .append(pkTable)
- .append(pkColumn)
- .append(fkCatalog)
- .append(fkSchema)
- .append(fkTable)
- .append(fkColumn)
- .append(fkName)
- .append(pkName)
- .append(keySeq)
- .toHashCode();
- }
-
- @Override
- public int compareTo(Object obj) {
- if (obj == null || !obj.getClass().equals(getClass())) {
- throw new IllegalArgumentException();
- }
- if (obj == this) {
- return 0;
- }
-
- ExportedKey rhs = (ExportedKey) obj;
- return new CompareToBuilder()
- .append(pkCatalog, rhs.pkCatalog)
- .append(pkSchema, rhs.pkSchema)
- .append(pkTable, rhs.pkTable)
- .append(pkName, rhs.pkName)
- .append(fkCatalog, rhs.fkCatalog)
- .append(fkSchema, rhs.fkSchema)
- .append(fkTable, rhs.fkTable)
- .append(fkName, rhs.fkName)
- .append(keySeq, rhs.keySeq)
- .append(pkColumn, rhs.pkColumn)
- .append(fkColumn, rhs.fkColumn)
- .toComparison();
- }
-
- @Override
- public String toString() {
- return getStrKey() + " # " + keySeq;
- }
-
- public String getStrKey() {
- return pkCatalog + "." + pkSchema + "." + pkTable + "." + pkColumn
- + " <- " + fkCatalog + "." + fkSchema + "." + fkTable + "." + fkColumn;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsControllerBase.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsControllerBase.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsControllerBase.java
index badde44..3d3ab37 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsControllerBase.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsControllerBase.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.commons.collections.Predicate;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3e03bc11/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index 2b01ce3..11172fb 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.map.naming.ExportedKey;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ClassLoadingService;
[5/5] cayenne git commit: CAY-2116 Split schema synchronization code
in a separate module
Posted by aa...@apache.org.
CAY-2116 Split schema synchronization code in a separate module
* more refactoring
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/ad944755
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/ad944755
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/ad944755
Branch: refs/heads/master
Commit: ad9447556dd5e12b5e7f94a517bab1df7f50a5d3
Parents: 2df9f66
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Sep 30 20:45:47 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Sep 30 20:58:07 2016 +0300
----------------------------------------------------------------------
.../dbsync/merge/CreateTableToModel.java | 24 +-
.../dbsync/merge/EntityMergeSupport.java | 8 +-
.../dbsync/naming/DuplicateNameResolver.java | 68 ++++++
.../cayenne/dbsync/naming/NameChecker.java | 36 +++
.../cayenne/dbsync/naming/NameCheckers.java | 223 +++++++++++++++++++
.../cayenne/dbsync/reverse/db/DbLoader.java | 8 +-
.../reverse/db/ManyToManyCandidateEntity.java | 6 +-
.../naming/DefaultObjectNameGenerator.java | 11 +-
.../naming/LegacyObjectNameGenerator.java | 16 +-
.../dbsync/reverse/naming/NameConverter.java | 154 -------------
.../cayenne/dbsync/naming/NameCheckersTest.java | 204 +++++++++++++++++
.../reverse/naming/NameConverterTest.java | 115 ----------
.../java/org/apache/cayenne/map/ObjEntity.java | 2 +-
.../apache/cayenne/map/naming/NameChecker.java | 36 ---
.../apache/cayenne/map/naming/NameCheckers.java | 221 ------------------
.../cayenne/map/naming/UniqueNameGenerator.java | 91 --------
.../main/java/org/apache/cayenne/util/Util.java | 126 +++++++++--
.../cayenne/map/naming/NameCheckersTest.java | 204 -----------------
.../java/org/apache/cayenne/util/UtilTest.java | 38 ++++
.../cayenne/gen/ClientDataMapArtifact.java | 3 +-
.../org/apache/cayenne/gen/DataMapArtifact.java | 4 +-
.../org/apache/cayenne/gen/DataMapUtils.java | 30 +--
.../org/apache/cayenne/gen/StringUtils.java | 23 +-
.../org/apache/cayenne/gen/StringUtilsTest.java | 49 ++++
.../modeler/action/CreateAttributeAction.java | 10 +-
.../action/CreateCallbackMethodAction.java | 15 +-
.../modeler/action/CreateDataMapAction.java | 6 +-
.../modeler/action/CreateDbEntityAction.java | 6 +-
.../modeler/action/CreateEmbeddableAction.java | 6 +-
.../modeler/action/CreateNodeAction.java | 6 +-
.../modeler/action/CreateObjEntityAction.java | 12 +-
.../modeler/action/CreateProcedureAction.java | 6 +-
.../action/CreateProcedureParameterAction.java | 6 +-
.../action/CreateRelationshipAction.java | 8 +-
.../modeler/action/ImportDataMapAction.java | 8 +-
.../modeler/action/ImportEOModelAction.java | 6 +-
.../modeler/action/NewProjectAction.java | 6 +-
.../cayenne/modeler/action/PasteAction.java | 40 ++--
.../action/ReverseEngineeringAction.java | 8 +-
.../dialog/ResolveDbRelationshipDialog.java | 8 +-
.../modeler/dialog/db/DbLoaderHelper.java | 10 +-
.../cayenne/modeler/dialog/query/QueryType.java | 6 +-
.../cayenne/modeler/editor/CallbackType.java | 32 +--
modeler/cayenne-wocompat/pom.xml | 6 +
.../cayenne/wocompat/EOModelProcessor.java | 39 ++--
45 files changed, 933 insertions(+), 1017 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
index 0997e9b..436a1f5 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
@@ -19,21 +19,22 @@
package org.apache.cayenne.dbsync.merge;
import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
+import org.apache.cayenne.dbsync.reverse.naming.DefaultObjectNameGenerator;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
/**
* A {@link MergerToken} to add a {@link DbEntity} to a {@link DataMap}
- *
*/
public class CreateTableToModel extends AbstractToModelToken.Entity {
/**
* className if {@link ObjEntity} should be generated with a
- * special class name.
- * Setting this to <code>null</code>, because by default class name should be generated
+ * special class name.
+ * Setting this to <code>null</code>, because by default class name should be generated
*/
private String objEntityClassName = null; //CayenneDataObject.class.getName();
@@ -53,11 +54,18 @@ public class CreateTableToModel extends AbstractToModelToken.Entity {
}
public void execute(MergerContext mergerContext) {
+ DbEntity dbEntity = getEntity();
+
DataMap map = mergerContext.getDataMap();
- map.addDbEntity(getEntity());
+ map.addDbEntity(dbEntity);
// create a ObjEntity
- String objEntityName = NameConverter.underscoredToJava(getEntity().getName(), true);
+
+ // TODO: proper name generator must be injected
+
+ String objEntityName = new DefaultObjectNameGenerator().createObjEntityName(dbEntity);
+ objEntityName = DuplicateNameResolver.resolve(NameCheckers.objEntity, dbEntity.getDataMap(), objEntityName);
+
// this loop will terminate even if no valid name is found
// to prevent loader from looping forever (though such case is very unlikely)
String baseName = objEntityName;
@@ -77,12 +85,12 @@ public class CreateTableToModel extends AbstractToModelToken.Entity {
objEntity.setClassName(className);
objEntity.setSuperClassName(map.getDefaultSuperclass());
-
+
if (map.isClientSupported()) {
objEntity.setClientClassName(map.getNameWithDefaultClientPackage(objEntity.getName()));
objEntity.setClientSuperClassName(map.getDefaultClientSuperclass());
}
-
+
map.addObjEntity(objEntity);
// presumably there are no other ObjEntities pointing to this DbEntity, so syncing just this one...
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/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 7db68af..e055883 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
@@ -29,9 +29,9 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.util.DeleteRuleUpdater;
import org.apache.cayenne.util.EntityMergeListener;
@@ -205,7 +205,7 @@ public class EntityMergeSupport {
private boolean createObjRelationship(ObjEntity entity, DbRelationship dr, String targetEntityName) {
String relationshipName = nameGenerator.createObjRelationshipName(dr);
- relationshipName = UniqueNameGenerator.generate(NameCheckers.objRelationship, entity, relationshipName);
+ relationshipName = DuplicateNameResolver.resolve(NameCheckers.objRelationship, entity, relationshipName);
ObjRelationship or = new ObjRelationship(relationshipName);
or.addDbRelationship(dr);
@@ -279,7 +279,7 @@ public class EntityMergeSupport {
}
private void addMissingAttribute(ObjEntity entity, DbAttribute da) {
- String attrName = UniqueNameGenerator.generate(NameCheckers.objAttribute, entity,
+ String attrName = DuplicateNameResolver.resolve(NameCheckers.objAttribute, entity,
nameGenerator.createObjAttributeName(da));
String type = TypesMapping.getJavaBySqlType(da.getType());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DuplicateNameResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DuplicateNameResolver.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DuplicateNameResolver.java
new file mode 100644
index 0000000..3f55d8f
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DuplicateNameResolver.java
@@ -0,0 +1,68 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.map.DataMap;
+
+/**
+ * A generator of unique names for the various model objects.
+ *
+ * @since 4.0
+ */
+public class DuplicateNameResolver {
+
+ private static final String DEFAULT_PATTERN = "%s%d";
+
+ public static String resolve(NameChecker checker) {
+ return resolve(checker, DEFAULT_PATTERN, null, null);
+ }
+
+ public static String resolve(NameChecker checker, Object context) {
+ return resolve(checker, DEFAULT_PATTERN, context, null);
+ }
+
+ public static String resolve(NameChecker checker, Object context, String baseName) {
+ return resolve(checker, DEFAULT_PATTERN, context, baseName);
+ }
+
+ public static String resolve(NameChecker nameChecker, String pattern, Object context, String baseName) {
+
+ if (baseName == null) {
+ baseName = nameChecker.baseName();
+ }
+
+ String resolved = doResolve(nameChecker, pattern, context, baseName);
+
+ // TODO ugly hack with cast... something more OO is in order
+ return (nameChecker == NameCheckers.embeddable)
+ ? ((DataMap) context).getNameWithDefaultPackage(resolved) : resolved;
+ }
+
+
+ private static String doResolve(NameChecker nameChecker, String pattern, Object namingContext, String baseName) {
+ int c = 1;
+ String name = baseName;
+ while (nameChecker.isNameInUse(namingContext, name)) {
+ name = String.format(pattern, baseName, c++);
+ }
+
+ return name;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameChecker.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameChecker.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameChecker.java
new file mode 100644
index 0000000..ade1ec5
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameChecker.java
@@ -0,0 +1,36 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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;
+
+/**
+ * @since 4.0
+ */
+public interface NameChecker {
+
+ /**
+ * Returns a base default name, like "UntitledEntity", etc.
+ */
+ String baseName();
+
+ /**
+ * Checks if the name is already taken by another sibling in the same
+ * context.
+ */
+ boolean isNameInUse(Object namingContext, String name);
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameCheckers.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameCheckers.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameCheckers.java
new file mode 100644
index 0000000..fca1734
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/NameCheckers.java
@@ -0,0 +1,223 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.Embeddable;
+import org.apache.cayenne.map.Entity;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.Procedure;
+import org.apache.cayenne.map.ProcedureParameter;
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * A set of default {@link NameChecker} objects for the known model objects.
+ *
+ * @since 4.0
+ */
+public enum NameCheckers implements NameChecker {
+
+ dataChannelDescriptor("project") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ return false;
+ }
+ },
+
+ dataMap("datamap") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ // null context is a situation when DataMap is a
+ // top level object of the project
+ if (namingContext == null) {
+ return false;
+ }
+
+ if (namingContext instanceof DataDomain) {
+ DataDomain domain = (DataDomain) namingContext;
+ return domain.getDataMap(name) != null;
+ }
+
+ if (namingContext instanceof DataChannelDescriptor) {
+ DataChannelDescriptor domain = (DataChannelDescriptor) namingContext;
+ return domain.getDataMap(name) != null;
+ }
+ return false;
+ }
+ },
+
+ reverseEngineering("reverseEngineering") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ if (namingContext == null) {
+ return false;
+ }
+
+ for (DataMap dataMap : ((DataChannelDescriptor) namingContext).getDataMaps()) {
+ if (dataMap != null && dataMap.getReverseEngineering() != null &&
+ dataMap.getReverseEngineering().getName() != null && dataMap.getReverseEngineering().getName().equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ },
+
+ objEntity("ObjEntity") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ DataMap map = (DataMap) namingContext;
+ return map.getObjEntity(name) != null;
+ }
+ },
+
+ embeddable("Embeddable") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ DataMap map = (DataMap) namingContext;
+ return map.getEmbeddable(map.getNameWithDefaultPackage(name)) != null;
+ }
+ },
+
+ embeddableAttribute("untitledAttr") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ Embeddable emb = (Embeddable) namingContext;
+ return emb.getAttribute(name) != null;
+ }
+ },
+
+ dbEntity("db_entity") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ DataMap map = (DataMap) namingContext;
+ return map.getDbEntity(name) != null;
+ }
+ },
+
+ procedureParameter("UntitledProcedureParameter") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+
+ // it doesn't matter if we create a parameter with
+ // a duplicate name.. parameters are positional anyway..
+ // still try to use unique names for visual consistency
+ Procedure procedure = (Procedure) namingContext;
+ for (final ProcedureParameter parameter : procedure
+ .getCallParameters()) {
+ if (name.equals(parameter.getName())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ },
+
+ procedure("procedure") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ DataMap map = (DataMap) namingContext;
+ return map.getProcedure(name) != null;
+ }
+ },
+
+ query("query") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ DataMap map = (DataMap) namingContext;
+ return map.getQueryDescriptor(name) != null;
+ }
+ },
+
+ objAttribute("untitledAttr") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ return objRelationship.isNameInUse(namingContext, name);
+ }
+ },
+
+ dbAttribute("untitledAttr") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ Entity ent = (Entity) namingContext;
+ return ent.getAttribute(name) != null
+ || ent.getRelationship(name) != null;
+ }
+ },
+
+ dataNodeDescriptor("datanode") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ DataChannelDescriptor domain = (DataChannelDescriptor) namingContext;
+ for (DataNodeDescriptor dataNodeDescriptor : domain
+ .getNodeDescriptors()) {
+ if (dataNodeDescriptor.getName().equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ },
+
+ objRelationship("untitledRel") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ ObjEntity ent = (ObjEntity) namingContext;
+ return dbAttribute.isNameInUse(namingContext, name)
+ || ent.getCallbackMethods().contains(
+ "get" + StringUtils.capitalize(name));
+ }
+ },
+
+ dbRelationship("untitledRel") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ return dbAttribute.isNameInUse(namingContext, name);
+ }
+ },
+
+ objCallbackMethod("ObjCallbackMethod") {
+ @Override
+ public boolean isNameInUse(Object namingContext, String name) {
+ ObjEntity ent = (ObjEntity) namingContext;
+
+ return name.startsWith("get")
+ && dbAttribute.isNameInUse(namingContext,
+ StringUtils.uncapitalize(name.substring(3)))
+ || ent.getCallbackMethods().contains(name);
+ }
+ };
+
+ private final String baseName;
+
+ NameCheckers(String baseName) {
+ this.baseName = baseName;
+ }
+
+ @Override
+ public String baseName() {
+ return baseName;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
index 5f233cd..44b9fb3 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
@@ -34,9 +34,9 @@ import org.apache.cayenne.map.DbRelationshipDetected;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.util.EqualsBuilder;
import org.apache.commons.logging.Log;
@@ -133,7 +133,7 @@ public class DbLoader {
continue;
}
- String objEntityName = UniqueNameGenerator.generate(NameCheckers.objEntity, map,
+ String objEntityName = DuplicateNameResolver.resolve(NameCheckers.objEntity, map,
nameGenerator.createObjEntityName(dbEntity));
ObjEntity objEntity = new ObjEntity(objEntityName);
@@ -439,7 +439,7 @@ public class DbLoader {
private String generateName(DbEntity entity, ExportedKey key, boolean toMany) {
String forwardPreferredName = nameGenerator.createDbRelationshipName(key, toMany);
- return UniqueNameGenerator.generate(NameCheckers.dbRelationship, entity, forwardPreferredName);
+ return DuplicateNameResolver.resolve(NameCheckers.dbRelationship, entity, forwardPreferredName);
}
private void fireObjEntitiesAddedEvents(Collection<ObjEntity> loadedObjEntities) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
index 06c7d82..85af6a4 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
@@ -21,8 +21,8 @@ package org.apache.cayenne.dbsync.reverse.db;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -113,7 +113,7 @@ class ManyToManyCandidateEntity {
(short) 1);
ObjRelationship newRelationship = new ObjRelationship();
- newRelationship.setName(UniqueNameGenerator.generate(NameCheckers.objRelationship, srcEntity,
+ newRelationship.setName(DuplicateNameResolver.resolve(NameCheckers.objRelationship, srcEntity,
nameGenerator.createDbRelationshipName(key, true)));
newRelationship.setSourceEntity(srcEntity);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
index d299338..a2d2264 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
@@ -18,10 +18,11 @@
****************************************************************/
package org.apache.cayenne.dbsync.reverse.naming;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
+import org.apache.cayenne.util.Util;
import org.jvnet.inflector.Noun;
import java.util.Locale;
@@ -73,21 +74,21 @@ public class DefaultObjectNameGenerator implements ObjectNameGenerator {
}
}
- return NameConverter.underscoredToJava(name, false);
+ return Util.underscoredToJava(name, false);
}
@Override
public String createObjEntityName(DbEntity dbEntity) {
- return NameConverter.underscoredToJava(dbEntity.getName(), true);
+ return Util.underscoredToJava(dbEntity.getName(), true);
}
@Override
public String createObjAttributeName(DbAttribute attr) {
- return NameConverter.underscoredToJava(attr.getName(), false);
+ return Util.underscoredToJava(attr.getName(), false);
}
@Override
public String createObjRelationshipName(DbRelationship dbRel) {
- return NameConverter.underscoredToJava(dbRel.getName(), false);
+ return Util.underscoredToJava(dbRel.getName(), false);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
index 16f7f7a..1c52a6e 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
@@ -18,35 +18,37 @@
****************************************************************/
package org.apache.cayenne.dbsync.reverse.naming;
+import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
+import org.apache.cayenne.util.Util;
/**
* BasicNamingStrategy is an naming strategy that creates names in Cayenne's
* old-fashioned manner, i.e. the same way Cayenne did before 3.0
- *
+ *
* @since 4.0
*/
public class LegacyObjectNameGenerator implements ObjectNameGenerator {
+
public String createDbRelationshipName(
ExportedKey key,
boolean toMany) {
-
+
String uglyName = (toMany) ? key.getFKTableName() + "_ARRAY" : "to_" + key.getPKTableName();
- return NameConverter.underscoredToJava(uglyName, false);
+ return Util.underscoredToJava(uglyName, false);
}
public String createObjEntityName(DbEntity dbEntity) {
- return NameConverter.underscoredToJava(dbEntity.getName(), true);
+ return Util.underscoredToJava(dbEntity.getName(), true);
}
public String createObjAttributeName(DbAttribute attr) {
- return NameConverter.underscoredToJava(attr.getName(), false);
+ return Util.underscoredToJava(attr.getName(), false);
}
public String createObjRelationshipName(DbRelationship dbRel) {
- return NameConverter.underscoredToJava(dbRel.getName(), false);
+ return Util.underscoredToJava(dbRel.getName(), false);
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java
deleted file mode 100644
index 63c4dcb..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java
+++ /dev/null
@@ -1,154 +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
- *
- * http://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.reverse.naming;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-/**
- * Utility class to convert from different naming styles to Java convention. For example
- * names like "ABCD_EFG" can be converted to "abcdEfg".
- */
-// TODO: deprecate
-public class NameConverter {
-
- private static final Map<String, String> SPECIAL_CHAR_TO_JAVA_MAPPING = new HashMap<>();
-
- static {
- SPECIAL_CHAR_TO_JAVA_MAPPING.put("#", "pound");
- }
-
- /**
- * Converts a String name to a String following java convention for the static final
- * variables. E.g. "abcXyz" will be converted to "ABC_XYZ".
- */
- // TODO: move to the only user....
- public static String javaToUnderscored(String name) {
- if (name == null) {
- return null;
- }
-
- // clear of non-java chars. While the method name implies that a passed identifier
- // is pure Java, it is used to build pk columns names and such, so extra safety
- // check is a good idea
- name = specialCharsToJava(name);
-
- char charArray[] = name.toCharArray();
- StringBuilder buffer = new StringBuilder();
-
- for (int i = 0; i < charArray.length; i++) {
- if ((Character.isUpperCase(charArray[i])) && (i != 0)) {
-
- char prevChar = charArray[i - 1];
- if ((Character.isLowerCase(prevChar))) {
- buffer.append("_");
- }
- }
-
- buffer.append(Character.toUpperCase(charArray[i]));
- }
-
- return buffer.toString();
- }
-
- /**
- * Converts names like "ABCD_EFG_123" to Java-style names like "abcdEfg123". If
- * <code>capitalize</code> is true, returned name is capitalized (for instance if
- * this is a class name).
- *
- * @since 1.2
- */
- // TODO: migrate users to ObjectNameGenerator
- public static String underscoredToJava(String name, boolean capitalize) {
- StringTokenizer st = new StringTokenizer(name, "_");
- StringBuilder buf = new StringBuilder();
-
- boolean first = true;
- while (st.hasMoreTokens()) {
- String token = st.nextToken();
-
- // clear of non-java chars
- token = specialCharsToJava(token);
-
- int len = token.length();
- if (len == 0) {
- continue;
- }
-
- // sniff mixed case vs. single case styles
- boolean hasLowerCase = false;
- boolean hasUpperCase = false;
- for (int i = 0; i < len && !(hasUpperCase && hasLowerCase); i++) {
- if (Character.isUpperCase(token.charAt(i))) {
- hasUpperCase = true;
- } else if (Character.isLowerCase(token.charAt(i))) {
- hasLowerCase = true;
- }
- }
-
- // if mixed case, preserve it, if all upper, convert to lower
- if (hasUpperCase && !hasLowerCase) {
- token = token.toLowerCase();
- }
-
- if (first) {
- // apply explicit capitalization rules, if this is the first token
- first = false;
- if (capitalize) {
- buf.append(Character.toUpperCase(token.charAt(0)));
- } else {
- buf.append(Character.toLowerCase(token.charAt(0)));
- }
- } else {
- buf.append(Character.toUpperCase(token.charAt(0)));
- }
-
- if (len > 1) {
- buf.append(token.substring(1, len));
- }
- }
- return buf.toString();
- }
-
- /**
- * Replaces special chars with human-readable and Java-id-compatible symbols.
- */
- static String specialCharsToJava(String string) {
- int len = string.length();
- if (len == 0) {
- return string;
- }
-
- StringBuilder buffer = new StringBuilder(len);
- for (int i = 0; i < len; i++) {
-
- char c = string.charAt(i);
- if (Character.isJavaIdentifierPart(c)) {
- buffer.append(c);
- } else {
- Object word = SPECIAL_CHAR_TO_JAVA_MAPPING.get(String.valueOf(c));
- buffer.append(word != null ? word : "_");
- }
- }
-
- return buffer.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameCheckersTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameCheckersTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameCheckersTest.java
new file mode 100644
index 0000000..8131160
--- /dev/null
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/naming/NameCheckersTest.java
@@ -0,0 +1,204 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.access.DataDomain;
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.Embeddable;
+import org.apache.cayenne.map.EmbeddableAttribute;
+import org.apache.cayenne.map.ObjAttribute;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.Procedure;
+import org.apache.cayenne.map.ProcedureParameter;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.junit.Assert;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class NameCheckersTest {
+
+ @Test
+ public void testObjEntityAttributes() throws Exception {
+ NameCheckers maker = NameCheckers.objAttribute;
+ ObjEntity namingContainer = new ObjEntity();
+
+ String baseName = maker.baseName();
+ String name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName, name);
+ namingContainer.addAttribute(new ObjAttribute(name));
+
+ name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName + "1", name);
+ namingContainer.addAttribute(new ObjAttribute(name));
+
+ name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName + "2", name);
+ namingContainer.addAttribute(new ObjAttribute(name));
+
+ name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName + "3", name);
+ namingContainer.addAttribute(new ObjAttribute(name));
+
+ maker = NameCheckers.objRelationship;
+ baseName = maker.baseName();
+ name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName, name);
+ namingContainer.addRelationship(new ObjRelationship(name));
+
+ name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName + "1", name);
+ namingContainer.addRelationship(new ObjRelationship(name));
+
+ maker = NameCheckers.objCallbackMethod;
+ baseName = maker.baseName();
+ name = DuplicateNameResolver.resolve(maker, namingContainer);
+ assertEquals(baseName, name);
+ namingContainer.addRelationship(new ObjRelationship(name));
+ }
+
+ @Test
+ public void testEntity () {
+ DataMap map = new DataMap();
+
+ map.addDbEntity(new DbEntity("name"));
+ checkNameAndOther(map, NameCheckers.dbEntity, "name");
+
+ map.addObjEntity(new ObjEntity("name"));
+ checkNameAndOther(map, NameCheckers.objEntity, "name");
+
+ map.addProcedure(new Procedure("name"));
+ checkNameAndOther(map, NameCheckers.procedure, "name");
+
+ QueryDescriptor query = QueryDescriptor.selectQueryDescriptor();
+ query.setName("name");
+ map.addQueryDescriptor(query);
+ checkNameAndOther(map, NameCheckers.query, "name");
+ }
+
+ @Test
+ public void testProject() throws Exception {
+ assertFalse(NameCheckers.dataChannelDescriptor.isNameInUse(null, null));
+ }
+
+ @Test
+ public void testDbEntity() throws Exception {
+ DbEntity dbEntity = new DbEntity();
+
+ dbEntity.addRelationship(new DbRelationship("name"));
+ checkNameAndOther(dbEntity, NameCheckers.dbRelationship, "name");
+ }
+
+ @Test
+ public void testProcedureAttr() throws Exception {
+ Procedure procedure = new Procedure();
+
+ procedure.addCallParameter(new ProcedureParameter("name"));
+ checkNameAndOther(procedure, NameCheckers.procedureParameter, "name");
+ }
+
+ @Test
+ public void testEmbeddableAttr() throws Exception {
+ Embeddable embeddable = new Embeddable();
+
+ embeddable.addAttribute(new EmbeddableAttribute("name"));
+ checkNameAndOther(embeddable, NameCheckers.embeddableAttribute, "name");
+ }
+
+ @Test
+ public void testDatanode() throws Exception {
+ DataChannelDescriptor descriptor = new DataChannelDescriptor();
+
+ descriptor.getDataMaps().add(new DataMap("name"));
+ checkNameAndOther(descriptor, NameCheckers.dataMap, "name");
+
+ descriptor.getNodeDescriptors().add(new DataNodeDescriptor("name"));
+ checkNameAndOther(descriptor, NameCheckers.dataNodeDescriptor, "name");
+ }
+
+ @Test
+ public void testDataMap() throws Exception {
+ DataDomain dataDomain = new DataDomain("name");
+
+ dataDomain.addDataMap(new DataMap("name"));
+ checkNameAndOther(dataDomain, NameCheckers.dataMap, "name");
+
+ assertFalse(NameCheckers.dataMap.isNameInUse(null, "name"));
+ assertFalse(NameCheckers.dataMap.isNameInUse(1, "name"));
+ }
+
+ private void checkNameAndOther(Object namingContainer, NameCheckers maker, String newName) {
+ assertTrue(maker.isNameInUse(namingContainer, newName));
+ assertEquals(newName + "1", DuplicateNameResolver.resolve(maker,namingContainer, newName));
+ assertEquals("other" + newName, DuplicateNameResolver.resolve(maker,namingContainer, "other" + newName));
+ }
+
+ @Test
+ public void testOverlappingAttributeAndCallbackNames() throws Exception {
+ ObjEntity namingContainer = new ObjEntity();
+
+ namingContainer.addAttribute(new ObjAttribute("myName"));
+ assertEquals("getMyName1", DuplicateNameResolver.resolve(NameCheckers.objCallbackMethod, namingContainer, "getMyName"));
+
+ namingContainer.getCallbackMap().getPostAdd().addCallbackMethod("getSecondName");
+ assertEquals("SecondName1", DuplicateNameResolver.resolve(NameCheckers.objAttribute, namingContainer, "SecondName"));
+ assertEquals("secondName1", DuplicateNameResolver.resolve(NameCheckers.objAttribute, namingContainer, "secondName"));
+ assertEquals("SecondName1", DuplicateNameResolver.resolve(NameCheckers.objRelationship, namingContainer, "SecondName"));
+ assertEquals("secondName1", DuplicateNameResolver.resolve(NameCheckers.objRelationship, namingContainer, "secondName"));
+ }
+
+ @Test
+ public void testAttributeDifferentInFirstLetterCases() throws Exception {
+ ObjEntity namingContainer = new ObjEntity();
+
+ namingContainer.addAttribute(new ObjAttribute("myName"));
+ Assert.assertTrue(NameCheckers.objAttribute.isNameInUse(namingContainer, "myName"));
+ Assert.assertFalse(NameCheckers.objAttribute.isNameInUse(namingContainer, "MyName"));
+
+ namingContainer.getCallbackMap().getPostAdd().addCallbackMethod("getSecondName");
+ assertEquals("SecondName1", DuplicateNameResolver.resolve(NameCheckers.objAttribute, namingContainer, "SecondName"));
+ assertEquals("secondName1", DuplicateNameResolver.resolve(NameCheckers.objAttribute, namingContainer, "secondName"));
+ }
+
+ @Test
+ public void testEmbeddable() {
+ DataMap map = new DataMap();
+
+ map.addEmbeddable(new Embeddable("name"));
+ Assert.assertTrue(NameCheckers.embeddable.isNameInUse(map, "name"));
+ assertEquals("name1", DuplicateNameResolver.resolve(NameCheckers.embeddable, map, "name"));
+ Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "other-name"));
+
+ map.setDefaultPackage("package");
+ Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "name"));
+ assertEquals("package.name", DuplicateNameResolver.resolve(NameCheckers.embeddable, map, "name"));
+ map.addEmbeddable(new Embeddable("package.name"));
+
+ Assert.assertTrue(NameCheckers.embeddable.isNameInUse(map, "name"));
+ assertEquals("package.name1", DuplicateNameResolver.resolve(NameCheckers.embeddable, map, "name"));
+ Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "other-name"));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java
deleted file mode 100644
index 1c52f6e..0000000
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java
+++ /dev/null
@@ -1,115 +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
- *
- * http://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.reverse.naming;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class NameConverterTest {
-
- @Test
- public void testUnderscoredToJava1() throws Exception {
- String expected = "ClassNameIdentifier";
- assertEquals(expected, NameConverter.underscoredToJava(
- "_CLASS_NAME_IDENTIFIER_",
- true));
- }
-
- @Test
- public void testUnderscoredToJava2() throws Exception {
- String expected = "propNameIdentifier123";
- assertEquals(expected, NameConverter.underscoredToJava(
- "_prop_name_Identifier_123",
- false));
- }
-
- @Test
- public void testUnderscoredToJava3() throws Exception {
- String expected = "lastName";
- assertEquals(expected, NameConverter.underscoredToJava("lastName", false));
- }
-
- @Test
- public void testUnderscoredToJava4() throws Exception {
- String expected = "lastName";
- assertEquals(expected, NameConverter.underscoredToJava("LastName", false));
- }
-
- @Test
- public void testUnderscoredToJava5() throws Exception {
- String expected = "LastName";
- assertEquals(expected, NameConverter.underscoredToJava("LastName", true));
- }
-
- @Test
- public void testUnderscoredToJavaSpecialChars() throws Exception {
- assertEquals("ABCpoundXyz", NameConverter.underscoredToJava("ABC#_XYZ", true));
- }
-
- @Test
- public void testJavaToUnderscored1() throws Exception {
- String expected = "LAST_NAME";
- assertEquals(expected, NameConverter.javaToUnderscored("LastName"));
- }
-
- @Test
- public void testJavaToUnderscored2() throws Exception {
- String expected = "A_CLASS";
- assertEquals(expected, NameConverter.javaToUnderscored("aClass"));
- }
-
- @Test
- public void testJavaToUnderscored3() throws Exception {
- String expected = "VAR_A";
- assertEquals(expected, NameConverter.javaToUnderscored("varA"));
- }
-
- @Test
- public void testJavaToUnderscored4() throws Exception {
- String expected = "LAST_NAME";
- assertEquals(expected, NameConverter.javaToUnderscored("LAST_NAME"));
- }
-
- @Test
- public void testJavaToUnderscored5() throws Exception {
- String expected = "ABC_A";
- assertEquals(expected, NameConverter.javaToUnderscored("abc_A"));
- }
-
- @Test
- public void testJavaToUnderscored6() throws Exception {
- String expected = "A123";
- assertEquals(expected, NameConverter.javaToUnderscored("a123"));
- }
-
- @Test
- public void testJavaToUnderscored7() throws Exception {
- String expected = "AB_CDEF";
- assertEquals(expected, NameConverter.javaToUnderscored("abCDEF"));
- }
-
- @Test
- public void testJavaToUnderscored8() throws Exception {
- String expected = "AB_CE";
- assertEquals(expected, NameConverter.javaToUnderscored("abCe"));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
index de79a6a..81a66ee 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
@@ -677,7 +677,7 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
// create synthetic attribute
if (attribute == null) {
- attribute = new SyntheticPKObjAttribute(pk.getName());
+ attribute = new SyntheticPKObjAttribute(Util.underscoredToJava(pk.getName(), false));
attribute.setDbAttributePath(pk.getName());
attribute.setType(TypesMapping.getJavaBySqlType(pk.getType()));
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
deleted file mode 100644
index 68fdfd3..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
+++ /dev/null
@@ -1,36 +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
- *
- * http://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.map.naming;
-
-/**
- * @since 4.0
- */
-public interface NameChecker {
-
- /**
- * Returns a base default name, like "UntitledEntity", etc.
- */
- String baseName();
-
- /**
- * Checks if the name is already taken by another sibling in the same
- * context.
- */
- boolean isNameInUse(Object namingContext, String name);
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameCheckers.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameCheckers.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameCheckers.java
deleted file mode 100644
index 67639d6..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameCheckers.java
+++ /dev/null
@@ -1,221 +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
- *
- * http://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.map.naming;
-
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.Embeddable;
-import org.apache.cayenne.map.Entity;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.Procedure;
-import org.apache.cayenne.map.ProcedureParameter;
-import org.apache.commons.lang.StringUtils;
-
-/**
- * @since 4.0
- */
-public enum NameCheckers implements NameChecker {
-
- dataChannelDescriptor("project") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- return false;
- }
- },
-
- dataMap("datamap") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- // null context is a situation when DataMap is a
- // top level object of the project
- if (namingContext == null) {
- return false;
- }
-
- if (namingContext instanceof DataDomain) {
- DataDomain domain = (DataDomain) namingContext;
- return domain.getDataMap(name) != null;
- }
-
- if (namingContext instanceof DataChannelDescriptor) {
- DataChannelDescriptor domain = (DataChannelDescriptor) namingContext;
- return domain.getDataMap(name) != null;
- }
- return false;
- }
- },
-
- reverseEngineering("reverseEngineering") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- if (namingContext == null) {
- return false;
- }
-
- for (DataMap dataMap : ((DataChannelDescriptor) namingContext).getDataMaps()) {
- if (dataMap!= null && dataMap.getReverseEngineering() != null &&
- dataMap.getReverseEngineering().getName()!=null && dataMap.getReverseEngineering().getName().equals(name)) {
- return true;
- }
- }
- return false;
- }
- },
-
- objEntity("ObjEntity") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- DataMap map = (DataMap) namingContext;
- return map.getObjEntity(name) != null;
- }
- },
-
- embeddable("Embeddable") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- DataMap map = (DataMap) namingContext;
- return map.getEmbeddable(map.getNameWithDefaultPackage(name)) != null;
- }
- },
-
- embeddableAttribute("untitledAttr") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- Embeddable emb = (Embeddable) namingContext;
- return emb.getAttribute(name) != null;
- }
- },
-
- dbEntity("db_entity") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- DataMap map = (DataMap) namingContext;
- return map.getDbEntity(name) != null;
- }
- },
-
- procedureParameter("UntitledProcedureParameter") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
-
- // it doesn't matter if we create a parameter with
- // a duplicate name.. parameters are positional anyway..
- // still try to use unique names for visual consistency
- Procedure procedure = (Procedure) namingContext;
- for (final ProcedureParameter parameter : procedure
- .getCallParameters()) {
- if (name.equals(parameter.getName())) {
- return true;
- }
- }
-
- return false;
- }
- },
-
- procedure("procedure") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- DataMap map = (DataMap) namingContext;
- return map.getProcedure(name) != null;
- }
- },
-
- query("query") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- DataMap map = (DataMap) namingContext;
- return map.getQueryDescriptor(name) != null;
- }
- },
-
- objAttribute("untitledAttr") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- return objRelationship.isNameInUse(namingContext, name);
- }
- },
-
- dbAttribute("untitledAttr") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- Entity ent = (Entity) namingContext;
- return ent.getAttribute(name) != null
- || ent.getRelationship(name) != null;
- }
- },
-
- dataNodeDescriptor("datanode") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- DataChannelDescriptor domain = (DataChannelDescriptor) namingContext;
- for (DataNodeDescriptor dataNodeDescriptor : domain
- .getNodeDescriptors()) {
- if (dataNodeDescriptor.getName().equals(name)) {
- return true;
- }
- }
- return false;
- }
- },
-
- objRelationship("untitledRel") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- ObjEntity ent = (ObjEntity) namingContext;
- return dbAttribute.isNameInUse(namingContext, name)
- || ent.getCallbackMethods().contains(
- "get" + StringUtils.capitalize(name));
- }
- },
-
- dbRelationship("untitledRel") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- return dbAttribute.isNameInUse(namingContext, name);
- }
- },
-
- objCallbackMethod("ObjCallbackMethod") {
- @Override
- public boolean isNameInUse(Object namingContext, String name) {
- ObjEntity ent = (ObjEntity) namingContext;
-
- return name.startsWith("get")
- && dbAttribute.isNameInUse(namingContext,
- StringUtils.uncapitalize(name.substring(3)))
- || ent.getCallbackMethods().contains(name);
- }
- };
-
- public final String baseName;
-
- NameCheckers(String baseName) {
- this.baseName = baseName;
- }
-
- @Override
- public String baseName() {
- return baseName;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
deleted file mode 100644
index 2fe6801..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
+++ /dev/null
@@ -1,91 +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
- *
- * http://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.map.naming;
-
-import org.apache.cayenne.map.DataMap;
-
-/**
- * @since 4.0
- */
-public class UniqueNameGenerator {
-
- public static final String DEFAULT_PATTERN = "%s%d";
-
- private final NameChecker nameChecker;
-
- private final String pattern;
-
- public UniqueNameGenerator(NameChecker nameChecker, String pattern) {
- this.nameChecker = nameChecker;
- this.pattern = pattern;
- }
-
- public static String generate(NameChecker checker) {
- return generate(checker, DEFAULT_PATTERN, null, null);
- }
-
- public static String generate(NameChecker checker, Object context) {
- return generate(checker, DEFAULT_PATTERN, context, null);
- }
-
- public static String generate(NameChecker checker, Object context, String baseName) {
- return generate(checker, DEFAULT_PATTERN, context, baseName);
- }
-
- public static String generate(NameChecker checker, String pattern, Object context, String baseName) {
- UniqueNameGenerator generator;
- if (checker == NameCheckers.embeddable) {
- generator = new UniqueNameGenerator(NameCheckers.embeddable, pattern) {
- @Override
- public String generate(Object namingContext, String nameBase) {
- return ((DataMap) namingContext).getNameWithDefaultPackage(super.generate(namingContext, nameBase));
- }
- };
- } else {
- generator = new UniqueNameGenerator(checker, pattern);
- }
-
- return generator.generate(context, baseName);
- }
-
- /**
- * Creates a unique name for the new object and constructs this object.
- */
- String generate(Object namingContext) {
- return generate(namingContext, nameChecker.baseName());
- }
-
- String generate(Object namingContext, String nameBase) {
- return generate(pattern, namingContext, nameBase != null ? nameBase : nameChecker.baseName());
- }
-
- /**
- * @since 1.0.5
- */
- private String generate(String pattern, Object namingContext, String nameBase) {
- int c = 1;
- String name = nameBase;
- while (nameChecker.isNameInUse(namingContext, name)) {
- name = String.format(pattern, nameBase, c++);
- }
-
- return name;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java b/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java
index e0f5571..14e5eab 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/Util.java
@@ -19,6 +19,23 @@
package org.apache.cayenne.util;
+import org.apache.cayenne.Cayenne;
+import org.apache.cayenne.PersistenceState;
+import org.apache.cayenne.Persistent;
+import org.apache.cayenne.di.AdhocObjectFactory;
+import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
+import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
+import org.apache.cayenne.reflect.ArcProperty;
+import org.apache.cayenne.reflect.AttributeProperty;
+import org.apache.cayenne.reflect.PropertyVisitor;
+import org.apache.cayenne.reflect.ToManyProperty;
+import org.apache.cayenne.reflect.ToOneProperty;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -42,31 +59,19 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.StringTokenizer;
import java.util.regex.Pattern;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.cayenne.Cayenne;
-import org.apache.cayenne.PersistenceState;
-import org.apache.cayenne.Persistent;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
-import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.reflect.ArcProperty;
-import org.apache.cayenne.reflect.AttributeProperty;
-import org.apache.cayenne.reflect.PropertyVisitor;
-import org.apache.cayenne.reflect.ToManyProperty;
-import org.apache.cayenne.reflect.ToOneProperty;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
/**
* Contains various unorganized static utility methods used across Cayenne.
*/
public class Util {
+ private static final Map<String, String> SPECIAL_CHAR_TO_JAVA_MAPPING = new HashMap<>();
+ static {
+ SPECIAL_CHAR_TO_JAVA_MAPPING.put("#", "pound");
+ }
+
@Deprecated
private static DefaultAdhocObjectFactory objectFactory;
@@ -508,6 +513,91 @@ public class Util {
return objectFactory.getJavaClass(className);
}
+ /**
+ * Converts names like "ABCD_EFG_123" to Java-style names like "abcdEfg123". If
+ * <code>capitalize</code> is true, returned name is capitalized (for instance if
+ * this is a class name).
+ *
+ * @since 4.0
+ */
+ // TODO: trace direct users and switch over to ObjectNameGenerator
+ public static String underscoredToJava(String name, boolean capitalize) {
+ StringTokenizer st = new StringTokenizer(name, "_");
+ StringBuilder buf = new StringBuilder();
+
+ boolean first = true;
+ while (st.hasMoreTokens()) {
+ String token = st.nextToken();
+
+ // clear of non-java chars
+ token = specialCharsToJava(token);
+
+ int len = token.length();
+ if (len == 0) {
+ continue;
+ }
+
+ // sniff mixed case vs. single case styles
+ boolean hasLowerCase = false;
+ boolean hasUpperCase = false;
+ for (int i = 0; i < len && !(hasUpperCase && hasLowerCase); i++) {
+ if (Character.isUpperCase(token.charAt(i))) {
+ hasUpperCase = true;
+ } else if (Character.isLowerCase(token.charAt(i))) {
+ hasLowerCase = true;
+ }
+ }
+
+ // if mixed case, preserve it, if all upper, convert to lower
+ if (hasUpperCase && !hasLowerCase) {
+ token = token.toLowerCase();
+ }
+
+ if (first) {
+ // apply explicit capitalization rules, if this is the first token
+ first = false;
+ if (capitalize) {
+ buf.append(Character.toUpperCase(token.charAt(0)));
+ } else {
+ buf.append(Character.toLowerCase(token.charAt(0)));
+ }
+ } else {
+ buf.append(Character.toUpperCase(token.charAt(0)));
+ }
+
+ if (len > 1) {
+ buf.append(token.substring(1, len));
+ }
+ }
+ return buf.toString();
+ }
+
+ /**
+ * Replaces special chars with human-readable and Java-id-compatible symbols.
+ *
+ * @since 4.0
+ */
+ public static String specialCharsToJava(String string) {
+ int len = string.length();
+ if (len == 0) {
+ return string;
+ }
+
+ StringBuilder buffer = new StringBuilder(len);
+ for (int i = 0; i < len; i++) {
+
+ char c = string.charAt(i);
+ if (Character.isJavaIdentifierPart(c)) {
+ buffer.append(c);
+ } else {
+ Object word = SPECIAL_CHAR_TO_JAVA_MAPPING.get(String.valueOf(c));
+ buffer.append(word != null ? word : "_");
+ }
+ }
+
+ return buffer.toString();
+ }
+
static void setReverse(final Persistent sourceObject, String propertyName, final Persistent targetObject) {
ArcProperty property = (ArcProperty) Cayenne.getClassDescriptor(sourceObject).getProperty(propertyName);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java b/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
deleted file mode 100644
index e3e6628..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
+++ /dev/null
@@ -1,204 +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
- *
- * http://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.map.naming;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.configuration.DataNodeDescriptor;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-import org.apache.cayenne.map.Embeddable;
-import org.apache.cayenne.map.EmbeddableAttribute;
-import org.apache.cayenne.map.ObjAttribute;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.map.Procedure;
-import org.apache.cayenne.map.ProcedureParameter;
-import org.apache.cayenne.map.QueryDescriptor;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class NameCheckersTest {
-
- @Test
- public void testObjEntityAttributes() throws Exception {
- NameCheckers maker = NameCheckers.objAttribute;
- ObjEntity namingContainer = new ObjEntity();
-
- String baseName = maker.baseName();
- String name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName, name);
- namingContainer.addAttribute(new ObjAttribute(name));
-
- name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName + "1", name);
- namingContainer.addAttribute(new ObjAttribute(name));
-
- name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName + "2", name);
- namingContainer.addAttribute(new ObjAttribute(name));
-
- name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName + "3", name);
- namingContainer.addAttribute(new ObjAttribute(name));
-
- maker = NameCheckers.objRelationship;
- baseName = maker.baseName();
- name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName, name);
- namingContainer.addRelationship(new ObjRelationship(name));
-
- name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName + "1", name);
- namingContainer.addRelationship(new ObjRelationship(name));
-
- maker = NameCheckers.objCallbackMethod;
- baseName = maker.baseName();
- name = UniqueNameGenerator.generate(maker, namingContainer);
- assertEquals(baseName, name);
- namingContainer.addRelationship(new ObjRelationship(name));
- }
-
- @Test
- public void testEntity () {
- DataMap map = new DataMap();
-
- map.addDbEntity(new DbEntity("name"));
- checkNameAndOther(map, NameCheckers.dbEntity, "name");
-
- map.addObjEntity(new ObjEntity("name"));
- checkNameAndOther(map, NameCheckers.objEntity, "name");
-
- map.addProcedure(new Procedure("name"));
- checkNameAndOther(map, NameCheckers.procedure, "name");
-
- QueryDescriptor query = QueryDescriptor.selectQueryDescriptor();
- query.setName("name");
- map.addQueryDescriptor(query);
- checkNameAndOther(map, NameCheckers.query, "name");
- }
-
- @Test
- public void testProject() throws Exception {
- assertFalse(NameCheckers.dataChannelDescriptor.isNameInUse(null, null));
- }
-
- @Test
- public void testDbEntity() throws Exception {
- DbEntity dbEntity = new DbEntity();
-
- dbEntity.addRelationship(new DbRelationship("name"));
- checkNameAndOther(dbEntity, NameCheckers.dbRelationship, "name");
- }
-
- @Test
- public void testProcedureAttr() throws Exception {
- Procedure procedure = new Procedure();
-
- procedure.addCallParameter(new ProcedureParameter("name"));
- checkNameAndOther(procedure, NameCheckers.procedureParameter, "name");
- }
-
- @Test
- public void testEmbeddableAttr() throws Exception {
- Embeddable embeddable = new Embeddable();
-
- embeddable.addAttribute(new EmbeddableAttribute("name"));
- checkNameAndOther(embeddable, NameCheckers.embeddableAttribute, "name");
- }
-
- @Test
- public void testDatanode() throws Exception {
- DataChannelDescriptor descriptor = new DataChannelDescriptor();
-
- descriptor.getDataMaps().add(new DataMap("name"));
- checkNameAndOther(descriptor, NameCheckers.dataMap, "name");
-
- descriptor.getNodeDescriptors().add(new DataNodeDescriptor("name"));
- checkNameAndOther(descriptor, NameCheckers.dataNodeDescriptor, "name");
- }
-
- @Test
- public void testDataMap() throws Exception {
- DataDomain dataDomain = new DataDomain("name");
-
- dataDomain.addDataMap(new DataMap("name"));
- checkNameAndOther(dataDomain, NameCheckers.dataMap, "name");
-
- assertFalse(NameCheckers.dataMap.isNameInUse(null, "name"));
- assertFalse(NameCheckers.dataMap.isNameInUse(1, "name"));
- }
-
- private void checkNameAndOther(Object namingContainer, NameCheckers maker, String newName) {
- assertTrue(maker.isNameInUse(namingContainer, newName));
- assertEquals(newName + "1", UniqueNameGenerator.generate(maker,namingContainer, newName));
- assertEquals("other" + newName, UniqueNameGenerator.generate(maker,namingContainer, "other" + newName));
- }
-
- @Test
- public void testOverlappingAttributeAndCallbackNames() throws Exception {
- ObjEntity namingContainer = new ObjEntity();
-
- namingContainer.addAttribute(new ObjAttribute("myName"));
- Assert.assertEquals("getMyName1", UniqueNameGenerator.generate(NameCheckers.objCallbackMethod, namingContainer, "getMyName"));
-
- namingContainer.getCallbackMap().getPostAdd().addCallbackMethod("getSecondName");
- Assert.assertEquals("SecondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "SecondName"));
- Assert.assertEquals("secondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "secondName"));
- Assert.assertEquals("SecondName1", UniqueNameGenerator.generate(NameCheckers.objRelationship, namingContainer, "SecondName"));
- Assert.assertEquals("secondName1", UniqueNameGenerator.generate(NameCheckers.objRelationship, namingContainer, "secondName"));
- }
-
- @Test
- public void testAttributeDifferentInFirstLetterCases() throws Exception {
- ObjEntity namingContainer = new ObjEntity();
-
- namingContainer.addAttribute(new ObjAttribute("myName"));
- Assert.assertTrue(NameCheckers.objAttribute.isNameInUse(namingContainer, "myName"));
- Assert.assertFalse(NameCheckers.objAttribute.isNameInUse(namingContainer, "MyName"));
-
- namingContainer.getCallbackMap().getPostAdd().addCallbackMethod("getSecondName");
- Assert.assertEquals("SecondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "SecondName"));
- Assert.assertEquals("secondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "secondName"));
- }
-
- @Test
- public void testEmbeddable() {
- DataMap map = new DataMap();
-
- map.addEmbeddable(new Embeddable("name"));
- Assert.assertTrue(NameCheckers.embeddable.isNameInUse(map, "name"));
- Assert.assertEquals("name1", UniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
- Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "other-name"));
-
- map.setDefaultPackage("package");
- Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "name"));
- Assert.assertEquals("package.name", UniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
- map.addEmbeddable(new Embeddable("package.name"));
-
- Assert.assertTrue(NameCheckers.embeddable.isNameInUse(map, "name"));
- Assert.assertEquals("package.name1", UniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
- Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "other-name"));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-server/src/test/java/org/apache/cayenne/util/UtilTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/util/UtilTest.java b/cayenne-server/src/test/java/org/apache/cayenne/util/UtilTest.java
index 2db6987..eab7371 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/util/UtilTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/util/UtilTest.java
@@ -295,4 +295,42 @@ public class UtilTest {
assertEquals("1...78", Util.prettyTrim("12345678", 6));
}
+ @Test
+ public void testUnderscoredToJava1() throws Exception {
+ String expected = "ClassNameIdentifier";
+ assertEquals(expected, Util.underscoredToJava(
+ "_CLASS_NAME_IDENTIFIER_",
+ true));
+ }
+
+ @Test
+ public void testUnderscoredToJava2() throws Exception {
+ String expected = "propNameIdentifier123";
+ assertEquals(expected, Util.underscoredToJava(
+ "_prop_name_Identifier_123",
+ false));
+ }
+
+ @Test
+ public void testUnderscoredToJava3() throws Exception {
+ String expected = "lastName";
+ assertEquals(expected, Util.underscoredToJava("lastName", false));
+ }
+
+ @Test
+ public void testUnderscoredToJava4() throws Exception {
+ String expected = "lastName";
+ assertEquals(expected, Util.underscoredToJava("LastName", false));
+ }
+
+ @Test
+ public void testUnderscoredToJava5() throws Exception {
+ String expected = "LastName";
+ assertEquals(expected, Util.underscoredToJava("LastName", true));
+ }
+
+ @Test
+ public void testUnderscoredToJavaSpecialChars() throws Exception {
+ assertEquals("ABCpoundXyz", Util.underscoredToJava("ABC#_XYZ", true));
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
index d99a577..a9d1dfe 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
@@ -19,7 +19,6 @@
package org.apache.cayenne.gen;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.util.Util;
@@ -46,6 +45,6 @@ public class ClientDataMapArtifact extends DataMapArtifact {
clientPrefix = "Client_";
}
- return dataMap.getNameWithDefaultClientPackage(NameConverter.underscoredToJava(clientPrefix + dataMap.getName(), true));
+ return dataMap.getNameWithDefaultClientPackage(Util.underscoredToJava(clientPrefix + dataMap.getName(), true));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
index e01d002..8e60495 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
@@ -19,9 +19,9 @@
package org.apache.cayenne.gen;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.util.Util;
import org.apache.velocity.VelocityContext;
import java.util.Collection;
@@ -58,7 +58,7 @@ public class DataMapArtifact implements Artifact {
}
public String getQualifiedClassName() {
- return dataMap.getNameWithDefaultPackage(NameConverter.underscoredToJava(dataMap.getName(), true));
+ return dataMap.getNameWithDefaultPackage(Util.underscoredToJava(dataMap.getName(), true));
}
public Object getObject() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
index 9d5c75a..a0013cc 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
@@ -19,17 +19,6 @@
package org.apache.cayenne.gen;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionException;
import org.apache.cayenne.exp.ExpressionParameter;
@@ -42,11 +31,22 @@ import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.PathComponent;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.map.SelectQueryDescriptor;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.query.Ordering;
import org.apache.cayenne.util.CayenneMapEntry;
+import org.apache.cayenne.util.Util;
import org.apache.commons.collections.set.ListOrderedSet;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* Attributes and Methods for working with Queries.
*
@@ -64,7 +64,7 @@ public class DataMapUtils {
* @return Method name that perform query.
*/
public String getQueryMethodName(QueryDescriptor query) {
- return NameConverter.underscoredToJava(query.getName(), true);
+ return Util.underscoredToJava(query.getName(), true);
}
/**
@@ -136,7 +136,7 @@ public class DataMapUtils {
Matcher matcher = pattern.matcher(qualifierString);
while (matcher.find()) {
String name = matcher.group();
- result.add(NameConverter.underscoredToJava(name.substring(1), false));
+ result.add(Util.underscoredToJava(name.substring(1), false));
}
return result;
@@ -209,7 +209,7 @@ public class DataMapUtils {
}
for (String name : names) {
- types.put(NameConverter.underscoredToJava(name, false), typeName);
+ types.put(Util.underscoredToJava(name, false), typeName);
}
return types;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
index 34ccfb3..5473142 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
@@ -20,7 +20,6 @@
package org.apache.cayenne.gen;
import org.apache.cayenne.project.validation.NameValidationHelper;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.util.Util;
/**
@@ -112,7 +111,27 @@ public class StringUtils {
if (name == null || name.length() == 0)
return name;
- return NameConverter.javaToUnderscored(name);
+ // clear of non-java chars. While the method name implies that a passed identifier
+ // is pure Java, it is used to build pk columns names and such, so extra safety
+ // check is a good idea
+ name = Util.specialCharsToJava(name);
+
+ char charArray[] = name.toCharArray();
+ StringBuilder buffer = new StringBuilder();
+
+ for (int i = 0; i < charArray.length; i++) {
+ if ((Character.isUpperCase(charArray[i])) && (i != 0)) {
+
+ char prevChar = charArray[i - 1];
+ if ((Character.isLowerCase(prevChar))) {
+ buffer.append("_");
+ }
+ }
+
+ buffer.append(Character.toUpperCase(charArray[i]));
+ }
+
+ return buffer.toString();
}
/**
[3/5] cayenne git commit: CAY-2116 Split schema synchronization code
in a separate module
Posted by aa...@apache.org.
CAY-2116 Split schema synchronization code in a separate module
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/2df9f66d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/2df9f66d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/2df9f66d
Branch: refs/heads/master
Commit: 2df9f66d8d56b201120cd984614a0e00b0aef4f5
Parents: 633303c
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Sep 30 17:34:49 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Sep 30 18:24:56 2016 +0300
----------------------------------------------------------------------
.../dbsync/merge/CreateTableToModel.java | 2 +-
.../naming/DefaultObjectNameGenerator.java | 1 -
.../naming/LegacyObjectNameGenerator.java | 1 -
.../dbsync/reverse/naming/NameConverter.java | 154 ++++++++++++++++++
.../reverse/naming/NameConverterTest.java | 115 ++++++++++++++
.../cayenne/map/naming/NameConverter.java | 157 -------------------
.../apache/cayenne/util/NameConverterTest.java | 116 --------------
.../cayenne/gen/ClientDataMapArtifact.java | 9 +-
.../org/apache/cayenne/gen/DataMapArtifact.java | 11 +-
.../org/apache/cayenne/gen/DataMapUtils.java | 2 +-
.../org/apache/cayenne/gen/StringUtils.java | 2 +-
.../action/CreateCallbackMethodAction.java | 2 +-
.../modeler/action/CreateObjEntityAction.java | 2 +-
.../cayenne/modeler/editor/CallbackType.java | 2 +-
14 files changed, 284 insertions(+), 292 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
index 69e18b3..0997e9b 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/CreateTableToModel.java
@@ -22,7 +22,7 @@ import org.apache.cayenne.dbsync.merge.factory.MergerTokenFactory;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.naming.NameConverter;
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
/**
* A {@link MergerToken} to add a {@link DbEntity} to a {@link DataMap}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
index 8cb59db..d299338 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
-import org.apache.cayenne.map.naming.NameConverter;
import org.jvnet.inflector.Noun;
import java.util.Locale;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
index 47e7ea5..16f7f7a 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.dbsync.reverse.db.ExportedKey;
-import org.apache.cayenne.map.naming.NameConverter;
/**
* BasicNamingStrategy is an naming strategy that creates names in Cayenne's
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java
new file mode 100644
index 0000000..63c4dcb
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/NameConverter.java
@@ -0,0 +1,154 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.reverse.naming;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+/**
+ * Utility class to convert from different naming styles to Java convention. For example
+ * names like "ABCD_EFG" can be converted to "abcdEfg".
+ */
+// TODO: deprecate
+public class NameConverter {
+
+ private static final Map<String, String> SPECIAL_CHAR_TO_JAVA_MAPPING = new HashMap<>();
+
+ static {
+ SPECIAL_CHAR_TO_JAVA_MAPPING.put("#", "pound");
+ }
+
+ /**
+ * Converts a String name to a String following java convention for the static final
+ * variables. E.g. "abcXyz" will be converted to "ABC_XYZ".
+ */
+ // TODO: move to the only user....
+ public static String javaToUnderscored(String name) {
+ if (name == null) {
+ return null;
+ }
+
+ // clear of non-java chars. While the method name implies that a passed identifier
+ // is pure Java, it is used to build pk columns names and such, so extra safety
+ // check is a good idea
+ name = specialCharsToJava(name);
+
+ char charArray[] = name.toCharArray();
+ StringBuilder buffer = new StringBuilder();
+
+ for (int i = 0; i < charArray.length; i++) {
+ if ((Character.isUpperCase(charArray[i])) && (i != 0)) {
+
+ char prevChar = charArray[i - 1];
+ if ((Character.isLowerCase(prevChar))) {
+ buffer.append("_");
+ }
+ }
+
+ buffer.append(Character.toUpperCase(charArray[i]));
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * Converts names like "ABCD_EFG_123" to Java-style names like "abcdEfg123". If
+ * <code>capitalize</code> is true, returned name is capitalized (for instance if
+ * this is a class name).
+ *
+ * @since 1.2
+ */
+ // TODO: migrate users to ObjectNameGenerator
+ public static String underscoredToJava(String name, boolean capitalize) {
+ StringTokenizer st = new StringTokenizer(name, "_");
+ StringBuilder buf = new StringBuilder();
+
+ boolean first = true;
+ while (st.hasMoreTokens()) {
+ String token = st.nextToken();
+
+ // clear of non-java chars
+ token = specialCharsToJava(token);
+
+ int len = token.length();
+ if (len == 0) {
+ continue;
+ }
+
+ // sniff mixed case vs. single case styles
+ boolean hasLowerCase = false;
+ boolean hasUpperCase = false;
+ for (int i = 0; i < len && !(hasUpperCase && hasLowerCase); i++) {
+ if (Character.isUpperCase(token.charAt(i))) {
+ hasUpperCase = true;
+ } else if (Character.isLowerCase(token.charAt(i))) {
+ hasLowerCase = true;
+ }
+ }
+
+ // if mixed case, preserve it, if all upper, convert to lower
+ if (hasUpperCase && !hasLowerCase) {
+ token = token.toLowerCase();
+ }
+
+ if (first) {
+ // apply explicit capitalization rules, if this is the first token
+ first = false;
+ if (capitalize) {
+ buf.append(Character.toUpperCase(token.charAt(0)));
+ } else {
+ buf.append(Character.toLowerCase(token.charAt(0)));
+ }
+ } else {
+ buf.append(Character.toUpperCase(token.charAt(0)));
+ }
+
+ if (len > 1) {
+ buf.append(token.substring(1, len));
+ }
+ }
+ return buf.toString();
+ }
+
+ /**
+ * Replaces special chars with human-readable and Java-id-compatible symbols.
+ */
+ static String specialCharsToJava(String string) {
+ int len = string.length();
+ if (len == 0) {
+ return string;
+ }
+
+ StringBuilder buffer = new StringBuilder(len);
+ for (int i = 0; i < len; i++) {
+
+ char c = string.charAt(i);
+ if (Character.isJavaIdentifierPart(c)) {
+ buffer.append(c);
+ } else {
+ Object word = SPECIAL_CHAR_TO_JAVA_MAPPING.get(String.valueOf(c));
+ buffer.append(word != null ? word : "_");
+ }
+ }
+
+ return buffer.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java
new file mode 100644
index 0000000..1c52f6e
--- /dev/null
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/NameConverterTest.java
@@ -0,0 +1,115 @@
+/*****************************************************************
+ * 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
+ *
+ * http://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.reverse.naming;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class NameConverterTest {
+
+ @Test
+ public void testUnderscoredToJava1() throws Exception {
+ String expected = "ClassNameIdentifier";
+ assertEquals(expected, NameConverter.underscoredToJava(
+ "_CLASS_NAME_IDENTIFIER_",
+ true));
+ }
+
+ @Test
+ public void testUnderscoredToJava2() throws Exception {
+ String expected = "propNameIdentifier123";
+ assertEquals(expected, NameConverter.underscoredToJava(
+ "_prop_name_Identifier_123",
+ false));
+ }
+
+ @Test
+ public void testUnderscoredToJava3() throws Exception {
+ String expected = "lastName";
+ assertEquals(expected, NameConverter.underscoredToJava("lastName", false));
+ }
+
+ @Test
+ public void testUnderscoredToJava4() throws Exception {
+ String expected = "lastName";
+ assertEquals(expected, NameConverter.underscoredToJava("LastName", false));
+ }
+
+ @Test
+ public void testUnderscoredToJava5() throws Exception {
+ String expected = "LastName";
+ assertEquals(expected, NameConverter.underscoredToJava("LastName", true));
+ }
+
+ @Test
+ public void testUnderscoredToJavaSpecialChars() throws Exception {
+ assertEquals("ABCpoundXyz", NameConverter.underscoredToJava("ABC#_XYZ", true));
+ }
+
+ @Test
+ public void testJavaToUnderscored1() throws Exception {
+ String expected = "LAST_NAME";
+ assertEquals(expected, NameConverter.javaToUnderscored("LastName"));
+ }
+
+ @Test
+ public void testJavaToUnderscored2() throws Exception {
+ String expected = "A_CLASS";
+ assertEquals(expected, NameConverter.javaToUnderscored("aClass"));
+ }
+
+ @Test
+ public void testJavaToUnderscored3() throws Exception {
+ String expected = "VAR_A";
+ assertEquals(expected, NameConverter.javaToUnderscored("varA"));
+ }
+
+ @Test
+ public void testJavaToUnderscored4() throws Exception {
+ String expected = "LAST_NAME";
+ assertEquals(expected, NameConverter.javaToUnderscored("LAST_NAME"));
+ }
+
+ @Test
+ public void testJavaToUnderscored5() throws Exception {
+ String expected = "ABC_A";
+ assertEquals(expected, NameConverter.javaToUnderscored("abc_A"));
+ }
+
+ @Test
+ public void testJavaToUnderscored6() throws Exception {
+ String expected = "A123";
+ assertEquals(expected, NameConverter.javaToUnderscored("a123"));
+ }
+
+ @Test
+ public void testJavaToUnderscored7() throws Exception {
+ String expected = "AB_CDEF";
+ assertEquals(expected, NameConverter.javaToUnderscored("abCDEF"));
+ }
+
+ @Test
+ public void testJavaToUnderscored8() throws Exception {
+ String expected = "AB_CE";
+ assertEquals(expected, NameConverter.javaToUnderscored("abCe"));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameConverter.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameConverter.java
deleted file mode 100644
index 7e4ceed..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameConverter.java
+++ /dev/null
@@ -1,157 +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
- *
- * http://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.map.naming;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-/**
- * Utility class to convert from different naming styles to Java convention. For example
- * names like "ABCD_EFG" can be converted to "abcdEfg".
- */
-public class NameConverter {
-
- private static final Map<String, String> SPECIAL_CHAR_TO_JAVA_MAPPING = new HashMap<>();
-
- static {
- SPECIAL_CHAR_TO_JAVA_MAPPING.put("#", "pound");
- }
-
- /**
- * Converts a String name to a String forllowing java convention for the static final
- * variables. E.g. "abcXyz" will be converted to "ABC_XYZ".
- *
- * @since 1.0.3
- */
- public static String javaToUnderscored(String name) {
- if (name == null) {
- return null;
- }
-
- // clear of non-java chars. While the method name implies that a passed identifier
- // is pure Java, it is used to build pk columns names and such, so extra safety
- // check is a good idea
- name = specialCharsToJava(name);
-
- char charArray[] = name.toCharArray();
- StringBuilder buffer = new StringBuilder();
-
- for (int i = 0; i < charArray.length; i++) {
- if ((Character.isUpperCase(charArray[i])) && (i != 0)) {
-
- char prevChar = charArray[i - 1];
- if ((Character.isLowerCase(prevChar))) {
- buffer.append("_");
- }
- }
-
- buffer.append(Character.toUpperCase(charArray[i]));
- }
-
- return buffer.toString();
- }
-
- /**
- * Converts names like "ABCD_EFG_123" to Java-style names like "abcdEfg123". If
- * <code>capitalize</code> is true, returned name is capitalized (for instance if
- * this is a class name).
- *
- * @since 1.2
- */
- public static String underscoredToJava(String name, boolean capitalize) {
- StringTokenizer st = new StringTokenizer(name, "_");
- StringBuilder buf = new StringBuilder();
-
- boolean first = true;
- while (st.hasMoreTokens()) {
- String token = st.nextToken();
-
- // clear of non-java chars
- token = specialCharsToJava(token);
-
- int len = token.length();
- if (len == 0) {
- continue;
- }
-
- // sniff mixed case vs. single case styles
- boolean hasLowerCase = false;
- boolean hasUpperCase = false;
- for (int i = 0; i < len && !(hasUpperCase && hasLowerCase); i++) {
- if (Character.isUpperCase(token.charAt(i))) {
- hasUpperCase = true;
- }
- else if (Character.isLowerCase(token.charAt(i))) {
- hasLowerCase = true;
- }
- }
-
- // if mixed case, preserve it, if all upper, convert to lower
- if (hasUpperCase && !hasLowerCase) {
- token = token.toLowerCase();
- }
-
- if (first) {
- // apply explicit capitalization rules, if this is the first token
- first = false;
- if (capitalize) {
- buf.append(Character.toUpperCase(token.charAt(0)));
- }
- else {
- buf.append(Character.toLowerCase(token.charAt(0)));
- }
- }
- else {
- buf.append(Character.toUpperCase(token.charAt(0)));
- }
-
- if (len > 1) {
- buf.append(token.substring(1, len));
- }
- }
- return buf.toString();
- }
-
- /**
- * Replaces special chars with human-readable and Java-id-compatible symbols.
- */
- public static String specialCharsToJava(String string) {
- int len = string.length();
- if (len == 0) {
- return string;
- }
-
- StringBuilder buffer = new StringBuilder(len);
- for (int i = 0; i < len; i++) {
-
- char c = string.charAt(i);
- if (Character.isJavaIdentifierPart(c)) {
- buffer.append(c);
- }
- else {
- Object word = SPECIAL_CHAR_TO_JAVA_MAPPING.get(String.valueOf(c));
- buffer.append(word != null ? word : "_");
- }
- }
-
- return buffer.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-server/src/test/java/org/apache/cayenne/util/NameConverterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/util/NameConverterTest.java b/cayenne-server/src/test/java/org/apache/cayenne/util/NameConverterTest.java
deleted file mode 100644
index 61b7e5f..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/util/NameConverterTest.java
+++ /dev/null
@@ -1,116 +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
- *
- * http://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.util;
-
-import org.apache.cayenne.map.naming.NameConverter;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class NameConverterTest {
-
- @Test
- public void testUnderscoredToJava1() throws Exception {
- String expected = "ClassNameIdentifier";
- assertEquals(expected, NameConverter.underscoredToJava(
- "_CLASS_NAME_IDENTIFIER_",
- true));
- }
-
- @Test
- public void testUnderscoredToJava2() throws Exception {
- String expected = "propNameIdentifier123";
- assertEquals(expected, NameConverter.underscoredToJava(
- "_prop_name_Identifier_123",
- false));
- }
-
- @Test
- public void testUnderscoredToJava3() throws Exception {
- String expected = "lastName";
- assertEquals(expected, NameConverter.underscoredToJava("lastName", false));
- }
-
- @Test
- public void testUnderscoredToJava4() throws Exception {
- String expected = "lastName";
- assertEquals(expected, NameConverter.underscoredToJava("LastName", false));
- }
-
- @Test
- public void testUnderscoredToJava5() throws Exception {
- String expected = "LastName";
- assertEquals(expected, NameConverter.underscoredToJava("LastName", true));
- }
-
- @Test
- public void testUnderscoredToJavaSpecialChars() throws Exception {
- assertEquals("ABCpoundXyz", NameConverter.underscoredToJava("ABC#_XYZ", true));
- }
-
- @Test
- public void testJavaToUnderscored1() throws Exception {
- String expected = "LAST_NAME";
- assertEquals(expected, NameConverter.javaToUnderscored("LastName"));
- }
-
- @Test
- public void testJavaToUnderscored2() throws Exception {
- String expected = "A_CLASS";
- assertEquals(expected, NameConverter.javaToUnderscored("aClass"));
- }
-
- @Test
- public void testJavaToUnderscored3() throws Exception {
- String expected = "VAR_A";
- assertEquals(expected, NameConverter.javaToUnderscored("varA"));
- }
-
- @Test
- public void testJavaToUnderscored4() throws Exception {
- String expected = "LAST_NAME";
- assertEquals(expected, NameConverter.javaToUnderscored("LAST_NAME"));
- }
-
- @Test
- public void testJavaToUnderscored5() throws Exception {
- String expected = "ABC_A";
- assertEquals(expected, NameConverter.javaToUnderscored("abc_A"));
- }
-
- @Test
- public void testJavaToUnderscored6() throws Exception {
- String expected = "A123";
- assertEquals(expected, NameConverter.javaToUnderscored("a123"));
- }
-
- @Test
- public void testJavaToUnderscored7() throws Exception {
- String expected = "AB_CDEF";
- assertEquals(expected, NameConverter.javaToUnderscored("abCDEF"));
- }
-
- @Test
- public void testJavaToUnderscored8() throws Exception {
- String expected = "AB_CE";
- assertEquals(expected, NameConverter.javaToUnderscored("abCe"));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
index 0e6da3e..d99a577 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/ClientDataMapArtifact.java
@@ -19,13 +19,13 @@
package org.apache.cayenne.gen;
-import java.util.Collection;
-
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.naming.NameConverter;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.util.Util;
+import java.util.Collection;
+
public class ClientDataMapArtifact extends DataMapArtifact {
public ClientDataMapArtifact(DataMap dataMap, Collection<QueryDescriptor> queries) {
@@ -46,7 +46,6 @@ public class ClientDataMapArtifact extends DataMapArtifact {
clientPrefix = "Client_";
}
- return dataMap.getNameWithDefaultClientPackage(NameConverter
- .underscoredToJava(clientPrefix + NameConverter.specialCharsToJava(dataMap.getName()), true));
+ return dataMap.getNameWithDefaultClientPackage(NameConverter.underscoredToJava(clientPrefix + dataMap.getName(), true));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
index 838f1c6..e01d002 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapArtifact.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.gen;
-import java.util.Collection;
-import java.util.LinkedList;
-
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.QueryDescriptor;
-import org.apache.cayenne.map.naming.NameConverter;
import org.apache.velocity.VelocityContext;
+import java.util.Collection;
+import java.util.LinkedList;
+
/**
* {@link Artifact} facade for a DataMap.
*
@@ -58,8 +58,7 @@ public class DataMapArtifact implements Artifact {
}
public String getQualifiedClassName() {
- return dataMap.getNameWithDefaultPackage(NameConverter
- .underscoredToJava(NameConverter.specialCharsToJava(dataMap.getName()), true));
+ return dataMap.getNameWithDefaultPackage(NameConverter.underscoredToJava(dataMap.getName(), true));
}
public Object getObject() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
index 64a3a38..9d5c75a 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/DataMapUtils.java
@@ -42,7 +42,7 @@ import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.PathComponent;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.map.SelectQueryDescriptor;
-import org.apache.cayenne.map.naming.NameConverter;
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.query.Ordering;
import org.apache.cayenne.util.CayenneMapEntry;
import org.apache.commons.collections.set.ListOrderedSet;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java b/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
index bd5c453..34ccfb3 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/gen/StringUtils.java
@@ -20,7 +20,7 @@
package org.apache.cayenne.gen;
import org.apache.cayenne.project.validation.NameValidationHelper;
-import org.apache.cayenne.map.naming.NameConverter;
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.util.Util;
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
index 5835ac9..df6a43a 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.modeler.editor.CallbackType;
import org.apache.cayenne.modeler.event.CallbackMethodEvent;
import org.apache.cayenne.modeler.undo.CreateCallbackMethodUndoableEdit;
import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.map.naming.NameConverter;
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
/**
* Action class for creating callback methods on ObjEntity
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/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 cb656d9..8b4406b 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
@@ -29,7 +29,7 @@ import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
-import org.apache.cayenne.map.naming.NameConverter;
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.EntityDisplayEvent;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2df9f66d/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
index f0de775..932e345 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.modeler.editor;
import java.io.Serializable;
import org.apache.cayenne.map.LifecycleEvent;
-import org.apache.cayenne.map.naming.NameConverter;
+import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
/**
* Entity for callback type. Contains type and type name
[4/5] cayenne git commit: CAY-2116 Split schema synchronization code
in a separate module
Posted by aa...@apache.org.
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/cayenne-tools/src/test/java/org/apache/cayenne/gen/StringUtilsTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/gen/StringUtilsTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/gen/StringUtilsTest.java
index 1ec6bd3..1fe187e 100644
--- a/cayenne-tools/src/test/java/org/apache/cayenne/gen/StringUtilsTest.java
+++ b/cayenne-tools/src/test/java/org/apache/cayenne/gen/StringUtilsTest.java
@@ -49,4 +49,53 @@ public class StringUtilsTest {
assertEquals(null, stringUtils.pluralize(null));
}
+
+ @Test
+ public void testCapitalizedAsConstant1() throws Exception {
+ String expected = "LAST_NAME";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("LastName"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant2() throws Exception {
+ String expected = "A_CLASS";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("aClass"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant3() throws Exception {
+ String expected = "VAR_A";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("varA"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant4() throws Exception {
+ String expected = "LAST_NAME";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("LAST_NAME"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant5() throws Exception {
+ String expected = "ABC_A";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("abc_A"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant6() throws Exception {
+ String expected = "A123";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("a123"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant7() throws Exception {
+ String expected = "AB_CDEF";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("abCDEF"));
+ }
+
+ @Test
+ public void testCapitalizedAsConstant8() throws Exception {
+ String expected = "AB_CE";
+ assertEquals(expected, stringUtils.capitalizedAsConstant("abCe"));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
index 970aafb..5ee3c0e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
@@ -36,8 +36,8 @@ import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.AttributeEvent;
import org.apache.cayenne.map.event.EmbeddableAttributeEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.AttributeDisplayEvent;
@@ -77,7 +77,7 @@ public class CreateAttributeAction extends CayenneAction {
Embeddable embeddable = mediator.getCurrentEmbeddable();
EmbeddableAttribute attr = new EmbeddableAttribute();
- attr.setName(UniqueNameGenerator.generate(NameCheckers.embeddableAttribute, embeddable));
+ attr.setName(DuplicateNameResolver.resolve(NameCheckers.embeddableAttribute, embeddable));
createEmbAttribute(embeddable, attr);
@@ -89,7 +89,7 @@ public class CreateAttributeAction extends CayenneAction {
ObjEntity objEntity = mediator.getCurrentObjEntity();
- ObjAttribute attr = new ObjAttribute(UniqueNameGenerator.generate(NameCheckers.objAttribute, objEntity), null, objEntity);
+ ObjAttribute attr = new ObjAttribute(DuplicateNameResolver.resolve(NameCheckers.objAttribute, objEntity), null, objEntity);
createObjAttribute(mediator.getCurrentDataMap(), objEntity, attr);
@@ -99,7 +99,7 @@ public class CreateAttributeAction extends CayenneAction {
} else if (getProjectController().getCurrentDbEntity() != null) {
DbEntity dbEntity = getProjectController().getCurrentDbEntity();
- DbAttribute attr = new DbAttribute(UniqueNameGenerator.generate(NameCheckers.dbAttribute, dbEntity),
+ DbAttribute attr = new DbAttribute(DuplicateNameResolver.resolve(NameCheckers.dbAttribute, dbEntity),
TypesMapping.NOT_DEFINED, dbEntity);
createDbAttribute(mediator.getCurrentDataMap(), dbEntity, attr);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
index df6a43a..cc37948 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
@@ -18,19 +18,19 @@
****************************************************************/
package org.apache.cayenne.modeler.action;
-import java.awt.event.ActionEvent;
-
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.map.CallbackMap;
import org.apache.cayenne.map.LifecycleEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.editor.CallbackType;
import org.apache.cayenne.modeler.event.CallbackMethodEvent;
import org.apache.cayenne.modeler.undo.CreateCallbackMethodUndoableEdit;
import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
+import org.apache.cayenne.util.Util;
+
+import java.awt.event.ActionEvent;
/**
* Action class for creating callback methods on ObjEntity
@@ -76,9 +76,8 @@ public class CreateCallbackMethodAction extends CayenneAction {
public final void performAction(ActionEvent e) {
CallbackType callbackType = getProjectController().getCurrentCallbackType();
- // generate methodName
String methodNamePrefix = toMethodName(callbackType.getType());
- String methodName = UniqueNameGenerator.generate(NameCheckers.objCallbackMethod, getProjectController().getCurrentObjEntity(), methodNamePrefix);
+ String methodName = DuplicateNameResolver.resolve(NameCheckers.objCallbackMethod, getProjectController().getCurrentObjEntity(), methodNamePrefix);
createCallbackMethod(callbackType, methodName);
application.getUndoManager().addEdit(
@@ -102,7 +101,7 @@ public class CreateCallbackMethodAction extends CayenneAction {
}
private String toMethodName(LifecycleEvent event) {
- return "on" + NameConverter.underscoredToJava(event.name(), true);
+ return "on" + Util.underscoredToJava(event.name(), true);
}
public static String getActionName() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
index aecc843..8403cb7 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
@@ -23,8 +23,8 @@ import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.undo.CreateDataMapUndoableEdit;
@@ -63,7 +63,7 @@ public class CreateDataMapAction extends CayenneAction {
.getProject()
.getRootNode();
- DataMap map = new DataMap(UniqueNameGenerator.generate(NameCheckers.dataMap, currentDomain));
+ DataMap map = new DataMap(DuplicateNameResolver.resolve(NameCheckers.dataMap, currentDomain));
createDataMap(map);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
index ec2520b..abeaee3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
@@ -28,8 +28,8 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.EntityDisplayEvent;
@@ -63,7 +63,7 @@ public class CreateDbEntityAction extends CayenneAction {
ProjectController mediator = getProjectController();
DataMap map = mediator.getCurrentDataMap();
- DbEntity entity = new DbEntity(UniqueNameGenerator.generate(NameCheckers.dbEntity, map));
+ DbEntity entity = new DbEntity(DuplicateNameResolver.resolve(NameCheckers.dbEntity, map));
createEntity(map, entity);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
index 05a00a4..7fea640 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
@@ -27,8 +27,8 @@ import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.EmbeddableEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent;
@@ -56,7 +56,7 @@ public class CreateEmbeddableAction extends CayenneAction {
DataMap dataMap = mediator.getCurrentDataMap();
- Embeddable embeddable = new Embeddable(UniqueNameGenerator.generate(NameCheckers.embeddable, mediator.getCurrentDataMap()));
+ Embeddable embeddable = new Embeddable(DuplicateNameResolver.resolve(NameCheckers.embeddable, mediator.getCurrentDataMap()));
createEmbeddable(dataMap, embeddable);
application.getUndoManager().addEdit(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
index 4dfc3f3..eb0fbf9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
@@ -29,8 +29,8 @@ import org.apache.cayenne.configuration.event.DataNodeEvent;
import org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.DataNodeDisplayEvent;
@@ -104,7 +104,7 @@ public class CreateNodeAction extends CayenneAction {
* A factory method that makes a new DataNode.
*/
DataNodeDescriptor buildDataNode(DataChannelDescriptor domain) {
- DataNodeDescriptor node = new DataNodeDescriptor(UniqueNameGenerator.generate(
+ DataNodeDescriptor node = new DataNodeDescriptor(DuplicateNameResolver.resolve(
NameCheckers.dataNodeDescriptor, domain));
node.setDataChannelDescriptor(domain);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/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 8b4406b..254f18e 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
@@ -22,20 +22,20 @@ package org.apache.cayenne.modeler.action;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.dbsync.merge.EntityMergeSupport;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.EntityDisplayEvent;
import org.apache.cayenne.modeler.undo.CreateObjEntityUndoableEdit;
import org.apache.cayenne.modeler.util.CayenneAction;
import org.apache.cayenne.util.DeleteRuleUpdater;
+import org.apache.cayenne.util.Util;
import java.awt.event.ActionEvent;
@@ -69,7 +69,7 @@ public class CreateObjEntityAction extends CayenneAction {
ProjectController mediator = getProjectController();
DataMap dataMap = mediator.getCurrentDataMap();
- ObjEntity entity = new ObjEntity(UniqueNameGenerator.generate(NameCheckers.objEntity, dataMap));
+ ObjEntity entity = new ObjEntity(DuplicateNameResolver.resolve(NameCheckers.objEntity, dataMap));
// init defaults
entity.setSuperClassName(dataMap.getDefaultSuperclass());
@@ -78,8 +78,8 @@ public class CreateObjEntityAction extends CayenneAction {
DbEntity dbEntity = mediator.getCurrentDbEntity();
if (dbEntity != null) {
entity.setDbEntity(dbEntity);
- String baseName = NameConverter.underscoredToJava(dbEntity.getName(), true);
- entity.setName(UniqueNameGenerator.generate(NameCheckers.objEntity, dbEntity.getDataMap(), baseName));
+ String baseName = Util.underscoredToJava(dbEntity.getName(), true);
+ entity.setName(DuplicateNameResolver.resolve(NameCheckers.objEntity, dbEntity.getDataMap(), baseName));
}
entity.setClassName(dataMap.getNameWithDefaultPackage(entity.getName()));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
index ba060b8..7787abc 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
@@ -27,8 +27,8 @@ import org.apache.cayenne.configuration.event.ProcedureEvent;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.ProcedureDisplayEvent;
@@ -52,7 +52,7 @@ public class CreateProcedureAction extends CayenneAction {
ProjectController mediator = getProjectController();
DataMap map = mediator.getCurrentDataMap();
- Procedure procedure = new Procedure(UniqueNameGenerator.generate(NameCheckers.procedure, map));
+ Procedure procedure = new Procedure(DuplicateNameResolver.resolve(NameCheckers.procedure, map));
createProcedure(map, procedure);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
index 70aaa5c..e939f86 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
@@ -27,8 +27,8 @@ import org.apache.cayenne.configuration.event.ProcedureParameterEvent;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.ProcedureParameterDisplayEvent;
@@ -64,7 +64,7 @@ public class CreateProcedureParameterAction extends CayenneAction {
public void createProcedureParameter() {
Procedure procedure = getProjectController().getCurrentProcedure();
- ProcedureParameter parameter = new ProcedureParameter(UniqueNameGenerator.generate(
+ ProcedureParameter parameter = new ProcedureParameter(DuplicateNameResolver.resolve(
NameCheckers.procedureParameter, procedure));
procedure.addCallParameter(parameter);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
index 1f62b77..8abec0c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
@@ -31,8 +31,8 @@ import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.RelationshipDisplayEvent;
@@ -66,7 +66,7 @@ public class CreateRelationshipAction extends CayenneAction {
ObjEntity objEnt = getProjectController().getCurrentObjEntity();
if (objEnt != null) {
- ObjRelationship rel = new ObjRelationship(UniqueNameGenerator.generate(NameCheckers.objRelationship,
+ ObjRelationship rel = new ObjRelationship(DuplicateNameResolver.resolve(NameCheckers.objRelationship,
objEnt));
createObjRelationship(objEnt, rel);
@@ -76,7 +76,7 @@ public class CreateRelationshipAction extends CayenneAction {
DbEntity dbEnt = getProjectController().getCurrentDbEntity();
if (dbEnt != null) {
- DbRelationship rel = new DbRelationship(UniqueNameGenerator.generate(
+ DbRelationship rel = new DbRelationship(DuplicateNameResolver.resolve(
NameCheckers.dbRelationship, dbEnt));
createDbRelationship(dbEnt, rel);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
index f662b64..3158e90 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
@@ -31,8 +31,8 @@ import javax.swing.JOptionPane;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.MapLoader;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.FSPath;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -85,9 +85,9 @@ public class ImportDataMapAction extends CayenneAction {
DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController().getProject().getRootNode();
if (newMap.getName() != null) {
- newMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, domain, newMap.getName()));
+ newMap.setName(DuplicateNameResolver.resolve(NameCheckers.dataMap, domain, newMap.getName()));
} else {
- newMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, domain));
+ newMap.setName(DuplicateNameResolver.resolve(NameCheckers.dataMap, domain));
}
Resource baseResource = domain.getConfigurationSource();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
index 8672759..8c5f1c6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
@@ -45,8 +45,8 @@ import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
@@ -302,7 +302,7 @@ public class ImportEOModelAction extends CayenneAction {
else {
// fix DataMap name, as there maybe a map with the same name already
DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
- map.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, domain, map.getName()));
+ map.setName(DuplicateNameResolver.resolve(NameCheckers.dataMap, domain, map.getName()));
// side effect of this operation is that if a node was created, this DataMap
// will be linked with it...
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
index b088fd1..468ff1d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
@@ -27,8 +27,8 @@ import javax.swing.KeyStroke;
import org.apache.cayenne.configuration.ConfigurationTree;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.CayenneModelerController;
import org.apache.cayenne.modeler.event.DomainDisplayEvent;
@@ -68,7 +68,7 @@ public class NewProjectAction extends ProjectAction {
DataChannelDescriptor domain = new DataChannelDescriptor();
- domain.setName(UniqueNameGenerator.generate(NameCheckers.dataChannelDescriptor, domain));
+ domain.setName(DuplicateNameResolver.resolve(NameCheckers.dataChannelDescriptor, domain));
Project project = new Project(
new ConfigurationTree<DataChannelDescriptor>(domain));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
index 2291544..a146307 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
@@ -35,8 +35,8 @@ import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.dialog.ErrorDebugDialog;
@@ -171,7 +171,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
// paste DataMap to DataDomain or DataNode
DataMap dataMap = ((DataMap) content);
- dataMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, COPY_PATTERN, domain, dataMap.getName()));
+ dataMap.setName(DuplicateNameResolver.resolve(NameCheckers.dataMap, COPY_PATTERN, domain, dataMap.getName()));
/**
* Update all names in the new DataMap, so that they would not conflict with
@@ -187,7 +187,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
for (DbEntity dbEntity : dataMap.getDbEntities()) {
String oldName = dbEntity.getName();
- dbEntity.setName(UniqueNameGenerator.generate(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
+ dbEntity.setName(DuplicateNameResolver.resolve(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
if (!oldName.equals(dbEntity.getName())) {
renamedDbEntities.put(oldName, dbEntity.getName());
@@ -195,7 +195,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
for (ObjEntity objEntity : dataMap.getObjEntities()) {
String oldName = objEntity.getName();
- objEntity.setName(UniqueNameGenerator.generate(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
+ objEntity.setName(DuplicateNameResolver.resolve(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
if (!oldName.equals(objEntity.getName())) {
renamedObjEntities.put(oldName, objEntity.getName());
@@ -204,7 +204,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
for (Embeddable embeddable : dataMap.getEmbeddables()) {
String oldName = embeddable.getClassName();
- embeddable.setClassName(UniqueNameGenerator.generate(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
+ embeddable.setClassName(DuplicateNameResolver.resolve(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
if (!oldName.equals(embeddable.getClassName())) {
renamedEmbeddables.put(oldName, embeddable.getClassName());
@@ -212,10 +212,10 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
for (Procedure procedure : dataMap.getProcedures()) {
- procedure.setName(UniqueNameGenerator.generate(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
+ procedure.setName(DuplicateNameResolver.resolve(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
}
for (QueryDescriptor query : dataMap.getQueryDescriptors()) {
- query.setName(UniqueNameGenerator.generate(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
+ query.setName(DuplicateNameResolver.resolve(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
}
// if an entity was renamed, we rename all links to it too
@@ -257,7 +257,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof DbEntity) {
DbEntity dbEntity = (DbEntity) content;
- dbEntity.setName(UniqueNameGenerator.generate(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
+ dbEntity.setName(DuplicateNameResolver.resolve(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
dataMap.addDbEntity(dbEntity);
CreateDbEntityAction.fireDbEntityEvent(this, mediator, dbEntity);
@@ -265,7 +265,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof ObjEntity) {
// paste ObjEntity to DataMap
ObjEntity objEntity = (ObjEntity) content;
- objEntity.setName(UniqueNameGenerator.generate(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
+ objEntity.setName(DuplicateNameResolver.resolve(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
dataMap.addObjEntity(objEntity);
CreateObjEntityAction.fireObjEntityEvent(
@@ -277,7 +277,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof Embeddable) {
// paste Embeddable to DataMap
Embeddable embeddable = (Embeddable) content;
- embeddable.setClassName(UniqueNameGenerator.generate(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
+ embeddable.setClassName(DuplicateNameResolver.resolve(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
dataMap.addEmbeddable(embeddable);
CreateEmbeddableAction.fireEmbeddableEvent(
@@ -289,7 +289,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof QueryDescriptor) {
QueryDescriptor query = (QueryDescriptor) content;
- query.setName(UniqueNameGenerator.generate(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
+ query.setName(DuplicateNameResolver.resolve(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
query.setDataMap(dataMap);
dataMap.addQueryDescriptor(query);
@@ -298,7 +298,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof Procedure) {
// paste Procedure to DataMap
Procedure procedure = (Procedure) content;
- procedure.setName(UniqueNameGenerator.generate(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
+ procedure.setName(DuplicateNameResolver.resolve(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
dataMap.addProcedure(procedure);
CreateProcedureAction.fireProcedureEvent(
@@ -313,7 +313,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof DbAttribute) {
DbAttribute attr = (DbAttribute) content;
- attr.setName(UniqueNameGenerator.generate(NameCheckers.dbAttribute, COPY_PATTERN, dbEntity, attr.getName()));
+ attr.setName(DuplicateNameResolver.resolve(NameCheckers.dbAttribute, COPY_PATTERN, dbEntity, attr.getName()));
dbEntity.addAttribute(attr);
CreateAttributeAction.fireDbAttributeEvent(this, mediator, mediator
@@ -321,7 +321,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
else if (content instanceof DbRelationship) {
DbRelationship rel = (DbRelationship) content;
- rel.setName(UniqueNameGenerator.generate(NameCheckers.dbRelationship, COPY_PATTERN, dbEntity, rel.getName()));
+ rel.setName(DuplicateNameResolver.resolve(NameCheckers.dbRelationship, COPY_PATTERN, dbEntity, rel.getName()));
dbEntity.addRelationship(rel);
CreateRelationshipAction.fireDbRelationshipEvent(
@@ -337,7 +337,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof ObjAttribute) {
ObjAttribute attr = (ObjAttribute) content;
- attr.setName(UniqueNameGenerator.generate(NameCheckers.objAttribute, COPY_PATTERN, objEntity, attr.getName()));
+ attr.setName(DuplicateNameResolver.resolve(NameCheckers.objAttribute, COPY_PATTERN, objEntity, attr.getName()));
objEntity.addAttribute(attr);
CreateAttributeAction.fireObjAttributeEvent(this, mediator, mediator
@@ -345,7 +345,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
else if (content instanceof ObjRelationship) {
ObjRelationship rel = (ObjRelationship) content;
- rel.setName(UniqueNameGenerator.generate(NameCheckers.objRelationship, COPY_PATTERN, objEntity, rel.getName()));
+ rel.setName(DuplicateNameResolver.resolve(NameCheckers.objRelationship, COPY_PATTERN, objEntity, rel.getName()));
objEntity.addRelationship(rel);
CreateRelationshipAction.fireObjRelationshipEvent(
@@ -357,7 +357,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if(content instanceof ObjCallbackMethod) {
ObjCallbackMethod method = (ObjCallbackMethod) content;
- method.setName(UniqueNameGenerator.generate(NameCheckers.objCallbackMethod, COPY_PATTERN, objEntity, method.getName()));
+ method.setName(DuplicateNameResolver.resolve(NameCheckers.objCallbackMethod, COPY_PATTERN, objEntity, method.getName()));
objEntity.getCallbackMap().getCallbackDescriptor(mediator.getCurrentCallbackType().getType()).addCallbackMethod(method.getName());
@@ -376,7 +376,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof EmbeddableAttribute) {
EmbeddableAttribute attr = (EmbeddableAttribute) content;
- attr.setName(UniqueNameGenerator.generate(NameCheckers.embeddableAttribute, COPY_PATTERN, embeddable, attr.getName()));
+ attr.setName(DuplicateNameResolver.resolve(NameCheckers.embeddableAttribute, COPY_PATTERN, embeddable, attr.getName()));
embeddable.addAttribute(attr);
CreateAttributeAction.fireEmbeddableAttributeEvent(
@@ -395,7 +395,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof ProcedureParameter) {
ProcedureParameter param = (ProcedureParameter) content;
- param.setName(UniqueNameGenerator.generate(NameCheckers.procedureParameter, COPY_PATTERN, procedure, param.getName()));
+ param.setName(DuplicateNameResolver.resolve(NameCheckers.procedureParameter, COPY_PATTERN, procedure, param.getName()));
procedure.addCallParameter(param);
CreateProcedureParameterAction.fireProcedureParameterEvent(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
index 13a4aa5..08c0c1f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
@@ -25,8 +25,8 @@ import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.event.DataMapEvent;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.CayenneModelerController;
import org.apache.cayenne.modeler.ProjectController;
@@ -55,8 +55,8 @@ public class ReverseEngineeringAction extends CayenneAction {
DataMap dataMap = projectController.getCurrentDataMap();
DataChannelDescriptor dataChannelDescriptor = projectController.getCurrentDataChanel();
if (dataMap == null) {
- dataMap = new DataMap(UniqueNameGenerator.generate(NameCheckers.dataMap));
- dataMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, projectController.getProject().getRootNode()));
+ dataMap = new DataMap(DuplicateNameResolver.resolve(NameCheckers.dataMap));
+ dataMap.setName(DuplicateNameResolver.resolve(NameCheckers.dataMap, projectController.getProject().getRootNode()));
dataChannelDescriptor.getDataMaps().add(dataMap);
getProjectController().fireDataMapEvent(new DataMapEvent(this, dataMap, MapEvent.ADD));
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
index 03db3fe..9284881 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
@@ -46,8 +46,8 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.TableColumnPreferences;
import org.apache.cayenne.modeler.undo.RelationshipUndoableEdit;
@@ -292,7 +292,7 @@ public class ResolveDbRelationshipDialog extends CayenneDialog {
}
if (sourceEntityName == null) {
- sourceEntityName = UniqueNameGenerator.generate(NameCheckers.dbRelationship, relationship.getSourceEntity());
+ sourceEntityName = DuplicateNameResolver.resolve(NameCheckers.dbRelationship, relationship.getSourceEntity());
}
if (!validateName(relationship.getSourceEntity(), relationship, sourceEntityName)) {
@@ -305,7 +305,7 @@ public class ResolveDbRelationshipDialog extends CayenneDialog {
}
if (targetEntityName == null) {
- targetEntityName = UniqueNameGenerator.generate(NameCheckers.dbRelationship, relationship.getTargetEntity());
+ targetEntityName = DuplicateNameResolver.resolve(NameCheckers.dbRelationship, relationship.getTargetEntity());
}
// check if reverse name is valid
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index cbcb34e..acaafdf 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@ -35,8 +35,8 @@ import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
@@ -335,8 +335,8 @@ public class DbLoaderHelper {
DbLoaderHelper.this.existingMap = dataMap != null;
if (!existingMap) {
- dataMap = new DataMap(UniqueNameGenerator.generate(NameCheckers.dataMap));
- dataMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, mediator.getProject().getRootNode()));
+ dataMap = new DataMap(DuplicateNameResolver.resolve(NameCheckers.dataMap));
+ dataMap.setName(DuplicateNameResolver.resolve(NameCheckers.dataMap, mediator.getProject().getRootNode()));
}
if (isCanceled()) {
@@ -351,7 +351,7 @@ public class DbLoaderHelper {
reverseEngineering.setConfigurationSource(dataMap.getReverseEngineering().getConfigurationSource());
}
} else {
- reverseEngineering.setName(UniqueNameGenerator.generate(NameCheckers.reverseEngineering, dataChannelDescriptor));
+ reverseEngineering.setName(DuplicateNameResolver.resolve(NameCheckers.reverseEngineering, dataChannelDescriptor));
}
if (dataMap.getConfigurationSource() != null) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
index dd2c71d..8b0dd85 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
@@ -29,8 +29,8 @@ import org.apache.cayenne.configuration.event.QueryEvent;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.QueryDisplayEvent;
import org.apache.cayenne.modeler.undo.CreateQueryUndoableEdit;
@@ -119,7 +119,7 @@ public class QueryType extends CayenneController{
String queryType = getSelectedQuery();
// update query...
- String queryName = UniqueNameGenerator.generate(NameCheckers.query, dataMap);
+ String queryName = DuplicateNameResolver.resolve(NameCheckers.query, dataMap);
QueryDescriptor query = QueryDescriptor.descriptor(queryType);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
index 932e345..790b98a 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/CallbackType.java
@@ -18,40 +18,26 @@
****************************************************************/
package org.apache.cayenne.modeler.editor;
-import java.io.Serializable;
-
import org.apache.cayenne.map.LifecycleEvent;
-import org.apache.cayenne.dbsync.reverse.naming.NameConverter;
+import org.apache.cayenne.util.Util;
+
+import java.io.Serializable;
/**
* Entity for callback type. Contains type and type name
- *
+ *
* @version 1.0 Oct 26, 2007
*/
public class CallbackType implements Serializable {
private LifecycleEvent type;
-
- /**
- * callback type name
- */
private String name;
-
- /**
- * methods counter
- */
private int counter;
- /**
- * constructor
- *
- * @param type type id
- * @param name name
- */
public CallbackType(LifecycleEvent type) {
this.type = type;
- this.name = NameConverter.underscoredToJava(type.name(), true);
+ this.name = Util.underscoredToJava(type.name(), true);
this.counter = 0;
}
@@ -78,7 +64,7 @@ public class CallbackType implements Serializable {
/**
* Method to specify counter value
- *
+ *
* @param counter new coutner value
*/
public void setCounter(int counter) {
@@ -91,11 +77,9 @@ public class CallbackType implements Serializable {
public String toString() {
if (counter <= 0) {
return name;
- }
- else if (counter == 1) {
+ } else if (counter == 1) {
return name + " (1 method)";
- }
- else {
+ } else {
return name + " (" + counter + " methods)";
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-wocompat/pom.xml
----------------------------------------------------------------------
diff --git a/modeler/cayenne-wocompat/pom.xml b/modeler/cayenne-wocompat/pom.xml
index d52ed09..cd57281 100644
--- a/modeler/cayenne-wocompat/pom.xml
+++ b/modeler/cayenne-wocompat/pom.xml
@@ -46,6 +46,12 @@
<artifactId>cayenne-server</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.cayenne</groupId>
+ <artifactId>cayenne-dbsync</artifactId>
+ <version>${project.version}</version>
+ </dependency>
</dependencies>
<profiles>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/ad944755/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
----------------------------------------------------------------------
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 82bfa91..fac6202 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
@@ -19,6 +19,30 @@
package org.apache.cayenne.wocompat;
+import org.apache.cayenne.dba.TypesMapping;
+import org.apache.cayenne.dbsync.naming.DuplicateNameResolver;
+import org.apache.cayenne.dbsync.naming.NameCheckers;
+import org.apache.cayenne.exp.ExpressionException;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbJoin;
+import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.map.SQLTemplateDescriptor;
+import org.apache.cayenne.map.SelectQueryDescriptor;
+import org.apache.cayenne.query.Ordering;
+import org.apache.cayenne.query.QueryMetadata;
+import org.apache.cayenne.query.SortOrder;
+import org.apache.cayenne.wocompat.parser.Parser;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
+import org.apache.commons.collections.PredicateUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import java.io.File;
import java.io.InputStream;
import java.net.URL;
@@ -31,19 +55,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
-import org.apache.cayenne.dba.TypesMapping;
-import org.apache.cayenne.exp.ExpressionException;
-import org.apache.cayenne.map.*;
-import org.apache.cayenne.map.naming.UniqueNameGenerator;
-import org.apache.cayenne.map.naming.NameCheckers;
-import org.apache.cayenne.query.*;
-import org.apache.cayenne.wocompat.parser.Parser;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.PredicateUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
* Class for converting stored Apple EOModel mapping files to Cayenne DataMaps.
@@ -716,7 +727,7 @@ public class EOModelProcessor {
if (relationship.getReverseRelationship() == null) {
DbRelationship reverse = relationship.createReverseRelationship();
- String name = UniqueNameGenerator.generate(NameCheckers.dbRelationship,
+ String name = DuplicateNameResolver.resolve(NameCheckers.dbRelationship,
reverse.getSourceEntity(), relationship.getName() + "Reverse");
reverse.setName(name);
relationship.getTargetEntity().addRelationship(reverse);
[2/5] cayenne git commit: CAY-2116 Split schema synchronization code
in a separate module
Posted by aa...@apache.org.
CAY-2116 Split schema synchronization code in a separate module
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/633303cf
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/633303cf
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/633303cf
Branch: refs/heads/master
Commit: 633303cfac84cdffad50420b0ce5967e95771ca9
Parents: 3e03bc1
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Sep 30 17:34:49 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Sep 30 18:04:04 2016 +0300
----------------------------------------------------------------------
.../dbsync/merge/EntityMergeSupport.java | 6 +-
.../cayenne/dbsync/reverse/db/DbLoader.java | 6 +-
.../reverse/db/ManyToManyCandidateEntity.java | 4 +-
.../java/org/apache/cayenne/map/ObjEntity.java | 29 +++---
.../map/naming/DefaultUniqueNameGenerator.java | 96 --------------------
.../apache/cayenne/map/naming/NameChecker.java | 1 -
.../cayenne/map/naming/UniqueNameGenerator.java | 71 +++++++++++++--
.../cayenne/map/naming/NameCheckersTest.java | 38 ++++----
.../modeler/action/CreateAttributeAction.java | 8 +-
.../action/CreateCallbackMethodAction.java | 4 +-
.../modeler/action/CreateDataMapAction.java | 4 +-
.../modeler/action/CreateDbEntityAction.java | 4 +-
.../modeler/action/CreateEmbeddableAction.java | 4 +-
.../modeler/action/CreateNodeAction.java | 4 +-
.../modeler/action/CreateObjEntityAction.java | 6 +-
.../modeler/action/CreateProcedureAction.java | 4 +-
.../action/CreateProcedureParameterAction.java | 4 +-
.../action/CreateRelationshipAction.java | 6 +-
.../modeler/action/ImportDataMapAction.java | 6 +-
.../modeler/action/ImportEOModelAction.java | 4 +-
.../modeler/action/NewProjectAction.java | 4 +-
.../cayenne/modeler/action/PasteAction.java | 38 ++++----
.../action/ReverseEngineeringAction.java | 14 +--
.../dialog/ResolveDbRelationshipDialog.java | 6 +-
.../modeler/dialog/db/DbLoaderHelper.java | 8 +-
.../cayenne/modeler/dialog/query/QueryType.java | 4 +-
.../cayenne/wocompat/EOModelProcessor.java | 4 +-
27 files changed, 170 insertions(+), 217 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/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 cabdb4d..7db68af 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
@@ -29,7 +29,7 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
@@ -205,7 +205,7 @@ public class EntityMergeSupport {
private boolean createObjRelationship(ObjEntity entity, DbRelationship dr, String targetEntityName) {
String relationshipName = nameGenerator.createObjRelationshipName(dr);
- relationshipName = DefaultUniqueNameGenerator.generate(NameCheckers.objRelationship, entity, relationshipName);
+ relationshipName = UniqueNameGenerator.generate(NameCheckers.objRelationship, entity, relationshipName);
ObjRelationship or = new ObjRelationship(relationshipName);
or.addDbRelationship(dr);
@@ -279,7 +279,7 @@ public class EntityMergeSupport {
}
private void addMissingAttribute(ObjEntity entity, DbAttribute da) {
- String attrName = DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, entity,
+ String attrName = UniqueNameGenerator.generate(NameCheckers.objAttribute, entity,
nameGenerator.createObjAttributeName(da));
String type = TypesMapping.getJavaBySqlType(da.getType());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
index 2811981..5f233cd 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/DbLoader.java
@@ -34,7 +34,7 @@ import org.apache.cayenne.map.DbRelationshipDetected;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
@@ -133,7 +133,7 @@ public class DbLoader {
continue;
}
- String objEntityName = DefaultUniqueNameGenerator.generate(NameCheckers.objEntity, map,
+ String objEntityName = UniqueNameGenerator.generate(NameCheckers.objEntity, map,
nameGenerator.createObjEntityName(dbEntity));
ObjEntity objEntity = new ObjEntity(objEntityName);
@@ -439,7 +439,7 @@ public class DbLoader {
private String generateName(DbEntity entity, ExportedKey key, boolean toMany) {
String forwardPreferredName = nameGenerator.createDbRelationshipName(key, toMany);
- return DefaultUniqueNameGenerator.generate(NameCheckers.dbRelationship, entity, forwardPreferredName);
+ return UniqueNameGenerator.generate(NameCheckers.dbRelationship, entity, forwardPreferredName);
}
private void fireObjEntitiesAddedEvents(Collection<ObjEntity> loadedObjEntities) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
index 718015b..06c7d82 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntity.java
@@ -21,7 +21,7 @@ package org.apache.cayenne.dbsync.reverse.db;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.commons.logging.Log;
@@ -113,7 +113,7 @@ class ManyToManyCandidateEntity {
(short) 1);
ObjRelationship newRelationship = new ObjRelationship();
- newRelationship.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objRelationship, srcEntity,
+ newRelationship.setName(UniqueNameGenerator.generate(NameCheckers.objRelationship, srcEntity,
nameGenerator.createDbRelationshipName(key, true)));
newRelationship.setSourceEntity(srcEntity);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
index 94ddfca..de79a6a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
@@ -19,19 +19,6 @@
package org.apache.cayenne.map;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.ConfigurationNodeVisitor;
@@ -42,12 +29,24 @@ import org.apache.cayenne.exp.ExpressionException;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.ObjEntityListener;
-import org.apache.cayenne.map.naming.NameConverter;
import org.apache.cayenne.util.CayenneMapEntry;
import org.apache.cayenne.util.Util;
import org.apache.cayenne.util.XMLEncoder;
import org.apache.commons.collections.Transformer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
/**
* ObjEntity is a mapping descriptor for a DataObject Java class. It contains
* the information about the Java class itself, as well as its mapping to the
@@ -678,7 +677,7 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
// create synthetic attribute
if (attribute == null) {
- attribute = new SyntheticPKObjAttribute(NameConverter.underscoredToJava(pk.getName(), false));
+ attribute = new SyntheticPKObjAttribute(pk.getName());
attribute.setDbAttributePath(pk.getName());
attribute.setType(TypesMapping.getJavaBySqlType(pk.getType()));
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-server/src/main/java/org/apache/cayenne/map/naming/DefaultUniqueNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/DefaultUniqueNameGenerator.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/DefaultUniqueNameGenerator.java
deleted file mode 100644
index 409a48e..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/DefaultUniqueNameGenerator.java
+++ /dev/null
@@ -1,96 +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
- *
- * http://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.map.naming;
-
-import org.apache.cayenne.map.DataMap;
-
-/**
- * @since 4.0
- */
-public class DefaultUniqueNameGenerator implements UniqueNameGenerator {
-
- public static final String DEFAULT_PATTERN = "%s%d";
-
- private final NameChecker nameChecker;
-
- private final String pattern;
-
- public static String generate(NameChecker checker) {
- return generate(checker, DEFAULT_PATTERN, null, null);
- }
-
- public static String generate(NameChecker checker, Object context) {
- return generate(checker, DEFAULT_PATTERN, context, null);
- }
-
- public static String generate(NameChecker checker, Object context, String baseName) {
- return generate(checker, DEFAULT_PATTERN, context, baseName);
- }
-
- public static String generate(NameChecker checker, String pattern, Object context, String baseName) {
- DefaultUniqueNameGenerator generator;
- if (checker == NameCheckers.embeddable) {
- generator = new DefaultUniqueNameGenerator(NameCheckers.embeddable, pattern) {
- @Override
- public String generate(Object namingContext, String nameBase) {
- return ((DataMap) namingContext).getNameWithDefaultPackage(super.generate(namingContext, nameBase));
- }
- };
- } else {
- generator = new DefaultUniqueNameGenerator(checker, pattern);
- }
-
- return generator.generate(context, baseName);
- }
-
-
-
- public DefaultUniqueNameGenerator(NameChecker nameChecker, String pattern) {
- this.nameChecker = nameChecker;
- this.pattern = pattern;
- }
-
- /**
- * Creates a unique name for the new object and constructs this object.
- */
- public String generate(Object namingContext) {
- return generate(namingContext, nameChecker.baseName());
- }
-
- /**
- * @since 1.0.5
- */
- public String generate(Object namingContext, String nameBase) {
- return generate(pattern, namingContext, nameBase != null ? nameBase : nameChecker.baseName());
- }
-
- /**
- * @since 1.0.5
- */
- private String generate(String pattern, Object namingContext, String nameBase) {
- int c = 1;
- String name = nameBase;
- while (nameChecker.isNameInUse(namingContext, name)) {
- name = String.format(pattern, nameBase, c++);
- }
-
- return name;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
index 573e25a..68fdfd3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/NameChecker.java
@@ -25,7 +25,6 @@ public interface NameChecker {
/**
* Returns a base default name, like "UntitledEntity", etc.
- *
*/
String baseName();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
index d56f856..2fe6801 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/UniqueNameGenerator.java
@@ -18,15 +18,74 @@
****************************************************************/
package org.apache.cayenne.map.naming;
+import org.apache.cayenne.map.DataMap;
+
/**
- * A "filter" for the mapping artifact names generated elsewhere that ensures no
- * duplicate names are generated.
- *
* @since 4.0
*/
-public interface UniqueNameGenerator {
+public class UniqueNameGenerator {
+
+ public static final String DEFAULT_PATTERN = "%s%d";
+
+ private final NameChecker nameChecker;
+
+ private final String pattern;
+
+ public UniqueNameGenerator(NameChecker nameChecker, String pattern) {
+ this.nameChecker = nameChecker;
+ this.pattern = pattern;
+ }
+
+ public static String generate(NameChecker checker) {
+ return generate(checker, DEFAULT_PATTERN, null, null);
+ }
+
+ public static String generate(NameChecker checker, Object context) {
+ return generate(checker, DEFAULT_PATTERN, context, null);
+ }
+
+ public static String generate(NameChecker checker, Object context, String baseName) {
+ return generate(checker, DEFAULT_PATTERN, context, baseName);
+ }
+
+ public static String generate(NameChecker checker, String pattern, Object context, String baseName) {
+ UniqueNameGenerator generator;
+ if (checker == NameCheckers.embeddable) {
+ generator = new UniqueNameGenerator(NameCheckers.embeddable, pattern) {
+ @Override
+ public String generate(Object namingContext, String nameBase) {
+ return ((DataMap) namingContext).getNameWithDefaultPackage(super.generate(namingContext, nameBase));
+ }
+ };
+ } else {
+ generator = new UniqueNameGenerator(checker, pattern);
+ }
+
+ return generator.generate(context, baseName);
+ }
+
+ /**
+ * Creates a unique name for the new object and constructs this object.
+ */
+ String generate(Object namingContext) {
+ return generate(namingContext, nameChecker.baseName());
+ }
+
+ String generate(Object namingContext, String nameBase) {
+ return generate(pattern, namingContext, nameBase != null ? nameBase : nameChecker.baseName());
+ }
+
+ /**
+ * @since 1.0.5
+ */
+ private String generate(String pattern, Object namingContext, String nameBase) {
+ int c = 1;
+ String name = nameBase;
+ while (nameChecker.isNameInUse(namingContext, name)) {
+ name = String.format(pattern, nameBase, c++);
+ }
- String generate(Object namingContext);
+ return name;
+ }
- String generate(Object namingContext, String nameBase);
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java b/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
index ad67222..e3e6628 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/map/naming/NameCheckersTest.java
@@ -47,35 +47,35 @@ public class NameCheckersTest {
ObjEntity namingContainer = new ObjEntity();
String baseName = maker.baseName();
- String name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ String name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName, name);
namingContainer.addAttribute(new ObjAttribute(name));
- name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName + "1", name);
namingContainer.addAttribute(new ObjAttribute(name));
- name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName + "2", name);
namingContainer.addAttribute(new ObjAttribute(name));
- name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName + "3", name);
namingContainer.addAttribute(new ObjAttribute(name));
maker = NameCheckers.objRelationship;
baseName = maker.baseName();
- name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName, name);
namingContainer.addRelationship(new ObjRelationship(name));
- name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName + "1", name);
namingContainer.addRelationship(new ObjRelationship(name));
maker = NameCheckers.objCallbackMethod;
baseName = maker.baseName();
- name = DefaultUniqueNameGenerator.generate(maker, namingContainer);
+ name = UniqueNameGenerator.generate(maker, namingContainer);
assertEquals(baseName, name);
namingContainer.addRelationship(new ObjRelationship(name));
}
@@ -152,8 +152,8 @@ public class NameCheckersTest {
private void checkNameAndOther(Object namingContainer, NameCheckers maker, String newName) {
assertTrue(maker.isNameInUse(namingContainer, newName));
- assertEquals(newName + "1", DefaultUniqueNameGenerator.generate(maker,namingContainer, newName));
- assertEquals("other" + newName, DefaultUniqueNameGenerator.generate(maker,namingContainer, "other" + newName));
+ assertEquals(newName + "1", UniqueNameGenerator.generate(maker,namingContainer, newName));
+ assertEquals("other" + newName, UniqueNameGenerator.generate(maker,namingContainer, "other" + newName));
}
@Test
@@ -161,13 +161,13 @@ public class NameCheckersTest {
ObjEntity namingContainer = new ObjEntity();
namingContainer.addAttribute(new ObjAttribute("myName"));
- Assert.assertEquals("getMyName1", DefaultUniqueNameGenerator.generate(NameCheckers.objCallbackMethod, namingContainer, "getMyName"));
+ Assert.assertEquals("getMyName1", UniqueNameGenerator.generate(NameCheckers.objCallbackMethod, namingContainer, "getMyName"));
namingContainer.getCallbackMap().getPostAdd().addCallbackMethod("getSecondName");
- Assert.assertEquals("SecondName1", DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "SecondName"));
- Assert.assertEquals("secondName1", DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "secondName"));
- Assert.assertEquals("SecondName1", DefaultUniqueNameGenerator.generate(NameCheckers.objRelationship, namingContainer, "SecondName"));
- Assert.assertEquals("secondName1", DefaultUniqueNameGenerator.generate(NameCheckers.objRelationship, namingContainer, "secondName"));
+ Assert.assertEquals("SecondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "SecondName"));
+ Assert.assertEquals("secondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "secondName"));
+ Assert.assertEquals("SecondName1", UniqueNameGenerator.generate(NameCheckers.objRelationship, namingContainer, "SecondName"));
+ Assert.assertEquals("secondName1", UniqueNameGenerator.generate(NameCheckers.objRelationship, namingContainer, "secondName"));
}
@Test
@@ -179,8 +179,8 @@ public class NameCheckersTest {
Assert.assertFalse(NameCheckers.objAttribute.isNameInUse(namingContainer, "MyName"));
namingContainer.getCallbackMap().getPostAdd().addCallbackMethod("getSecondName");
- Assert.assertEquals("SecondName1", DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "SecondName"));
- Assert.assertEquals("secondName1", DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "secondName"));
+ Assert.assertEquals("SecondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "SecondName"));
+ Assert.assertEquals("secondName1", UniqueNameGenerator.generate(NameCheckers.objAttribute, namingContainer, "secondName"));
}
@Test
@@ -189,16 +189,16 @@ public class NameCheckersTest {
map.addEmbeddable(new Embeddable("name"));
Assert.assertTrue(NameCheckers.embeddable.isNameInUse(map, "name"));
- Assert.assertEquals("name1", DefaultUniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
+ Assert.assertEquals("name1", UniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "other-name"));
map.setDefaultPackage("package");
Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "name"));
- Assert.assertEquals("package.name", DefaultUniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
+ Assert.assertEquals("package.name", UniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
map.addEmbeddable(new Embeddable("package.name"));
Assert.assertTrue(NameCheckers.embeddable.isNameInUse(map, "name"));
- Assert.assertEquals("package.name1", DefaultUniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
+ Assert.assertEquals("package.name1", UniqueNameGenerator.generate(NameCheckers.embeddable, map, "name"));
Assert.assertFalse(NameCheckers.embeddable.isNameInUse(map, "other-name"));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
index 371a84b..970aafb 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
@@ -36,7 +36,7 @@ import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.AttributeEvent;
import org.apache.cayenne.map.event.EmbeddableAttributeEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -77,7 +77,7 @@ public class CreateAttributeAction extends CayenneAction {
Embeddable embeddable = mediator.getCurrentEmbeddable();
EmbeddableAttribute attr = new EmbeddableAttribute();
- attr.setName(DefaultUniqueNameGenerator.generate(NameCheckers.embeddableAttribute, embeddable));
+ attr.setName(UniqueNameGenerator.generate(NameCheckers.embeddableAttribute, embeddable));
createEmbAttribute(embeddable, attr);
@@ -89,7 +89,7 @@ public class CreateAttributeAction extends CayenneAction {
ObjEntity objEntity = mediator.getCurrentObjEntity();
- ObjAttribute attr = new ObjAttribute(DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, objEntity), null, objEntity);
+ ObjAttribute attr = new ObjAttribute(UniqueNameGenerator.generate(NameCheckers.objAttribute, objEntity), null, objEntity);
createObjAttribute(mediator.getCurrentDataMap(), objEntity, attr);
@@ -99,7 +99,7 @@ public class CreateAttributeAction extends CayenneAction {
} else if (getProjectController().getCurrentDbEntity() != null) {
DbEntity dbEntity = getProjectController().getCurrentDbEntity();
- DbAttribute attr = new DbAttribute(DefaultUniqueNameGenerator.generate(NameCheckers.dbAttribute, dbEntity),
+ DbAttribute attr = new DbAttribute(UniqueNameGenerator.generate(NameCheckers.dbAttribute, dbEntity),
TypesMapping.NOT_DEFINED, dbEntity);
createDbAttribute(mediator.getCurrentDataMap(), dbEntity, attr);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
index 150241c..5835ac9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateCallbackMethodAction.java
@@ -23,7 +23,7 @@ import java.awt.event.ActionEvent;
import org.apache.cayenne.map.CallbackMap;
import org.apache.cayenne.map.LifecycleEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.editor.CallbackType;
@@ -78,7 +78,7 @@ public class CreateCallbackMethodAction extends CayenneAction {
// generate methodName
String methodNamePrefix = toMethodName(callbackType.getType());
- String methodName = DefaultUniqueNameGenerator.generate(NameCheckers.objCallbackMethod, getProjectController().getCurrentObjEntity(), methodNamePrefix);
+ String methodName = UniqueNameGenerator.generate(NameCheckers.objCallbackMethod, getProjectController().getCurrentObjEntity(), methodNamePrefix);
createCallbackMethod(callbackType, methodName);
application.getUndoManager().addEdit(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
index dccafcb..aecc843 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
@@ -23,7 +23,7 @@ import org.apache.cayenne.configuration.ConfigurationNode;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -63,7 +63,7 @@ public class CreateDataMapAction extends CayenneAction {
.getProject()
.getRootNode();
- DataMap map = new DataMap(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, currentDomain));
+ DataMap map = new DataMap(UniqueNameGenerator.generate(NameCheckers.dataMap, currentDomain));
createDataMap(map);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
index c34d686..ec2520b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -63,7 +63,7 @@ public class CreateDbEntityAction extends CayenneAction {
ProjectController mediator = getProjectController();
DataMap map = mediator.getCurrentDataMap();
- DbEntity entity = new DbEntity(DefaultUniqueNameGenerator.generate(NameCheckers.dbEntity, map));
+ DbEntity entity = new DbEntity(UniqueNameGenerator.generate(NameCheckers.dbEntity, map));
createEntity(map, entity);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
index 6466f57..05a00a4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.map.Embeddable;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.EmbeddableEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -56,7 +56,7 @@ public class CreateEmbeddableAction extends CayenneAction {
DataMap dataMap = mediator.getCurrentDataMap();
- Embeddable embeddable = new Embeddable(DefaultUniqueNameGenerator.generate(NameCheckers.embeddable, mediator.getCurrentDataMap()));
+ Embeddable embeddable = new Embeddable(UniqueNameGenerator.generate(NameCheckers.embeddable, mediator.getCurrentDataMap()));
createEmbeddable(dataMap, embeddable);
application.getUndoManager().addEdit(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
index d8b7cbd..4dfc3f3 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.configuration.event.DataNodeEvent;
import org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory;
import org.apache.cayenne.conn.DataSourceInfo;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -104,7 +104,7 @@ public class CreateNodeAction extends CayenneAction {
* A factory method that makes a new DataNode.
*/
DataNodeDescriptor buildDataNode(DataChannelDescriptor domain) {
- DataNodeDescriptor node = new DataNodeDescriptor(DefaultUniqueNameGenerator.generate(
+ DataNodeDescriptor node = new DataNodeDescriptor(UniqueNameGenerator.generate(
NameCheckers.dataNodeDescriptor, domain));
node.setDataChannelDescriptor(domain);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/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 a4f54fc..cb656d9 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
@@ -27,7 +27,7 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.map.naming.NameConverter;
import org.apache.cayenne.modeler.Application;
@@ -69,7 +69,7 @@ public class CreateObjEntityAction extends CayenneAction {
ProjectController mediator = getProjectController();
DataMap dataMap = mediator.getCurrentDataMap();
- ObjEntity entity = new ObjEntity(DefaultUniqueNameGenerator.generate(NameCheckers.objEntity, dataMap));
+ ObjEntity entity = new ObjEntity(UniqueNameGenerator.generate(NameCheckers.objEntity, dataMap));
// init defaults
entity.setSuperClassName(dataMap.getDefaultSuperclass());
@@ -79,7 +79,7 @@ public class CreateObjEntityAction extends CayenneAction {
if (dbEntity != null) {
entity.setDbEntity(dbEntity);
String baseName = NameConverter.underscoredToJava(dbEntity.getName(), true);
- entity.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objEntity, dbEntity.getDataMap(), baseName));
+ entity.setName(UniqueNameGenerator.generate(NameCheckers.objEntity, dbEntity.getDataMap(), baseName));
}
entity.setClassName(dataMap.getNameWithDefaultPackage(entity.getName()));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
index 1c5397f..ba060b8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.configuration.event.ProcedureEvent;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -52,7 +52,7 @@ public class CreateProcedureAction extends CayenneAction {
ProjectController mediator = getProjectController();
DataMap map = mediator.getCurrentDataMap();
- Procedure procedure = new Procedure(DefaultUniqueNameGenerator.generate(NameCheckers.procedure, map));
+ Procedure procedure = new Procedure(UniqueNameGenerator.generate(NameCheckers.procedure, map));
createProcedure(map, procedure);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
index cc2f0ee..70aaa5c 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.configuration.event.ProcedureParameterEvent;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -64,7 +64,7 @@ public class CreateProcedureParameterAction extends CayenneAction {
public void createProcedureParameter() {
Procedure procedure = getProjectController().getCurrentProcedure();
- ProcedureParameter parameter = new ProcedureParameter(DefaultUniqueNameGenerator.generate(
+ ProcedureParameter parameter = new ProcedureParameter(UniqueNameGenerator.generate(
NameCheckers.procedureParameter, procedure));
procedure.addCallParameter(parameter);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
index 9a4ef96..1f62b77 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
@@ -31,7 +31,7 @@ import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -66,7 +66,7 @@ public class CreateRelationshipAction extends CayenneAction {
ObjEntity objEnt = getProjectController().getCurrentObjEntity();
if (objEnt != null) {
- ObjRelationship rel = new ObjRelationship(DefaultUniqueNameGenerator.generate(NameCheckers.objRelationship,
+ ObjRelationship rel = new ObjRelationship(UniqueNameGenerator.generate(NameCheckers.objRelationship,
objEnt));
createObjRelationship(objEnt, rel);
@@ -76,7 +76,7 @@ public class CreateRelationshipAction extends CayenneAction {
DbEntity dbEnt = getProjectController().getCurrentDbEntity();
if (dbEnt != null) {
- DbRelationship rel = new DbRelationship(DefaultUniqueNameGenerator.generate(
+ DbRelationship rel = new DbRelationship(UniqueNameGenerator.generate(
NameCheckers.dbRelationship, dbEnt));
createDbRelationship(dbEnt, rel);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
index 4466ce4..f662b64 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDataMapAction.java
@@ -31,7 +31,7 @@ import javax.swing.JOptionPane;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.MapLoader;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.FSPath;
@@ -85,9 +85,9 @@ public class ImportDataMapAction extends CayenneAction {
DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController().getProject().getRootNode();
if (newMap.getName() != null) {
- newMap.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, domain, newMap.getName()));
+ newMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, domain, newMap.getName()));
} else {
- newMap.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, domain));
+ newMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, domain));
}
Resource baseResource = domain.getConfigurationSource();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
index 5466d3b..8672759 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
@@ -45,7 +45,7 @@ import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -302,7 +302,7 @@ public class ImportEOModelAction extends CayenneAction {
else {
// fix DataMap name, as there maybe a map with the same name already
DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
- map.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, domain, map.getName()));
+ map.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, domain, map.getName()));
// side effect of this operation is that if a node was created, this DataMap
// will be linked with it...
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
index d897350..b088fd1 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/NewProjectAction.java
@@ -27,7 +27,7 @@ import javax.swing.KeyStroke;
import org.apache.cayenne.configuration.ConfigurationTree;
import org.apache.cayenne.configuration.DataChannelDescriptor;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.CayenneModelerController;
@@ -68,7 +68,7 @@ public class NewProjectAction extends ProjectAction {
DataChannelDescriptor domain = new DataChannelDescriptor();
- domain.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataChannelDescriptor, domain));
+ domain.setName(UniqueNameGenerator.generate(NameCheckers.dataChannelDescriptor, domain));
Project project = new Project(
new ConfigurationTree<DataChannelDescriptor>(domain));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
index e1885b9..2291544 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
@@ -35,7 +35,7 @@ import org.apache.cayenne.map.ObjRelationship;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -171,7 +171,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
// paste DataMap to DataDomain or DataNode
DataMap dataMap = ((DataMap) content);
- dataMap.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, COPY_PATTERN, domain, dataMap.getName()));
+ dataMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, COPY_PATTERN, domain, dataMap.getName()));
/**
* Update all names in the new DataMap, so that they would not conflict with
@@ -187,7 +187,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
for (DbEntity dbEntity : dataMap.getDbEntities()) {
String oldName = dbEntity.getName();
- dbEntity.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
+ dbEntity.setName(UniqueNameGenerator.generate(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
if (!oldName.equals(dbEntity.getName())) {
renamedDbEntities.put(oldName, dbEntity.getName());
@@ -195,7 +195,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
for (ObjEntity objEntity : dataMap.getObjEntities()) {
String oldName = objEntity.getName();
- objEntity.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
+ objEntity.setName(UniqueNameGenerator.generate(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
if (!oldName.equals(objEntity.getName())) {
renamedObjEntities.put(oldName, objEntity.getName());
@@ -204,7 +204,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
for (Embeddable embeddable : dataMap.getEmbeddables()) {
String oldName = embeddable.getClassName();
- embeddable.setClassName(DefaultUniqueNameGenerator.generate(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
+ embeddable.setClassName(UniqueNameGenerator.generate(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
if (!oldName.equals(embeddable.getClassName())) {
renamedEmbeddables.put(oldName, embeddable.getClassName());
@@ -212,10 +212,10 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
for (Procedure procedure : dataMap.getProcedures()) {
- procedure.setName(DefaultUniqueNameGenerator.generate(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
+ procedure.setName(UniqueNameGenerator.generate(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
}
for (QueryDescriptor query : dataMap.getQueryDescriptors()) {
- query.setName(DefaultUniqueNameGenerator.generate(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
+ query.setName(UniqueNameGenerator.generate(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
}
// if an entity was renamed, we rename all links to it too
@@ -257,7 +257,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof DbEntity) {
DbEntity dbEntity = (DbEntity) content;
- dbEntity.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
+ dbEntity.setName(UniqueNameGenerator.generate(NameCheckers.dbEntity, COPY_PATTERN, dataMap, dbEntity.getName()));
dataMap.addDbEntity(dbEntity);
CreateDbEntityAction.fireDbEntityEvent(this, mediator, dbEntity);
@@ -265,7 +265,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof ObjEntity) {
// paste ObjEntity to DataMap
ObjEntity objEntity = (ObjEntity) content;
- objEntity.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
+ objEntity.setName(UniqueNameGenerator.generate(NameCheckers.objEntity, COPY_PATTERN, dataMap, objEntity.getName()));
dataMap.addObjEntity(objEntity);
CreateObjEntityAction.fireObjEntityEvent(
@@ -277,7 +277,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof Embeddable) {
// paste Embeddable to DataMap
Embeddable embeddable = (Embeddable) content;
- embeddable.setClassName(DefaultUniqueNameGenerator.generate(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
+ embeddable.setClassName(UniqueNameGenerator.generate(NameCheckers.embeddable, COPY_PATTERN, dataMap, embeddable.getClassName()));
dataMap.addEmbeddable(embeddable);
CreateEmbeddableAction.fireEmbeddableEvent(
@@ -289,7 +289,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof QueryDescriptor) {
QueryDescriptor query = (QueryDescriptor) content;
- query.setName(DefaultUniqueNameGenerator.generate(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
+ query.setName(UniqueNameGenerator.generate(NameCheckers.query, COPY_PATTERN, dataMap, query.getName()));
query.setDataMap(dataMap);
dataMap.addQueryDescriptor(query);
@@ -298,7 +298,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if (content instanceof Procedure) {
// paste Procedure to DataMap
Procedure procedure = (Procedure) content;
- procedure.setName(DefaultUniqueNameGenerator.generate(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
+ procedure.setName(UniqueNameGenerator.generate(NameCheckers.procedure, COPY_PATTERN, dataMap, procedure.getName()));
dataMap.addProcedure(procedure);
CreateProcedureAction.fireProcedureEvent(
@@ -313,7 +313,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof DbAttribute) {
DbAttribute attr = (DbAttribute) content;
- attr.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dbAttribute, COPY_PATTERN, dbEntity, attr.getName()));
+ attr.setName(UniqueNameGenerator.generate(NameCheckers.dbAttribute, COPY_PATTERN, dbEntity, attr.getName()));
dbEntity.addAttribute(attr);
CreateAttributeAction.fireDbAttributeEvent(this, mediator, mediator
@@ -321,7 +321,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
else if (content instanceof DbRelationship) {
DbRelationship rel = (DbRelationship) content;
- rel.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dbRelationship, COPY_PATTERN, dbEntity, rel.getName()));
+ rel.setName(UniqueNameGenerator.generate(NameCheckers.dbRelationship, COPY_PATTERN, dbEntity, rel.getName()));
dbEntity.addRelationship(rel);
CreateRelationshipAction.fireDbRelationshipEvent(
@@ -337,7 +337,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof ObjAttribute) {
ObjAttribute attr = (ObjAttribute) content;
- attr.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objAttribute, COPY_PATTERN, objEntity, attr.getName()));
+ attr.setName(UniqueNameGenerator.generate(NameCheckers.objAttribute, COPY_PATTERN, objEntity, attr.getName()));
objEntity.addAttribute(attr);
CreateAttributeAction.fireObjAttributeEvent(this, mediator, mediator
@@ -345,7 +345,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
}
else if (content instanceof ObjRelationship) {
ObjRelationship rel = (ObjRelationship) content;
- rel.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objRelationship, COPY_PATTERN, objEntity, rel.getName()));
+ rel.setName(UniqueNameGenerator.generate(NameCheckers.objRelationship, COPY_PATTERN, objEntity, rel.getName()));
objEntity.addRelationship(rel);
CreateRelationshipAction.fireObjRelationshipEvent(
@@ -357,7 +357,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
else if(content instanceof ObjCallbackMethod) {
ObjCallbackMethod method = (ObjCallbackMethod) content;
- method.setName(DefaultUniqueNameGenerator.generate(NameCheckers.objCallbackMethod, COPY_PATTERN, objEntity, method.getName()));
+ method.setName(UniqueNameGenerator.generate(NameCheckers.objCallbackMethod, COPY_PATTERN, objEntity, method.getName()));
objEntity.getCallbackMap().getCallbackDescriptor(mediator.getCurrentCallbackType().getType()).addCallbackMethod(method.getName());
@@ -376,7 +376,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof EmbeddableAttribute) {
EmbeddableAttribute attr = (EmbeddableAttribute) content;
- attr.setName(DefaultUniqueNameGenerator.generate(NameCheckers.embeddableAttribute, COPY_PATTERN, embeddable, attr.getName()));
+ attr.setName(UniqueNameGenerator.generate(NameCheckers.embeddableAttribute, COPY_PATTERN, embeddable, attr.getName()));
embeddable.addAttribute(attr);
CreateAttributeAction.fireEmbeddableAttributeEvent(
@@ -395,7 +395,7 @@ public class PasteAction extends CayenneAction implements FlavorListener {
if (content instanceof ProcedureParameter) {
ProcedureParameter param = (ProcedureParameter) content;
- param.setName(DefaultUniqueNameGenerator.generate(NameCheckers.procedureParameter, COPY_PATTERN, procedure, param.getName()));
+ param.setName(UniqueNameGenerator.generate(NameCheckers.procedureParameter, COPY_PATTERN, procedure, param.getName()));
procedure.addCallParameter(param);
CreateProcedureParameterAction.fireProcedureParameterEvent(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
index 287e703..13a4aa5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java
@@ -20,24 +20,16 @@
package org.apache.cayenne.modeler.action;
import java.awt.event.ActionEvent;
-import java.sql.Connection;
-
-import javax.swing.SwingUtilities;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.configuration.event.DataMapEvent;
-import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.CayenneModelerController;
import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.dialog.db.ReverseEngineeringController;
-import org.apache.cayenne.modeler.dialog.db.DbLoaderHelper;
-import org.apache.cayenne.modeler.dialog.db.ReverseEngineeringScrollPane;
-import org.apache.cayenne.modeler.pref.DBConnectionInfo;
import org.apache.cayenne.modeler.util.CayenneAction;
/**
@@ -63,8 +55,8 @@ public class ReverseEngineeringAction extends CayenneAction {
DataMap dataMap = projectController.getCurrentDataMap();
DataChannelDescriptor dataChannelDescriptor = projectController.getCurrentDataChanel();
if (dataMap == null) {
- dataMap = new DataMap(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap));
- dataMap.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, projectController.getProject().getRootNode()));
+ dataMap = new DataMap(UniqueNameGenerator.generate(NameCheckers.dataMap));
+ dataMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, projectController.getProject().getRootNode()));
dataChannelDescriptor.getDataMaps().add(dataMap);
getProjectController().fireDataMapEvent(new DataMapEvent(this, dataMap, MapEvent.ADD));
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
index ce79cd5..03db3fe 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ResolveDbRelationshipDialog.java
@@ -46,7 +46,7 @@ import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.TableColumnPreferences;
@@ -292,7 +292,7 @@ public class ResolveDbRelationshipDialog extends CayenneDialog {
}
if (sourceEntityName == null) {
- sourceEntityName = DefaultUniqueNameGenerator.generate(NameCheckers.dbRelationship, relationship.getSourceEntity());
+ sourceEntityName = UniqueNameGenerator.generate(NameCheckers.dbRelationship, relationship.getSourceEntity());
}
if (!validateName(relationship.getSourceEntity(), relationship, sourceEntityName)) {
@@ -305,7 +305,7 @@ public class ResolveDbRelationshipDialog extends CayenneDialog {
}
if (targetEntityName == null) {
- targetEntityName = DefaultUniqueNameGenerator.generate(NameCheckers.dbRelationship, relationship.getTargetEntity());
+ targetEntityName = UniqueNameGenerator.generate(NameCheckers.dbRelationship, relationship.getTargetEntity());
}
// check if reverse name is valid
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
index a9016c8..cbcb34e 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DbLoaderHelper.java
@@ -35,7 +35,7 @@ import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.event.EntityEvent;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ProjectController;
@@ -335,8 +335,8 @@ public class DbLoaderHelper {
DbLoaderHelper.this.existingMap = dataMap != null;
if (!existingMap) {
- dataMap = new DataMap(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap));
- dataMap.setName(DefaultUniqueNameGenerator.generate(NameCheckers.dataMap, mediator.getProject().getRootNode()));
+ dataMap = new DataMap(UniqueNameGenerator.generate(NameCheckers.dataMap));
+ dataMap.setName(UniqueNameGenerator.generate(NameCheckers.dataMap, mediator.getProject().getRootNode()));
}
if (isCanceled()) {
@@ -351,7 +351,7 @@ public class DbLoaderHelper {
reverseEngineering.setConfigurationSource(dataMap.getReverseEngineering().getConfigurationSource());
}
} else {
- reverseEngineering.setName(DefaultUniqueNameGenerator.generate(NameCheckers.reverseEngineering, dataChannelDescriptor));
+ reverseEngineering.setName(UniqueNameGenerator.generate(NameCheckers.reverseEngineering, dataChannelDescriptor));
}
if (dataMap.getConfigurationSource() != null) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
index 41a0e2f..dd2c71d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/query/QueryType.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.configuration.event.QueryEvent;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.map.event.MapEvent;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.event.QueryDisplayEvent;
@@ -119,7 +119,7 @@ public class QueryType extends CayenneController{
String queryType = getSelectedQuery();
// update query...
- String queryName = DefaultUniqueNameGenerator.generate(NameCheckers.query, dataMap);
+ String queryName = UniqueNameGenerator.generate(NameCheckers.query, dataMap);
QueryDescriptor query = QueryDescriptor.descriptor(queryType);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/633303cf/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
----------------------------------------------------------------------
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 9c2f561..82bfa91 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
@@ -34,7 +34,7 @@ import java.util.StringTokenizer;
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.exp.ExpressionException;
import org.apache.cayenne.map.*;
-import org.apache.cayenne.map.naming.DefaultUniqueNameGenerator;
+import org.apache.cayenne.map.naming.UniqueNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
import org.apache.cayenne.query.*;
import org.apache.cayenne.wocompat.parser.Parser;
@@ -716,7 +716,7 @@ public class EOModelProcessor {
if (relationship.getReverseRelationship() == null) {
DbRelationship reverse = relationship.createReverseRelationship();
- String name = DefaultUniqueNameGenerator.generate(NameCheckers.dbRelationship,
+ String name = UniqueNameGenerator.generate(NameCheckers.dbRelationship,
reverse.getSourceEntity(), relationship.getName() + "Reverse");
reverse.setName(name);
relationship.getTargetEntity().addRelationship(reverse);