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 14:50:21 UTC
[1/3] cayenne git commit: CAY-2116 Split schema synchronization code
in a separate module
Repository: cayenne
Updated Branches:
refs/heads/master 236b0102d -> fc27ef7ae
CAY-2116 Split schema synchronization code in a separate module
* unifying object name generators under cayenne-dbsync
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/b809bb07
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/b809bb07
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/b809bb07
Branch: refs/heads/master
Commit: b809bb07c76bbe854cc49a223f706f2252a85c49
Parents: 236b010
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:40:37 2016 +0300
----------------------------------------------------------------------
cayenne-dbsync/pom.xml | 5 ++
.../dbsync/merge/EntityMergeSupport.java | 6 +-
.../cayenne/dbsync/reverse/db/DbLoader.java | 10 +--
.../reverse/db/ManyToManyCandidateEntity.java | 2 +-
.../naming/DefaultObjectNameGenerator.java | 94 ++++++++++++++++++++
.../naming/LegacyObjectNameGenerator.java | 53 +++++++++++
.../reverse/naming/ObjectNameGenerator.java | 53 +++++++++++
.../db/ManyToManyCandidateEntityTest.java | 4 +-
.../naming/DefaultObjectNameGeneratorTest.java | 60 +++++++++++++
.../naming/LegacyObjectNameGeneratorTest.java | 55 ++++++++++++
.../cayenne/map/naming/LegacyNameGenerator.java | 51 -----------
.../cayenne/map/naming/ObjectNameGenerator.java | 52 -----------
.../map/naming/LegacyNameGeneratorTest.java | 53 -----------
cayenne-tools/pom.xml | 4 -
.../map/naming/DefaultNameGenerator.java | 92 -------------------
.../apache/cayenne/tools/DbImporterTask.java | 4 +-
.../tools/dbimport/DbImportConfiguration.java | 6 +-
.../map/naming/DefaultNameGeneratorTest.java | 59 ------------
.../InferRelationshipsController.java | 2 +-
.../InferRelationshipsControllerBase.java | 2 +-
.../dialog/objentity/EntitySyncController.java | 2 +-
.../dialog/objentity/ObjRelationshipInfo.java | 2 +-
.../modeler/util/NameGeneratorPreferences.java | 12 +--
.../apache/cayenne/tools/DbImporterMojo.java | 2 +-
24 files changed, 347 insertions(+), 338 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-dbsync/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/pom.xml b/cayenne-dbsync/pom.xml
index 5cc1a63..f94cfb1 100644
--- a/cayenne-dbsync/pom.xml
+++ b/cayenne-dbsync/pom.xml
@@ -36,6 +36,11 @@
<artifactId>cayenne-server</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>net.java.dev.inflector</groupId>
+ <artifactId>inflector</artifactId>
+ <scope>compile</scope>
+ </dependency>
<dependency>
<groupId>junit</groupId>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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 8aea02a..cabdb4d 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
@@ -30,9 +30,9 @@ 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.LegacyNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
-import org.apache.cayenne.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.util.DeleteRuleUpdater;
import org.apache.cayenne.util.EntityMergeListener;
import org.apache.commons.logging.Log;
@@ -79,7 +79,7 @@ public class EntityMergeSupport {
protected boolean usePrimitives;
public EntityMergeSupport(DataMap map) {
- this(map, new LegacyNameGenerator(), true);
+ this(map, new LegacyObjectNameGenerator(), true);
}
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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 e43c15a..a522ab2 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
@@ -36,9 +36,9 @@ 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.map.naming.LegacyNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.map.naming.NameCheckers;
-import org.apache.cayenne.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.util.EqualsBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -87,7 +87,7 @@ public class DbLoader {
* Creates new DbLoader.
*/
public DbLoader(Connection connection, DbAdapter adapter, DbLoaderDelegate delegate) {
- this(connection, adapter, delegate, new LegacyNameGenerator());
+ this(connection, adapter, delegate, new LegacyObjectNameGenerator());
}
/**
@@ -693,8 +693,8 @@ public class DbLoader {
*/
public void setNameGenerator(ObjectNameGenerator strategy) {
if (strategy == null) {
- LOGGER.warn("Attempt to set null into NameGenerator. LegacyNameGenerator will be used.");
- this.nameGenerator = new LegacyNameGenerator();
+ LOGGER.warn("Attempt to set null into NameGenerator. LegacyObjectNameGenerator will be used.");
+ this.nameGenerator = new LegacyObjectNameGenerator();
} else {
this.nameGenerator = strategy;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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 f185619..e912ab1 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
@@ -24,7 +24,7 @@ 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.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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
new file mode 100644
index 0000000..a2ec096
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGenerator.java
@@ -0,0 +1,94 @@
+/*****************************************************************
+ * 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.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.map.naming.NameConverter;
+import org.jvnet.inflector.Noun;
+
+import java.util.Locale;
+
+/**
+ * A strategy for generating names of entities, attributes etc.
+ *
+ * @since 4.0
+ */
+public class DefaultObjectNameGenerator implements ObjectNameGenerator {
+
+ @Override
+ public String createDbRelationshipName(ExportedKey key, boolean toMany) {
+
+ String name;
+
+ if (toMany) {
+ try {
+ /**
+ * by default we use english language rules here. uppercase is
+ * required for NameConverter to work properly
+ */
+ name = Noun.pluralOf(key.getFKTableName().toLowerCase(), Locale.ENGLISH).toUpperCase();
+ } catch (Exception inflectorError) {
+ /**
+ * seems that Inflector cannot be trusted. For instance, it
+ * throws an exception when invoked for word "ADDRESS" (although
+ * lower case works fine). To feel safe, we use superclass'
+ * behavior if something's gone wrong
+ */
+ return key.getFKTableName().toLowerCase();
+ }
+ } else {
+ String fkColName = key.getFKColumnName();
+
+ // trim "ID" in the end
+ if (fkColName == null) {
+ name = key.getPKTableName();
+ } else if (fkColName.toUpperCase().endsWith("_ID") && fkColName.length() > 3) {
+ name = fkColName.substring(0, fkColName.length() - 3);
+ } else if (fkColName.toUpperCase().endsWith("ID") && fkColName.length() > 2) {
+ name = fkColName.substring(0, fkColName.length() - 2);
+ } else {
+ /**
+ * We don't want relationship to conflict with attribute, so
+ * we'd better return superior value with 'to'
+ */
+ name = key.getPKTableName();
+ }
+ }
+
+ return NameConverter.underscoredToJava(name, false);
+ }
+
+ @Override
+ public String createObjEntityName(DbEntity dbEntity) {
+ return NameConverter.underscoredToJava(dbEntity.getName(), true);
+ }
+
+ @Override
+ public String createObjAttributeName(DbAttribute attr) {
+ return NameConverter.underscoredToJava(attr.getName(), false);
+ }
+
+ @Override
+ public String createObjRelationshipName(DbRelationship dbRel) {
+ return NameConverter.underscoredToJava(dbRel.getName(), false);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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
new file mode 100644
index 0000000..290dba8
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGenerator.java
@@ -0,0 +1,53 @@
+/*****************************************************************
+ * 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.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.map.naming.NameConverter;
+
+/**
+ * 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 3.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);
+ }
+
+ public String createObjEntityName(DbEntity dbEntity) {
+ return NameConverter.underscoredToJava(dbEntity.getName(), true);
+ }
+
+ public String createObjAttributeName(DbAttribute attr) {
+ return NameConverter.underscoredToJava(attr.getName(), false);
+ }
+
+ public String createObjRelationshipName(DbRelationship dbRel) {
+ return NameConverter.underscoredToJava(dbRel.getName(), false);
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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
new file mode 100644
index 0000000..8922190
--- /dev/null
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/naming/ObjectNameGenerator.java
@@ -0,0 +1,53 @@
+/*****************************************************************
+ * 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.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.naming.ExportedKey;
+
+/**
+ * ObjectNameGenerator is a strategy for creating names for entities,
+ * attributes, relationships from DB metadata.
+ *
+ * @since 4.0
+ */
+public interface ObjectNameGenerator {
+
+ /**
+ * Creates new name for ObjEntity
+ */
+ String createObjEntityName(DbEntity entity);
+
+ /**
+ * Creates new name for ObjAttribute
+ */
+ String createObjAttributeName(DbAttribute attr);
+
+ /**
+ * Creates new name for DbRelationship
+ */
+ String createDbRelationshipName(ExportedKey key, boolean toMany);
+
+ /**
+ * Creates new name for ObjRelationship
+ */
+ String createObjRelationshipName(DbRelationship dbRel);
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntityTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntityTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntityTest.java
index b4ab34c..4f36005 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntityTest.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/db/ManyToManyCandidateEntityTest.java
@@ -36,7 +36,7 @@ import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.Relationship;
-import org.apache.cayenne.map.naming.LegacyNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
import org.apache.cayenne.resource.URLResource;
import org.junit.Before;
import org.junit.Test;
@@ -96,7 +96,7 @@ public class ManyToManyCandidateEntityTest {
public void testOptimisationForManyToManyEntity() {
ObjEntity manyToManyEntity = map.getObjEntity("Table1Table2");
- ManyToManyCandidateEntity.build(manyToManyEntity).optimizeRelationships(new LegacyNameGenerator());
+ ManyToManyCandidateEntity.build(manyToManyEntity).optimizeRelationships(new LegacyObjectNameGenerator());
ObjEntity table1Entity = map.getObjEntity("Table1");
ObjEntity table2Entity = map.getObjEntity("Table2");
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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
new file mode 100644
index 0000000..0a70fdb
--- /dev/null
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/DefaultObjectNameGeneratorTest.java
@@ -0,0 +1,60 @@
+/*****************************************************************
+ * 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.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.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class DefaultObjectNameGeneratorTest {
+
+ @Test
+ public void testStrategy() throws Exception {
+ DefaultObjectNameGenerator strategy = new DefaultObjectNameGenerator();
+
+ ExportedKey key = new ExportedKey("ARTIST", "ARTIST_ID", null,
+ "PAINTING", "ARTIST_ID", null, (short) 1);
+ assertEquals(strategy.createDbRelationshipName(key, false), "artist");
+ assertEquals(strategy.createDbRelationshipName(key, true), "paintings");
+
+ key = new ExportedKey("PERSON", "PERSON_ID", null,
+ "PERSON", "MOTHER_ID", null, (short) 1);
+ assertEquals(strategy.createDbRelationshipName(key, false), "mother");
+ assertEquals(strategy.createDbRelationshipName(key, true), "people");
+
+ key = new ExportedKey("PERSON", "PERSON_ID", null,
+ "ADDRESS", "SHIPPING_ADDRESS_ID", null, (short) 1);
+ assertEquals(strategy.createDbRelationshipName(key, false), "shippingAddress");
+ assertEquals(strategy.createDbRelationshipName(key, true), "addresses");
+
+ assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST")), "Artist");
+ assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST_WORK")), "ArtistWork");
+
+ assertEquals(strategy.createObjAttributeName(new DbAttribute("NAME")), "name");
+ assertEquals(strategy.createObjAttributeName(new DbAttribute("ARTIST_NAME")), "artistName");
+
+ assertEquals(strategy.createObjRelationshipName(new DbRelationship("mother")), "mother");
+ assertEquals(strategy.createObjRelationshipName(new DbRelationship("persons")), "persons");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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
new file mode 100644
index 0000000..750dcd2
--- /dev/null
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/naming/LegacyObjectNameGeneratorTest.java
@@ -0,0 +1,55 @@
+/*****************************************************************
+ * 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.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.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class LegacyObjectNameGeneratorTest {
+
+ @Test
+ public void testStrategy() throws Exception {
+ LegacyObjectNameGenerator strategy = new LegacyObjectNameGenerator();
+
+ ExportedKey key = new ExportedKey("ARTIST", "ARTIST_ID", null,
+ "PAINTING", "ARTIST_ID", null, (short) 1);
+ assertEquals(strategy.createDbRelationshipName(key, false), "toArtist");
+ assertEquals(strategy.createDbRelationshipName(key, true), "paintingArray");
+
+ key = new ExportedKey("PERSON", "PERSON_ID", null,
+ "PERSON", "MOTHER_ID", null, (short) 1);
+ assertEquals(strategy.createDbRelationshipName(key, false), "toPerson");
+ assertEquals(strategy.createDbRelationshipName(key, true), "personArray");
+
+ assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST")), "Artist");
+ assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST_WORK")), "ArtistWork");
+
+ assertEquals(strategy.createObjAttributeName(new DbAttribute("NAME")), "name");
+ assertEquals(strategy.createObjAttributeName(new DbAttribute("ARTIST_NAME")), "artistName");
+
+ assertEquals(strategy.createObjRelationshipName(new DbRelationship("toArtist")), "toArtist");
+ assertEquals(strategy.createObjRelationshipName(new DbRelationship("paintingArray")), "paintingArray");
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-server/src/main/java/org/apache/cayenne/map/naming/LegacyNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/LegacyNameGenerator.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/LegacyNameGenerator.java
deleted file mode 100644
index 1648377..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/LegacyNameGenerator.java
+++ /dev/null
@@ -1,51 +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.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-
-/**
- * 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 3.0
- */
-public class LegacyNameGenerator implements ObjectNameGenerator {
- public String createDbRelationshipName(
- ExportedKey key,
- boolean toMany) {
-
- String uglyName = (toMany) ? key.getFKTableName() + "_ARRAY" : "to_" + key.getPKTableName();
- return NameConverter.underscoredToJava(uglyName, false);
- }
-
- public String createObjEntityName(DbEntity dbEntity) {
- return NameConverter.underscoredToJava(dbEntity.getName(), true);
- }
-
- public String createObjAttributeName(DbAttribute attr) {
- return NameConverter.underscoredToJava(attr.getName(), false);
- }
-
- public String createObjRelationshipName(DbRelationship dbRel) {
- return NameConverter.underscoredToJava(dbRel.getName(), false);
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ObjectNameGenerator.java b/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ObjectNameGenerator.java
deleted file mode 100644
index fac5e32..0000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/naming/ObjectNameGenerator.java
+++ /dev/null
@@ -1,52 +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.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-
-/**
- * ObjectNameGenerator is a strategy for creating names for entities,
- * attributes, relationships from DB metadata.
- *
- * @since 4.0
- */
-public interface ObjectNameGenerator {
-
- /**
- * Creates new name for ObjEntity
- */
- String createObjEntityName(DbEntity entity);
-
- /**
- * Creates new name for ObjAttribute
- */
- String createObjAttributeName(DbAttribute attr);
-
- /**
- * Creates new name for DbRelationship
- */
- String createDbRelationshipName(ExportedKey key, boolean toMany);
-
- /**
- * Creates new name for ObjRelationship
- */
- String createObjRelationshipName(DbRelationship dbRel);
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-server/src/test/java/org/apache/cayenne/map/naming/LegacyNameGeneratorTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/map/naming/LegacyNameGeneratorTest.java b/cayenne-server/src/test/java/org/apache/cayenne/map/naming/LegacyNameGeneratorTest.java
deleted file mode 100644
index 7773f28..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/map/naming/LegacyNameGeneratorTest.java
+++ /dev/null
@@ -1,53 +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.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class LegacyNameGeneratorTest {
-
- @Test
- public void testStrategy() throws Exception {
- LegacyNameGenerator strategy = new LegacyNameGenerator();
-
- ExportedKey key = new ExportedKey("ARTIST", "ARTIST_ID", null,
- "PAINTING", "ARTIST_ID", null, (short) 1);
- assertEquals(strategy.createDbRelationshipName(key, false), "toArtist");
- assertEquals(strategy.createDbRelationshipName(key, true), "paintingArray");
-
- key = new ExportedKey("PERSON", "PERSON_ID", null,
- "PERSON", "MOTHER_ID", null, (short) 1);
- assertEquals(strategy.createDbRelationshipName(key, false), "toPerson");
- assertEquals(strategy.createDbRelationshipName(key, true), "personArray");
-
- assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST")), "Artist");
- assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST_WORK")), "ArtistWork");
-
- assertEquals(strategy.createObjAttributeName(new DbAttribute("NAME")), "name");
- assertEquals(strategy.createObjAttributeName(new DbAttribute("ARTIST_NAME")), "artistName");
-
- assertEquals(strategy.createObjRelationshipName(new DbRelationship("toArtist")), "toArtist");
- assertEquals(strategy.createObjRelationshipName(new DbRelationship("paintingArray")), "paintingArray");
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-tools/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-tools/pom.xml b/cayenne-tools/pom.xml
index 15816c5..da68aa6 100644
--- a/cayenne-tools/pom.xml
+++ b/cayenne-tools/pom.xml
@@ -113,10 +113,6 @@
<artifactId>vpp</artifactId>
</dependency>
- <dependency>
- <groupId>net.java.dev.inflector</groupId>
- <artifactId>inflector</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-tools/src/main/java/org/apache/cayenne/map/naming/DefaultNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/map/naming/DefaultNameGenerator.java b/cayenne-tools/src/main/java/org/apache/cayenne/map/naming/DefaultNameGenerator.java
deleted file mode 100644
index af76188..0000000
--- a/cayenne-tools/src/main/java/org/apache/cayenne/map/naming/DefaultNameGenerator.java
+++ /dev/null
@@ -1,92 +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.Locale;
-
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-import org.jvnet.inflector.Noun;
-
-/**
- * A strategy for generating names of entities, attributes etc.
- *
- * @since 4.0
- */
-public class DefaultNameGenerator implements ObjectNameGenerator {
-
- @Override
- public String createDbRelationshipName(ExportedKey key, boolean toMany) {
-
- String name;
-
- if (toMany) {
- try {
- /**
- * by default we use english language rules here. uppercase is
- * required for NameConverter to work properly
- */
- name = Noun.pluralOf(key.getFKTableName().toLowerCase(), Locale.ENGLISH).toUpperCase();
- } catch (Exception inflectorError) {
- /**
- * seems that Inflector cannot be trusted. For instance, it
- * throws an exception when invoked for word "ADDRESS" (although
- * lower case works fine). To feel safe, we use superclass'
- * behavior if something's gone wrong
- */
- return key.getFKTableName().toLowerCase();
- }
- } else {
- String fkColName = key.getFKColumnName();
-
- // trim "ID" in the end
- if (fkColName == null) {
- name = key.getPKTableName();
- } else if (fkColName.toUpperCase().endsWith("_ID") && fkColName.length() > 3) {
- name = fkColName.substring(0, fkColName.length() - 3);
- } else if (fkColName.toUpperCase().endsWith("ID") && fkColName.length() > 2) {
- name = fkColName.substring(0, fkColName.length() - 2);
- } else {
- /**
- * We don't want relationship to conflict with attribute, so
- * we'd better return superior value with 'to'
- */
- name = key.getPKTableName();
- }
- }
-
- return NameConverter.underscoredToJava(name, false);
- }
-
- @Override
- public String createObjEntityName(DbEntity dbEntity) {
- return NameConverter.underscoredToJava(dbEntity.getName(), true);
- }
-
- @Override
- public String createObjAttributeName(DbAttribute attr) {
- return NameConverter.underscoredToJava(attr.getName(), false);
- }
-
- @Override
- public String createObjRelationshipName(DbRelationship dbRel) {
- return NameConverter.underscoredToJava(dbRel.getName(), false);
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
index 48498a6..adea83a 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java
@@ -40,7 +40,7 @@ import org.apache.cayenne.dbsync.reverse.FiltersConfigBuilder;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.naming.DefaultNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.DefaultObjectNameGenerator;
import org.apache.cayenne.resource.Resource;
import org.apache.cayenne.resource.URLResource;
import org.apache.cayenne.tools.configuration.ToolsModule;
@@ -67,7 +67,7 @@ public class DbImporterTask extends Task {
public DbImporterTask() {
this.config = new DbImportConfiguration();
this.config.setUsePrimitives(true);
- this.config.setNamingStrategy(DefaultNameGenerator.class.getName());
+ this.config.setNamingStrategy(DefaultObjectNameGenerator.class.getName());
// reverse engineering config is flattened into task...
this.reverseEngineering = new ReverseEngineering();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index 8fb0820..e111d64 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -38,8 +38,8 @@ import org.apache.cayenne.dbsync.reverse.filters.FiltersConfig;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.naming.LegacyNameGenerator;
-import org.apache.cayenne.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.resource.URLResource;
import org.apache.commons.logging.Log;
@@ -179,7 +179,7 @@ public class DbImportConfiguration {
}
}
- return new LegacyNameGenerator(); // TODO
+ return new LegacyObjectNameGenerator(); // TODO
}
public String getDriver() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/cayenne-tools/src/test/java/org/apache/cayenne/map/naming/DefaultNameGeneratorTest.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/test/java/org/apache/cayenne/map/naming/DefaultNameGeneratorTest.java b/cayenne-tools/src/test/java/org/apache/cayenne/map/naming/DefaultNameGeneratorTest.java
deleted file mode 100644
index fe5ed37..0000000
--- a/cayenne-tools/src/test/java/org/apache/cayenne/map/naming/DefaultNameGeneratorTest.java
+++ /dev/null
@@ -1,59 +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.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbRelationship;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class DefaultNameGeneratorTest {
-
- @Test
- public void testStrategy() throws Exception {
- DefaultNameGenerator strategy = new DefaultNameGenerator();
-
- ExportedKey key = new ExportedKey("ARTIST", "ARTIST_ID", null,
- "PAINTING", "ARTIST_ID", null, (short) 1);
- assertEquals(strategy.createDbRelationshipName(key, false), "artist");
- assertEquals(strategy.createDbRelationshipName(key, true), "paintings");
-
- key = new ExportedKey("PERSON", "PERSON_ID", null,
- "PERSON", "MOTHER_ID", null, (short) 1);
- assertEquals(strategy.createDbRelationshipName(key, false), "mother");
- assertEquals(strategy.createDbRelationshipName(key, true), "people");
-
- key = new ExportedKey("PERSON", "PERSON_ID", null,
- "ADDRESS", "SHIPPING_ADDRESS_ID", null, (short) 1);
- assertEquals(strategy.createDbRelationshipName(key, false), "shippingAddress");
- assertEquals(strategy.createDbRelationshipName(key, true), "addresses");
-
- assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST")), "Artist");
- assertEquals(strategy.createObjEntityName(new DbEntity("ARTIST_WORK")), "ArtistWork");
-
- assertEquals(strategy.createObjAttributeName(new DbAttribute("NAME")), "name");
- assertEquals(strategy.createObjAttributeName(new DbAttribute("ARTIST_NAME")), "artistName");
-
- assertEquals(strategy.createObjRelationshipName(new DbRelationship("mother")), "mother");
- assertEquals(strategy.createObjRelationshipName(new DbRelationship("persons")), "persons");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
index 0c6c237..b03f8da 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/autorelationship/InferRelationshipsController.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.map.event.RelationshipEvent;
-import org.apache.cayenne.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ClassLoadingService;
import org.apache.cayenne.modeler.ProjectController;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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 7956a66..badde44 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
@@ -31,7 +31,7 @@ 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.map.naming.ObjectNameGenerator;
+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/b809bb07/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
index 2941159..276f258 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/EntitySyncController.java
@@ -22,7 +22,7 @@ package org.apache.cayenne.modeler.dialog.objentity;
import org.apache.cayenne.dbsync.merge.EntityMergeSupport;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.modeler.util.NameGeneratorPreferences;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/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 9edde13..2b01ce3 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
@@ -28,7 +28,7 @@ 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.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.ClassLoadingService;
import org.apache.cayenne.modeler.ProjectController;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
index fa15083..c215e2b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NameGeneratorPreferences.java
@@ -22,9 +22,9 @@ import java.util.Arrays;
import java.util.Vector;
import java.util.prefs.Preferences;
-import org.apache.cayenne.map.naming.LegacyNameGenerator;
-import org.apache.cayenne.map.naming.DefaultNameGenerator;
-import org.apache.cayenne.map.naming.ObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.LegacyObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.dbsync.reverse.naming.ObjectNameGenerator;
import org.apache.cayenne.modeler.Application;
/**
@@ -39,8 +39,8 @@ public class NameGeneratorPreferences {
*/
private static final Vector<String> PREDEFINED_STRATEGIES = new Vector<String>();
static {
- PREDEFINED_STRATEGIES.add(DefaultNameGenerator.class.getCanonicalName());
- PREDEFINED_STRATEGIES.add(LegacyNameGenerator.class.getCanonicalName());
+ PREDEFINED_STRATEGIES.add(DefaultObjectNameGenerator.class.getCanonicalName());
+ PREDEFINED_STRATEGIES.add(LegacyObjectNameGenerator.class.getCanonicalName());
}
static final NameGeneratorPreferences instance = new NameGeneratorPreferences();
@@ -100,6 +100,6 @@ public class NameGeneratorPreferences {
}
public static ObjectNameGenerator defaultNameGenerator() {
- return new DefaultNameGenerator();
+ return new DefaultObjectNameGenerator();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b809bb07/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
----------------------------------------------------------------------
diff --git a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
index 11502b6..f615fa2 100644
--- a/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
+++ b/plugins/maven-cayenne-plugin/src/main/java/org/apache/cayenne/tools/DbImporterMojo.java
@@ -107,7 +107,7 @@ public class DbImporterMojo extends AbstractMojo {
* The default is a basic naming strategy.
*
* @parameter namingStrategy="namingStrategy"
- * default-value="org.apache.cayenne.map.naming.DefaultNameGenerator"
+ * default-value="org.apache.cayenne.map.naming.DefaultObjectNameGenerator"
*/
private String namingStrategy;
[3/3] 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
* unifying object name generators under cayenne-dbsync
* removing unused classes (probably work in progress)
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/fc27ef7a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/fc27ef7a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/fc27ef7a
Branch: refs/heads/master
Commit: fc27ef7ae6dbe296a7974da45a5738d10e923cee
Parents: 041cb78
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:45:59 2016 +0300
----------------------------------------------------------------------
.../cayenne/dbsync/reverse/mapper/DbType.java | 194 -------------
.../mapper/DefaultJdbc2JavaTypeMapper.java | 282 -------------------
.../reverse/mapper/Jdbc2JavaTypeMapper.java | 33 ---
.../naming/LegacyObjectNameGenerator.java | 2 +-
.../dbsync/reverse/mapper/DbTypeTest.java | 87 ------
5 files changed, 1 insertion(+), 597 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java
deleted file mode 100644
index 9f829ea..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DbType.java
+++ /dev/null
@@ -1,194 +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.mapper;
-
-import org.apache.cayenne.util.EqualsBuilder;
-import org.apache.cayenne.util.HashCodeBuilder;
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import static org.apache.commons.lang.StringUtils.isBlank;
-
-/**
- * @since 4.0
- */
-public class DbType implements Comparable<DbType> {
-
- private static final Log LOG = LogFactory.getLog(DbType.class);
-
- public final String jdbc;
-
- public final Integer length;
- public final Integer precision;
- public final Integer scale;
- public final Boolean notNull;
-
- public DbType(String jdbc) {
- this(jdbc, null, null, null, null);
- }
-
- public DbType(String jdbc, Integer length, Integer precision, Integer scale, Boolean notNull) {
- if (isBlank(jdbc)) {
- throw new IllegalArgumentException("Jdbc type can't be null");
- }
- this.jdbc = jdbc;
-
- this.length = getValidInt(length);
- this.precision = getValidInt(precision);
- this.scale = getValidInt(scale);
- this.notNull = notNull;
- }
-
- public String getJdbc() {
- return jdbc;
- }
-
- public Integer getLength() {
- return length;
- }
-
- public Integer getPrecision() {
- return precision;
- }
-
- public Integer getScale() {
- return scale;
- }
-
- public Boolean getNotNull() {
- return notNull;
- }
-
-
- @Override
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (obj == this) {
- return true;
- }
- if (obj.getClass() != getClass()) {
- return false;
- }
- DbType rhs = (DbType) obj;
- return new EqualsBuilder()
- .append(this.jdbc, rhs.jdbc)
- .append(this.length, rhs.length)
- .append(this.precision, rhs.precision)
- .append(this.scale, rhs.scale)
- .append(this.notNull, rhs.notNull)
- .isEquals();
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder()
- .append(jdbc)
- .append(length)
- .append(precision)
- .append(scale)
- .append(notNull)
- .toHashCode();
- }
-
-
- @Override
- public String toString() {
- String res = jdbc;
-
- String len = "*";
- if (isPositive(length)) {
- len = length.toString();
- }
- if (isPositive(precision)) {
- len = precision.toString();
- }
-
- res += " (" + len;
- if (isPositive(scale)) {
- res += ", " + scale;
- }
- res += ")";
-
- if (notNull != null && notNull) {
- res += " NOT NULL";
- }
-
- return res;
- }
-
- private boolean isPositive(Integer num) {
- return num != null && num > 0;
- }
-
- private Integer getValidInt(Integer num) {
- if (num == null || num > 0) {
- return num;
- }
-
- LOG.warn("Invalid int value '" + num + "'");
- return null;
- }
-
- /**
- * Compare by specificity the most specific DbPath should be first in ordered list
- */
- @Override
- public int compareTo(DbType dbType) {
- return new CompareToBuilder()
- .append(dbType.jdbc, jdbc)
- .append(dbType.getSpecificity(), getSpecificity())
- .append(dbType.length, length)
- .append(dbType.precision, precision)
- .append(dbType.scale, scale)
- .append(dbType.notNull, notNull)
- .toComparison();
- }
-
- private int getSpecificity() {
- int res = 0;
- if (isPositive(length)) {
- res += 100;
- }
- if (isPositive(precision)) {
- res += 100;
- }
- if (isPositive(scale)) {
- res += 10;
- }
- if (this.notNull != null) {
- res += 5;
- }
-
- return res;
- }
-
- public boolean isCover(DbType type) {
- return this.jdbc.equals(type.jdbc)
- && (isCover(length, type.length) || length == null && type.length == null && isCover(precision, type.precision))
- && isCover(scale, type.scale)
- && isCover(notNull, type.notNull);
- }
-
- private boolean isCover(Object a, Object b) {
- return a == null || a.equals(b);
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java
deleted file mode 100644
index 0af1690..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/DefaultJdbc2JavaTypeMapper.java
+++ /dev/null
@@ -1,282 +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.mapper;
-
-import org.apache.cayenne.dba.TypesMapping;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.util.Util;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.sql.Types;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-/**
- * @since 4.0.
- */
-public class DefaultJdbc2JavaTypeMapper implements Jdbc2JavaTypeMapper {
-
- // Never use "-1" or any other normal integer, since there
- // is a big chance it is being reserved in java.sql.Types
- public static final int NOT_DEFINED = Integer.MAX_VALUE;
-
- // char constants for Java data types
- public static final String JAVA_LONG = "java.lang.Long";
- public static final String JAVA_BYTES = "byte[]";
- public static final String JAVA_BOOLEAN = "java.lang.Boolean";
- public static final String JAVA_STRING = "java.lang.String";
- public static final String JAVA_SQLDATE = "java.sql.Date";
- public static final String JAVA_UTILDATE = "java.util.Date";
- public static final String JAVA_BIGDECIMAL = "java.math.BigDecimal";
- public static final String JAVA_DOUBLE = "java.lang.Double";
- public static final String JAVA_FLOAT = "java.lang.Float";
- public static final String JAVA_INTEGER = "java.lang.Integer";
- public static final String JAVA_SHORT = "java.lang.Short";
- public static final String JAVA_BYTE = "java.lang.Byte";
- public static final String JAVA_TIME = "java.sql.Time";
- public static final String JAVA_TIMESTAMP = "java.sql.Timestamp";
- public static final String JAVA_BLOB = "java.sql.Blob";
-
- /**
- * Keys: java class names, Values: SQL int type definitions from
- * java.sql.Types
- */
- private final Map<String, Integer> javaSqlEnum = new HashMap<>();
-
- private final Map<DbType, String> mapping = new HashMap<>();
- private final SortedSet<DbType> dbTypes = new TreeSet<>();
-
- private Map<String, String> classToPrimitive;
-
- {
- add(Types.BIGINT, JAVA_LONG);
- add(Types.BINARY, JAVA_BYTES);
- add(Types.BIT, JAVA_BOOLEAN);
- add(Types.BOOLEAN, JAVA_BOOLEAN);
- add(Types.BLOB, JAVA_BYTES);
- add(Types.CLOB, JAVA_STRING);
- add(Types.NCLOB, JAVA_STRING);
- add(Types.SQLXML, JAVA_STRING);
- add(Types.CHAR, JAVA_STRING);
- add(Types.NCHAR, JAVA_STRING);
- add(Types.DATE, JAVA_UTILDATE);
- add(Types.DECIMAL, JAVA_BIGDECIMAL);
- add(Types.DOUBLE, JAVA_DOUBLE);
- add(Types.FLOAT, JAVA_FLOAT);
- add(Types.INTEGER, JAVA_INTEGER);
- add(Types.LONGVARCHAR, JAVA_STRING);
- add(Types.LONGNVARCHAR, JAVA_STRING);
- add(Types.LONGVARBINARY, JAVA_BYTES);
- add(Types.NUMERIC, JAVA_BIGDECIMAL);
- add(Types.REAL, JAVA_FLOAT);
- add(Types.SMALLINT, JAVA_SHORT);
- add(Types.TINYINT, JAVA_SHORT);
- add(Types.TIME, JAVA_UTILDATE);
- add(Types.TIMESTAMP, JAVA_UTILDATE);
- add(Types.VARBINARY, JAVA_BYTES);
- add(Types.VARCHAR, JAVA_STRING);
- add(Types.NVARCHAR, JAVA_STRING);
-
- javaSqlEnum.put(JAVA_LONG, Types.BIGINT);
- javaSqlEnum.put(JAVA_BYTES, Types.BINARY);
- javaSqlEnum.put(JAVA_BOOLEAN, Types.BIT);
- javaSqlEnum.put(JAVA_STRING, Types.VARCHAR);
- javaSqlEnum.put(JAVA_SQLDATE, Types.DATE);
- javaSqlEnum.put(JAVA_UTILDATE, Types.DATE);
- javaSqlEnum.put(JAVA_TIMESTAMP, Types.TIMESTAMP);
- javaSqlEnum.put(JAVA_BIGDECIMAL, Types.DECIMAL);
- javaSqlEnum.put(JAVA_DOUBLE, Types.DOUBLE);
- javaSqlEnum.put(JAVA_FLOAT, Types.FLOAT);
- javaSqlEnum.put(JAVA_INTEGER, Types.INTEGER);
- javaSqlEnum.put(JAVA_SHORT, Types.SMALLINT);
- javaSqlEnum.put(JAVA_BYTE, Types.SMALLINT);
- javaSqlEnum.put(JAVA_TIME, Types.TIME);
- javaSqlEnum.put(JAVA_TIMESTAMP, Types.TIMESTAMP);
-
- // add primitives
- javaSqlEnum.put("byte", Types.TINYINT);
- javaSqlEnum.put("int", Types.INTEGER);
- javaSqlEnum.put("short", Types.SMALLINT);
- javaSqlEnum.put("char", Types.CHAR);
- javaSqlEnum.put("double", Types.DOUBLE);
- javaSqlEnum.put("long", Types.BIGINT);
- javaSqlEnum.put("float", Types.FLOAT);
- javaSqlEnum.put("boolean", Types.BIT);
-
- classToPrimitive = new HashMap<>();
- classToPrimitive.put(Byte.class.getName(), "byte");
- classToPrimitive.put(Long.class.getName(), "long");
- classToPrimitive.put(Double.class.getName(), "double");
- classToPrimitive.put(Boolean.class.getName(), "boolean");
- classToPrimitive.put(Float.class.getName(), "float");
- classToPrimitive.put(Short.class.getName(), "short");
- classToPrimitive.put(Integer.class.getName(), "int");
- }
-
- private Boolean usePrimitives;
-
- /**
- * Returns default java.sql.Types type by the Java type name.
- *
- * @param className
- * Fully qualified Java Class name.
- * @return The SQL type or NOT_DEFINED if no type found.
- */
- public int getJdbcTypeByJava(DbAttribute attribute, String className) {
- if (className == null) {
- return NOT_DEFINED;
- }
-
- Integer type = javaSqlEnum.get(className);
- if (type != null) {
- return type;
- }
-
- // try to load a Java class - some nonstandard mappings may work
- try {
- return getSqlTypeByJava(attribute, Util.getJavaClass(className));
- } catch (Throwable th) {
- return NOT_DEFINED;
- }
- }
-
- public void add(int jdbcType, String java) {
- add(new DbType(TypesMapping.getSqlNameByType(jdbcType)), java);
- }
-
- @Override
- public void add(DbType type, String java) {
- mapping.put(type, java);
- dbTypes.add(type);
- }
-
- /**
- * Guesses a default JDBC type for the Java class.
- *
- * @since 1.1
- */
- protected int getSqlTypeByJava(DbAttribute attribute, Class<?> javaClass) {
- if (javaClass == null) {
- return NOT_DEFINED;
- }
-
- // check standard mapping of class and superclasses
- Class<?> aClass = javaClass;
- while (aClass != null) {
-
- String name;
-
- if (aClass.isArray()) {
- name = aClass.getComponentType().getName() + "[]";
- } else {
- name = aClass.getName();
- }
-
- Object type = javaSqlEnum.get(name);
- if (type != null) {
- return ((Number) type).intValue();
- }
-
- aClass = aClass.getSuperclass();
- }
-
- // check non-standard JDBC types that are still supported by JPA
- if (javaClass.isArray()) {
-
- Class<?> elementType = javaClass.getComponentType();
- if (Character.class.isAssignableFrom(elementType) || Character.TYPE.isAssignableFrom(elementType)) {
- return Types.VARCHAR;
- } else if (Byte.class.isAssignableFrom(elementType) || Byte.TYPE.isAssignableFrom(elementType)) {
- return Types.VARBINARY;
- }
- }
-
- if (Calendar.class.isAssignableFrom(javaClass)) {
- return Types.TIMESTAMP;
- }
-
- if (BigInteger.class.isAssignableFrom(javaClass)) {
- return Types.BIGINT;
- }
-
- if (Serializable.class.isAssignableFrom(javaClass)) {
- // serializable check should be the last one when all other mapping
- // attempts failed
- return Types.VARBINARY;
- }
-
- return NOT_DEFINED;
- }
-
- /**
- * Get the corresponding Java type by its java.sql.Types counterpart. Note
- * that this method should be used as a last resort, with explicit mapping
- * provided by user used as a first choice, as it can only guess how to map
- * certain types, such as NUMERIC, etc.
- *
- * @return Fully qualified Java type name or null if not found.
- */
- @Override
- public String getJavaByJdbcType(DbAttribute attribute, int type) {
- String jdbcType = TypesMapping.getSqlNameByType(type);
- DbType dbType;
- if (attribute != null) {
- dbType = new DbType(jdbcType, attribute.getMaxLength(), attribute.getAttributePrecision(),
- attribute.getScale(), attribute.isMandatory());
- } else {
- dbType = new DbType(jdbcType);
- }
-
- String typeName = getJavaByJdbcType(dbType);
-
- if (usePrimitives != null && usePrimitives) {
- String primitive = classToPrimitive.get(typeName);
- if (primitive != null) {
- return primitive;
- }
- }
-
- return typeName;
- }
-
- public String getJavaByJdbcType(DbType type) {
- for (DbType t : dbTypes) {
- if (t.isCover(type)) {
- // because dbTypes sorted by specificity we will take first and
- // the most specific matching
- // that applicable for attribute
- return mapping.get(t);
- }
- }
-
- return null;
- }
-
- public Boolean getUsePrimitives() {
- return usePrimitives;
- }
-
- public void setUsePrimitives(Boolean usePrimitives) {
- this.usePrimitives = usePrimitives;
- }
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java
deleted file mode 100644
index 71d86d5..0000000
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/mapper/Jdbc2JavaTypeMapper.java
+++ /dev/null
@@ -1,33 +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.mapper;
-
-import org.apache.cayenne.map.DbAttribute;
-
-/**
- * @since 4.0.
- */
-public interface Jdbc2JavaTypeMapper {
-
- String getJavaByJdbcType(DbAttribute attribute, int type);
-
- int getJdbcTypeByJava(DbAttribute attribute, String className);
-
- void add(DbType type, String java);
-}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/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 290dba8..11ac007 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
@@ -28,7 +28,7 @@ import org.apache.cayenne.map.naming.NameConverter;
* 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 3.0
+ * @since 4.0
*/
public class LegacyObjectNameGenerator implements ObjectNameGenerator {
public String createDbRelationshipName(
http://git-wip-us.apache.org/repos/asf/cayenne/blob/fc27ef7a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java
deleted file mode 100644
index f2cb475..0000000
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/mapper/DbTypeTest.java
+++ /dev/null
@@ -1,87 +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.mapper;
-
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.TreeSet;
-
-import static org.junit.Assert.*;
-
-public class DbTypeTest {
-
- @Test
- public void testCompareTo() throws Exception {
- TreeSet<DbType> set = new TreeSet<DbType>();
- set.add(new DbType("type-01", null, null, null, null));
- set.add(new DbType("type-02", null, null, null, null));
- set.add(new DbType("type-02", 1, null, null, null));
- set.add(new DbType("type-02", 2, null, null, null));
- set.add(new DbType("type-02", 2, null, null, true));
- set.add(new DbType("type-02", 2, null, null, false));
- set.add(new DbType("type-02", 2, null, 5, null));
- set.add(new DbType("type-02", 2, null, 5, false));
- set.add(new DbType("type-02", 2, null, 5, true));
- set.add(new DbType("type-02", null, 8, 5, true));
- set.add(new DbType("type-02", null, 9, 5, true));
-
- Iterator<DbType> iterator = set.iterator();
- assertEquals(new DbType("type-02", 2, null, 5, true), iterator.next());
- assertEquals(new DbType("type-02", 2, null, 5, false), iterator.next());
- assertEquals(new DbType("type-02", null, 9, 5, true), iterator.next());
- assertEquals(new DbType("type-02", null, 8, 5, true), iterator.next());
- assertEquals(new DbType("type-02", 2, null, 5, null), iterator.next());
- assertEquals(new DbType("type-02", 2, null, null, true), iterator.next());
- assertEquals(new DbType("type-02", 2, null, null, false), iterator.next());
- assertEquals(new DbType("type-02", 2, null, null, null), iterator.next());
- assertEquals(new DbType("type-02", 1, null, null, null), iterator.next());
- assertEquals(new DbType("type-02", null, null, null, null), iterator.next());
- assertEquals(new DbType("type-01", null, null, null, null), iterator.next());
- }
-
- @Test
- public void testCover() throws Exception {
- DbType typeJava = new DbType("java");
- assertTrue(typeJava.isCover(typeJava));
- assertTrue(typeJava.isCover(new DbType("java", 1, 1, 1, null)));
- assertTrue(typeJava.isCover(new DbType("java", 1, null, null, null)));
- assertTrue(typeJava.isCover(new DbType("java", null, 1, null, null)));
- assertTrue(typeJava.isCover(new DbType("java", null, null, 1, null)));
- assertTrue(typeJava.isCover(new DbType("java", null, null, null, true)));
- assertTrue(typeJava.isCover(new DbType("java", null, null, null, false)));
- assertFalse(typeJava.isCover(new DbType("java1", null, null, null, null)));
-
- DbType typeWithLength = new DbType("java", 1, null, null, null);
- assertTrue(typeWithLength.isCover(typeWithLength));
- assertTrue(typeWithLength.isCover(new DbType("java", 1, null, 1, null)));
- assertTrue(typeWithLength.isCover(new DbType("java", 1, null, 1, true)));
- assertTrue(typeWithLength.isCover(new DbType("java", 1, null, null, true)));
- assertTrue(typeWithLength.isCover(new DbType("java", 1, 1, null, true)));
- assertFalse(typeWithLength.isCover(new DbType("java", 2, null, null, null)));
- assertFalse(typeWithLength.isCover(new DbType("java", null, null, null, true)));
- assertFalse(typeWithLength.isCover(new DbType("java1", 2, null, null, null)));
-
- DbType typeWithLengthAndNotNull = new DbType("java", 1, null, null, true);
- assertTrue(typeWithLength.isCover(typeWithLengthAndNotNull));
- assertTrue(typeWithLength.isCover(new DbType("java", 1, null, 1, true)));
- assertTrue(typeWithLength.isCover(new DbType("java", 1, 1, 1, true)));
- }
-}
\ No newline at end of file
[2/3] cayenne git commit: removing dependency on commons-lang
Posted by aa...@apache.org.
removing dependency on commons-lang
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/041cb78f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/041cb78f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/041cb78f
Branch: refs/heads/master
Commit: 041cb78f440248be5ecb982f60c76d431185897d
Parents: b809bb0
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Sep 30 17:28:14 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Sep 30 17:45:50 2016 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/tools/dbimport/DbImportConfiguration.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/041cb78f/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
index e111d64..e45cdf9 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/dbimport/DbImportConfiguration.java
@@ -250,7 +250,7 @@ public class DbImportConfiguration {
// explicitly requested by the plugin caller, and the provided catalog is
// not a pattern
String catalog = catalogs[0].name;
- if (defaultPackage != null && defaultPackage.length() > 0 && catalog.indexOf('%') < 0) {
+ if (catalog != null && catalog.length() > 0 && catalog.indexOf('%') < 0) {
dataMap.setDefaultCatalog(catalog);
}
@@ -258,7 +258,7 @@ public class DbImportConfiguration {
// explicitly requested by the plugin caller, and the provided schema is
// not a pattern
String schema = catalogs[0].schemas[0].name;
- if (defaultPackage != null && defaultPackage.length() > 0 && schema.indexOf('%') < 0) {
+ if (schema != null && schema.length() > 0 && schema.indexOf('%') < 0) {
dataMap.setDefaultSchema(schema);
}
}