You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/10/19 12:23:23 UTC
[1/7] cayenne git commit: Generate is as properties.
Repository: cayenne
Updated Branches:
refs/heads/master 7694a64d3 -> 7b5d73e4e
Generate is as properties.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/3124d171
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/3124d171
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/3124d171
Branch: refs/heads/master
Commit: 3124d1717f72d39868f13931c815fdafb9c6f0f0
Parents: adcbf13
Author: kkomyak <co...@gmail.com>
Authored: Mon Sep 17 14:54:48 2018 +0300
Committer: kkomyak <co...@gmail.com>
Committed: Wed Sep 19 14:44:22 2018 +0300
----------------------------------------------------------------------
cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm | 7 ++++++-
cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm | 7 ++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3124d171/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
index b9285a8..e586651 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
@@ -39,6 +39,9 @@ ${importUtils.addType("${basePackageName}.${baseClassName}")}##
${importUtils.addType("java.io.IOException")}##
${importUtils.addType("java.io.ObjectInputStream")}##
${importUtils.addType("java.io.ObjectOutputStream")}##
+#if( $object.DbEntity )
+${importUtils.addType("org.apache.cayenne.exp.ExpressionFactory")}##
+#end
#if((${object.DeclaredAttributes} && !${object.DeclaredAttributes.isEmpty()}) || (${object.DeclaredRelationships} && !${object.DeclaredRelationships.isEmpty()}))
${importUtils.addType('org.apache.cayenne.exp.Property')}##
#end
@@ -71,7 +74,9 @@ public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName}
#end
#if( $object.DbEntity )
#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- public static final String ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = "${idAttr.Name}";
+ #if(!$object.DeclaredAttributes.toString().contains($idAttr.Name))
+ public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
+ #end
#end
#end
http://git-wip-us.apache.org/repos/asf/cayenne/blob/3124d171/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
index 91152d7..ab67534 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
@@ -41,6 +41,9 @@ ${importUtils.addType("${basePackageName}.${baseClassName}")}##
${importUtils.addType("java.io.IOException")}##
${importUtils.addType("java.io.ObjectInputStream")}##
${importUtils.addType("java.io.ObjectOutputStream")}##
+#if( $object.DbEntity )
+${importUtils.addType("org.apache.cayenne.exp.ExpressionFactory")}##
+#end
#if((${object.DeclaredAttributes} && !${object.DeclaredAttributes.isEmpty()}) || (${object.DeclaredRelationships} && !${object.DeclaredRelationships.isEmpty()}))
${importUtils.addType('org.apache.cayenne.exp.Property')}##
#end
@@ -79,7 +82,9 @@ public abstract class ${superClassName} extends ${baseClassName} {
#end
#if( $object.DbEntity )
#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- public static final String ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = "${idAttr.Name}";
+ #if(!$object.DeclaredAttributes.toString().contains($idAttr.Name))
+ public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
+ #end
#end
#end
[3/7] cayenne git commit: Merge PR #319
Posted by nt...@apache.org.
Merge PR #319
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/c0a61900
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/c0a61900
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/c0a61900
Branch: refs/heads/master
Commit: c0a619004720a1126ceb226d11433edd221ca66d
Parents: 7694a64 9f9cfd4
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Oct 19 11:31:43 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Oct 19 11:31:43 2018 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/gen/EntityUtils.java | 10 ++++++++++
.../main/resources/templates/v4_1/singleclass.vm | 7 ++++++-
.../main/resources/templates/v4_1/superclass.vm | 7 ++++++-
.../org/apache/cayenne/gen/EntityUtilsTest.java | 19 +++++++++++++++++++
4 files changed, 41 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
[5/7] cayenne git commit: CAY-2478 cgen: Generate properties for PK
support in ant, maven and gradle
Posted by nt...@apache.org.
CAY-2478 cgen: Generate properties for PK
support in ant, maven and gradle
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/0420a2a5
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/0420a2a5
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/0420a2a5
Branch: refs/heads/master
Commit: 0420a2a592b4b29069a13884e251115c1e3a86a1
Parents: 8e75733
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Oct 19 15:10:29 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Oct 19 15:10:29 2018 +0300
----------------------------------------------------------------------
.../apache/cayenne/tools/CayenneGeneratorTask.java | 15 +++++++++++++++
.../java/org/apache/cayenne/tools/CgenTask.java | 16 ++++++++++++++++
.../apache/cayenne/tools/CayenneGeneratorMojo.java | 11 ++++++++++-
3 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0420a2a5/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
index d468cc9..3d600b1 100644
--- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
+++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java
@@ -64,6 +64,13 @@ public class CayenneGeneratorTask extends CayenneTask {
protected boolean usepkgpath;
protected boolean createpropertynames;
+ /**
+ * Create PK attributes as Properties
+ *
+ * @since 4.1
+ */
+ protected boolean createpkproperties;
+
public CayenneGeneratorTask() {
this.makepairs = true;
this.mode = ArtifactsGenerationMode.ENTITY.getLabel();
@@ -95,6 +102,7 @@ public class CayenneGeneratorTask extends CayenneTask {
action.setQuerySuperTemplate(querysupertemplate);
action.setUsePkgPath(usepkgpath);
action.setCreatePropertyNames(createpropertynames);
+ action.setCreatePKProperties(createpkproperties);
return action;
}
@@ -291,6 +299,13 @@ public class CayenneGeneratorTask extends CayenneTask {
}
/**
+ * @since 4.1
+ */
+ public void setCreatepkproperties(boolean createpkproperties) {
+ this.createpkproperties = createpkproperties;
+ }
+
+ /**
* Provides a <code>VPPConfig</code> object to configure. (Written with createConfig()
* instead of addConfig() to avoid run-time dependency on VPP).
*/
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0420a2a5/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
----------------------------------------------------------------------
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
index fe3892b..eae85b8 100644
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
+++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java
@@ -114,6 +114,13 @@ public class CgenTask extends BaseCayenneTask {
@Input
private boolean force;
+ /**
+ * If set to <code>true</code>, will generate PK attributes as Properties.
+ * Default is <code>false</code>.
+ * @since 4.1
+ */
+ private boolean createPKProperties;
+
private String destDirName;
@TaskAction
@@ -185,6 +192,7 @@ public class CgenTask extends BaseCayenneTask {
action.setEmbeddableTemplate(embeddableTemplate);
action.setUsePkgPath(usePkgPath);
action.setCreatePropertyNames(createPropertyNames);
+ action.setCreatePKProperties(createPKProperties);
return action;
}
@@ -465,4 +473,12 @@ public class CgenTask extends BaseCayenneTask {
setForce(force);
}
+ public void setCreatePKProperties(boolean createPKProperties) {
+ this.createPKProperties = createPKProperties;
+ }
+
+ public void createPKProperties(boolean createPKProperties) {
+ setCreatePKProperties(createPKProperties);
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/0420a2a5/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
index 72c39b4..10cd860 100644
--- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
+++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
@@ -193,7 +193,15 @@ public class CayenneGeneratorMojo extends AbstractMojo {
@Parameter(defaultValue = "false", property = "force")
private boolean force;
- private transient Injector injector;
+ /**
+ * If set to <code>true</code>, will generate PK attributes as Properties.
+ * Default is <code>false</code>.
+ * @since 4.1
+ */
+ @Parameter(defaultValue = "false")
+ private boolean createPKProperties;
+
+ private transient Injector injector;
public void execute() throws MojoExecutionException, MojoFailureException {
// Create the destination directory if necessary.
@@ -281,6 +289,7 @@ public class CayenneGeneratorMojo extends AbstractMojo {
action.setEmbeddableTemplate(embeddableTemplate);
action.setUsePkgPath(usePkgPath);
action.setCreatePropertyNames(createPropertyNames);
+ action.setCreatePKProperties(createPKProperties);
return action;
}
[6/7] cayenne git commit: CAY-2478 cgen: Generate properties for PK
release notes
Posted by nt...@apache.org.
CAY-2478 cgen: Generate properties for PK
release notes
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/904753b8
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/904753b8
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/904753b8
Branch: refs/heads/master
Commit: 904753b8a0ee62e926de30f2655ac6847bdeef89
Parents: 0420a2a
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Oct 19 15:10:55 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Oct 19 15:10:55 2018 +0300
----------------------------------------------------------------------
RELEASE-NOTES.txt | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/904753b8/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index dce64ec..052e27c 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -19,6 +19,7 @@ CAY-2471 Support multiple XML project versions
CAY-2473 Modeler: cleanup attributes and relationship editors
CAY-2474 Modeler: swap buttons in dialog toolbar
CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table
+CAY-2478 cgen: Generate properties for PK
CAY-2481 Support for Object[] as return type in SQLTemplate and SQLExec
CAY-2485 Compact Slf4j Logger
CAY-2487 Removed usage of CayenneException.
[2/7] cayenne git commit: Added method to EntityUtil which checks is
Object entity contain db attribute path. Refactor templates.
Posted by nt...@apache.org.
Added method to EntityUtil which checks is Object entity contain db attribute path. Refactor templates.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/9f9cfd4b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/9f9cfd4b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/9f9cfd4b
Branch: refs/heads/master
Commit: 9f9cfd4b4390ed506471f365839366e7771e6b80
Parents: 3124d17
Author: kkomyak <co...@gmail.com>
Authored: Tue Sep 25 17:16:53 2018 +0300
Committer: kkomyak <co...@gmail.com>
Committed: Tue Sep 25 17:16:53 2018 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/gen/EntityUtils.java | 10 ++++++++++
.../main/resources/templates/v4_1/singleclass.vm | 2 +-
.../main/resources/templates/v4_1/superclass.vm | 2 +-
.../org/apache/cayenne/gen/EntityUtilsTest.java | 19 +++++++++++++++++++
4 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
index cd814db..51eefdc 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.gen;
import java.util.Collection;
+import java.util.Objects;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectId;
@@ -264,6 +265,15 @@ public class EntityUtils {
}
/**
+ * @since 4.1
+ * Checks is the db attribute declared for some object attribute.
+ * @param id - db attribute
+ */
+ public boolean declaresDbAttribute(String id) {
+ return objEntity.getAttributes().stream().filter(Objects::nonNull).anyMatch(a -> id.equals(a.getDbAttributePath()));
+ }
+
+ /**
* @return the list of all callback names registered for the entity.
* @since 3.0
*/
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
index e586651..d2ce30a 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
@@ -74,7 +74,7 @@ public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName}
#end
#if( $object.DbEntity )
#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- #if(!$object.DeclaredAttributes.toString().contains($idAttr.Name))
+ #if(!${entityUtils.declaresDbAttribute($idAttr.Name)})
public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
#end
#end
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
index ab67534..df3d656 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
@@ -82,7 +82,7 @@ public abstract class ${superClassName} extends ${baseClassName} {
#end
#if( $object.DbEntity )
#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- #if(!$object.DeclaredAttributes.toString().contains($idAttr.Name))
+ #if(!${entityUtils.declaresDbAttribute($idAttr.Name)})
public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
#end
#end
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
index 21d7162..6bb87dd 100644
--- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
+++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.gen;
import org.apache.cayenne.map.CallbackDescriptor;
import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.junit.After;
import org.junit.Before;
@@ -29,6 +30,7 @@ import org.junit.Test;
import java.util.LinkedHashSet;
import java.util.Set;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -72,4 +74,21 @@ public class EntityUtilsTest {
assertTrue("Contains duplicate callback names.", hasNoDuplicates);
}
+
+ @Test
+ public void testDeclaresDbAttribute() throws Exception {
+
+ String existKey = "testKey";
+ String notExistKey = "testKey1";
+
+ ObjAttribute attribute = new ObjAttribute(existKey);
+ attribute.setDbAttributePath(existKey);
+ objEntity.addAttribute(attribute);
+
+ entityUtils = new EntityUtils(dataMap, objEntity, "TestBaseClass", "TestSuperClass", "TestSubClass");
+
+ assertTrue(entityUtils.declaresDbAttribute(existKey));
+ assertFalse(entityUtils.declaresDbAttribute(notExistKey));
+
+ }
}
[7/7] cayenne git commit: CAY-2478 cgen: Generate properties for PK
refactor meaningful PK check
Posted by nt...@apache.org.
CAY-2478 cgen: Generate properties for PK
refactor meaningful PK check
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7b5d73e4
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7b5d73e4
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7b5d73e4
Branch: refs/heads/master
Commit: 7b5d73e4e92f2eae5230b87142c4ae4e5a0a6b9c
Parents: 904753b
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Oct 19 15:23:10 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Oct 19 15:23:10 2018 +0300
----------------------------------------------------------------------
.../src/main/java/org/apache/cayenne/gen/EntityUtils.java | 8 +++-----
.../src/main/resources/templates/v4_1/singleclass.vm | 2 +-
cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm | 2 +-
3 files changed, 5 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7b5d73e4/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
index e5ea590..2923b98 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
@@ -20,11 +20,9 @@
package org.apache.cayenne.gen;
import java.util.Collection;
-import java.util.Objects;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -268,12 +266,12 @@ public class EntityUtils {
/**
* Checks is the db attribute declared for some object attribute.
- * @param id - db attribute
+ * @param pkAttribute - db attribute for PK
*
* @since 4.1
*/
- public boolean declaresDbAttribute(String id) {
- return objEntity.getAttributes().stream().filter(Objects::nonNull).anyMatch(a -> id.equals(a.getDbAttributePath()));
+ public boolean declaresDbAttribute(DbAttribute pkAttribute) {
+ return objEntity.getAttributeForDbAttribute(pkAttribute) != null;
}
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7b5d73e4/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
index db9fb36..32ae64a 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
@@ -77,7 +77,7 @@ public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName}
###########################
#if( $object.DbEntity )
#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- #if( $createPKProperties && !${importUtils.declaresDbAttribute($idAttr.Name)})
+ #if( $createPKProperties && !${entityUtils.declaresDbAttribute($idAttr)})
#set ( $type = "$importUtils.dbAttributeToJavaType($idAttr)")
public static final Property<$type> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), ${type}.class});
#else
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7b5d73e4/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
index 559c89d..6f8449d 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
@@ -85,7 +85,7 @@ public abstract class ${superClassName} extends ${baseClassName} {
###########################
#if( $object.DbEntity )
#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- #if( $createPKProperties && !${importUtils.declaresDbAttribute($idAttr.Name)})
+ #if( $createPKProperties && !${entityUtils.declaresDbAttribute($idAttr)})
#set ( $type = "$importUtils.dbAttributeToJavaType($idAttr)")
public static final Property<$type> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_PROPERTY = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), ${type}.class);
#end
[4/7] cayenne git commit: CAY-2478 cgen: Generate properties for PK
optional PK properties generation
Posted by nt...@apache.org.
CAY-2478 cgen: Generate properties for PK
optional PK properties generation
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8e75733b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8e75733b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8e75733b
Branch: refs/heads/master
Commit: 8e75733bf652c5d2d59c7532c3ebabd2d89bcc3e
Parents: c0a6190
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Oct 19 14:58:23 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Oct 19 14:58:23 2018 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/gen/Artifact.java | 21 ++++++++++----------
.../cayenne/gen/ClassGenerationAction.java | 20 +++++++++++++++++++
.../org/apache/cayenne/gen/EntityUtils.java | 5 ++++-
.../org/apache/cayenne/gen/ImportUtils.java | 13 ++++++++++++
.../resources/templates/v4_1/singleclass.vm | 16 ++++++++++-----
.../main/resources/templates/v4_1/superclass.vm | 15 +++++++++-----
.../dialog/codegen/CustomModeController.java | 4 ++++
.../modeler/dialog/codegen/CustomModePanel.java | 8 ++++++++
.../codegen/CustomPreferencesUpdater.java | 18 ++++++++++++++++-
9 files changed, 98 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/Artifact.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/Artifact.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/Artifact.java
index fcd9118..d16bf6e 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/Artifact.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/Artifact.java
@@ -28,20 +28,21 @@ import org.apache.velocity.VelocityContext;
*/
public interface Artifact {
- public static String STRING_UTILS_KEY = "stringUtils";
- public static String IMPORT_UTILS_KEY = "importUtils";
+ String STRING_UTILS_KEY = "stringUtils";
+ String IMPORT_UTILS_KEY = "importUtils";
/**
* Root object, such as ObjEntity or Embeddable, etc.
*/
- public static String OBJECT_KEY = "object";
- public static String SUPER_CLASS_KEY = "superClassName";
- public static String SUPER_PACKAGE_KEY = "superPackageName";
- public static String SUB_CLASS_KEY = "subClassName";
- public static String SUB_PACKAGE_KEY = "subPackageName";
- public static String BASE_CLASS_KEY = "baseClassName";
- public static String BASE_PACKAGE_KEY = "basePackageName";
- public static String CREATE_PROPERTY_NAMES = "createPropertyNames";
+ String OBJECT_KEY = "object";
+ String SUPER_CLASS_KEY = "superClassName";
+ String SUPER_PACKAGE_KEY = "superPackageName";
+ String SUB_CLASS_KEY = "subClassName";
+ String SUB_PACKAGE_KEY = "subPackageName";
+ String BASE_CLASS_KEY = "baseClassName";
+ String BASE_PACKAGE_KEY = "basePackageName";
+ String CREATE_PROPERTY_NAMES = "createPropertyNames";
+ String CREATE_PK_PROPERTIES = "createPKProperties";
TemplateType[] getTemplateTypes(ArtifactGenerationMode mode);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
index ecaddac..0eaf66b 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
@@ -82,6 +82,11 @@ public class ClassGenerationAction {
protected boolean createPropertyNames;
protected boolean force; // force run generator
+ /**
+ * @since 4.1
+ */
+ protected boolean createPKProperties;
+
// runtime ivars
protected VelocityContext context;
protected Map<String, Template> templateCache;
@@ -189,6 +194,7 @@ public class ClassGenerationAction {
context.put(Artifact.STRING_UTILS_KEY, stringUtils);
context.put(Artifact.CREATE_PROPERTY_NAMES, createPropertyNames);
+ context.put(Artifact.CREATE_PK_PROPERTIES, createPKProperties);
}
/**
@@ -585,4 +591,18 @@ public class ClassGenerationAction {
public void setForce(boolean force) {
this.force = force;
}
+
+ /**
+ * @since 4.1
+ */
+ public boolean isCreatePKProperties() {
+ return createPKProperties;
+ }
+
+ /**
+ * @since 4.1
+ */
+ public void setCreatePKProperties(boolean createPKProperties) {
+ this.createPKProperties = createPKProperties;
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
index 51eefdc..e5ea590 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
@@ -24,7 +24,9 @@ import java.util.Objects;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.MappingNamespace;
import org.apache.cayenne.map.ObjAttribute;
@@ -265,9 +267,10 @@ public class EntityUtils {
}
/**
- * @since 4.1
* Checks is the db attribute declared for some object attribute.
* @param id - db attribute
+ *
+ * @since 4.1
*/
public boolean declaresDbAttribute(String id) {
return objEntity.getAttributes().stream().filter(Objects::nonNull).anyMatch(a -> id.equals(a.getDbAttributePath()));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ImportUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ImportUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ImportUtils.java
index 275a535..6072356 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ImportUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ImportUtils.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.gen;
+import org.apache.cayenne.dba.TypesMapping;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.util.Util;
@@ -277,4 +279,15 @@ public class ImportUtils {
return outputBuffer.toString();
}
+
+ /**
+ * @param attribute db attribute
+ * @return name of the java type
+ *
+ * @since 4.1
+ */
+ public String dbAttributeToJavaType(DbAttribute attribute) {
+ String javaTypeName = TypesMapping.getJavaBySqlType(attribute.getType());
+ return formatJavaType(javaTypeName);
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
index d2ce30a..db9fb36 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
@@ -39,7 +39,7 @@ ${importUtils.addType("${basePackageName}.${baseClassName}")}##
${importUtils.addType("java.io.IOException")}##
${importUtils.addType("java.io.ObjectInputStream")}##
${importUtils.addType("java.io.ObjectOutputStream")}##
-#if( $object.DbEntity )
+#if( $createPKProperties )
${importUtils.addType("org.apache.cayenne.exp.ExpressionFactory")}##
#end
#if((${object.DeclaredAttributes} && !${object.DeclaredAttributes.isEmpty()}) || (${object.DeclaredRelationships} && !${object.DeclaredRelationships.isEmpty()}))
@@ -72,13 +72,19 @@ public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName}
#end
#end
+###########################
+## Create PK properties ##
+###########################
#if( $object.DbEntity )
-#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- #if(!${entityUtils.declaresDbAttribute($idAttr.Name)})
- public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
+ #foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
+ #if( $createPKProperties && !${importUtils.declaresDbAttribute($idAttr.Name)})
+ #set ( $type = "$importUtils.dbAttributeToJavaType($idAttr)")
+ public static final Property<$type> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), ${type}.class});
+ #else
+ public static final String ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = "${idAttr.Name}";
+ #end
#end
#end
-#end
#######################
## Create Properties ##
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
index df3d656..559c89d 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
@@ -41,7 +41,7 @@ ${importUtils.addType("${basePackageName}.${baseClassName}")}##
${importUtils.addType("java.io.IOException")}##
${importUtils.addType("java.io.ObjectInputStream")}##
${importUtils.addType("java.io.ObjectOutputStream")}##
-#if( $object.DbEntity )
+#if( $createPKProperties )
${importUtils.addType("org.apache.cayenne.exp.ExpressionFactory")}##
#end
#if((${object.DeclaredAttributes} && !${object.DeclaredAttributes.isEmpty()}) || (${object.DeclaredRelationships} && !${object.DeclaredRelationships.isEmpty()}))
@@ -80,13 +80,18 @@ public abstract class ${superClassName} extends ${baseClassName} {
#end
#end
+###########################
+## Create PK properties ##
+###########################
#if( $object.DbEntity )
-#foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
- #if(!${entityUtils.declaresDbAttribute($idAttr.Name)})
- public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
+ #foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
+ #if( $createPKProperties && !${importUtils.declaresDbAttribute($idAttr.Name)})
+ #set ( $type = "$importUtils.dbAttributeToJavaType($idAttr)")
+ public static final Property<$type> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_PROPERTY = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), ${type}.class);
+ #end
+ public static final String ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = "${idAttr.Name}";
#end
#end
-#end
#######################
## Create Properties ##
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
index 67df44b..3ec4778 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModeController.java
@@ -125,6 +125,9 @@ public class CustomModeController extends GeneratorController {
builder.bindToStateChange(view.getCreatePropertyNames(), "customPreferencesUpdater.createPropertyNames")
.updateView();
+ builder.bindToStateChange(view.getCreatePKProperties(), "customPreferencesUpdater.createPKProperties")
+ .updateView();
+
updateTemplates();
}
@@ -208,6 +211,7 @@ public class CustomModeController extends GeneratorController {
generator.setUsePkgPath(view.getUsePackagePath().isSelected());
generator.setMakePairs(view.getPairs().isSelected());
generator.setCreatePropertyNames(view.getCreatePropertyNames().isSelected());
+ generator.setCreatePKProperties(view.getCreatePKProperties().isSelected());
if (!Util.isEmptyString(view.getOutputPattern().getText())) {
generator.setOutputPattern(view.getOutputPattern().getText());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
index b020a2e..7dd2e79 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomModePanel.java
@@ -39,6 +39,7 @@ public class CustomModePanel extends GeneratorControllerPanel {
private JCheckBox usePackagePath;
private JTextField outputPattern;
private JCheckBox createPropertyNames;
+ private JCheckBox createPKProperties;
private ActionLink manageTemplatesLink;
@@ -51,6 +52,7 @@ public class CustomModePanel extends GeneratorControllerPanel {
this.usePackagePath = new JCheckBox();
this.outputPattern = new JTextField();
this.createPropertyNames = new JCheckBox();
+ this.createPKProperties = new JCheckBox();
this.manageTemplatesLink = new ActionLink("Customize Templates...");
manageTemplatesLink.setFont(manageTemplatesLink.getFont().deriveFont(10f));
@@ -84,6 +86,9 @@ public class CustomModePanel extends GeneratorControllerPanel {
builder.append("Create Property Names:", createPropertyNames);
builder.nextLine();
+ builder.append("Create PK Properties:", createPKProperties);
+ builder.nextLine();
+
setLayout(new BorderLayout());
add(builder.getPanel(), BorderLayout.CENTER);
@@ -126,4 +131,7 @@ public class CustomModePanel extends GeneratorControllerPanel {
return createPropertyNames;
}
+ public JCheckBox getCreatePKProperties() {
+ return createPKProperties;
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8e75733b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomPreferencesUpdater.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomPreferencesUpdater.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomPreferencesUpdater.java
index 6764a97..1d8d4f9 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomPreferencesUpdater.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/CustomPreferencesUpdater.java
@@ -36,7 +36,8 @@ public class CustomPreferencesUpdater {
USE_PACKAGE_PATH,
MODE,
OUTPUT_PATTERN,
- CREATE_PROPERTY_NAMES
+ CREATE_PROPERTY_NAMES,
+ CREATE_PK_PROPERTIES
}
private static final String OVERWRITE = "overwrite";
@@ -45,6 +46,7 @@ public class CustomPreferencesUpdater {
private static final String MODE = "mode";
private static final String OUTPUT_PATTERN = "outputPattern";
private static final String CREATE_PROPERTY_NAMES = "createPropertyNames";
+ private static final String CREATE_PK_PROPERTIES = "createPKProperties";
private Map<DataMap, DataMapDefaults> mapPreferences;
@@ -117,6 +119,14 @@ public class CustomPreferencesUpdater {
updatePreferences(Property.CREATE_PROPERTY_NAMES, createPropertyNames);
}
+ public Boolean getCreatePKProperties() {
+ return (Boolean) getProperty(Property.CREATE_PK_PROPERTIES);
+ }
+
+ public void setCreatePKProperties(Boolean createPKProperties) {
+ updatePreferences(Property.CREATE_PK_PROPERTIES, createPKProperties);
+ }
+
private Object getProperty(Property property) {
Object obj = null;
@@ -148,6 +158,9 @@ public class CustomPreferencesUpdater {
case CREATE_PROPERTY_NAMES:
obj = entry.getValue().getBooleanProperty(CREATE_PROPERTY_NAMES);
break;
+ case CREATE_PK_PROPERTIES:
+ obj = entry.getValue().getBooleanProperty(CREATE_PK_PROPERTIES);
+ break;
default:
throw new IllegalArgumentException("Bad type property: " + property);
}
@@ -185,6 +198,9 @@ public class CustomPreferencesUpdater {
case CREATE_PROPERTY_NAMES:
entry.getValue().setBooleanProperty(CREATE_PROPERTY_NAMES, (Boolean) value);
break;
+ case CREATE_PK_PROPERTIES:
+ entry.getValue().setBooleanProperty(CREATE_PK_PROPERTIES, (Boolean) value);
+ break;
default:
throw new IllegalArgumentException("Bad type property: " + property);
}