Author: tchemit Date: 2013-06-05 17:53:25 +0200 (Wed, 05 Jun 2013) New Revision: 654 Url: http://nuiton.org/projects/sandbox/repository/revisions/654 Log: - can use a entity contract - rename some stuff Modified: nuiton-jpa/nuiton-jpa-templates/src/it/magalie-with-generated-value/src/main/xmi/magalie.properties nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaModelValidator.java nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaPersistenceContextTransformer.java nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesGeneratorUtil.java nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesTagValues.java Modified: nuiton-jpa/nuiton-jpa-templates/src/it/magalie-with-generated-value/src/main/xmi/magalie.properties =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/it/magalie-with-generated-value/src/main/xmi/magalie.properties 2013-06-05 14:42:46 UTC (rev 653) +++ nuiton-jpa/nuiton-jpa-templates/src/it/magalie-with-generated-value/src/main/xmi/magalie.properties 2013-06-05 15:53:25 UTC (rev 654) @@ -21,7 +21,7 @@ # <http://www.gnu.org/licenses/lgpl-3.0.html>. # #L% ### -model.tagValue.idFactory=org.nuiton.jpa.api.DefaultJpaEntityIdFactory +model.tagValue.idFactory=true com.franciaflex.magalie.persistence.entity.Article.attribute.fixedLocations.stereotype=unique Modified: nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java 2013-06-05 14:42:46 UTC (rev 653) +++ nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java 2013-06-05 15:53:25 UTC (rev 654) @@ -154,6 +154,15 @@ addAnnotation(output, MappedSuperclass.class); + // detect if there is a contract to set on abstract + String entityContractName = packageName + "." + input.getName() + "Entity"; + + boolean addUserEntityContract = isInClassPath(entityContractName); + + if (addUserEntityContract) { + addInterface(output, entityContractName); + } + String prefix = getConstantPrefix(input, DEFAULT_CONSTANT_PREFIX); setConstantPrefix(prefix); @@ -166,10 +175,10 @@ addSerializable(input, output, serializableFound); - String idGenerator = - JpaTemplatesGeneratorUtil.getIdGeneratorTagValue(getModel()); + boolean useIdGenerator = + JpaTemplatesGeneratorUtil.useIdFactory(getModel()); - if (StringUtils.isNotEmpty(idGenerator)) { + if (useIdGenerator) { // use an idGenerator Modified: nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaModelValidator.java =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaModelValidator.java 2013-06-05 14:42:46 UTC (rev 653) +++ nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaModelValidator.java 2013-06-05 15:53:25 UTC (rev 654) @@ -24,9 +24,7 @@ * #L% */ -import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.validator.ObjectModelValidator; @@ -46,8 +44,7 @@ @Override protected boolean validateModel(ObjectModel model) { - String idGeneratorTagValue = JpaTemplatesGeneratorUtil.getIdGeneratorTagValue(model); - useIdGenerator = StringUtils.isNotEmpty(idGeneratorTagValue); + boolean useIdGenerator = JpaTemplatesGeneratorUtil.useIdFactory(model); return super.validateModel(model); } Modified: nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaPersistenceContextTransformer.java =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaPersistenceContextTransformer.java 2013-06-05 14:42:46 UTC (rev 653) +++ nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaPersistenceContextTransformer.java 2013-06-05 15:53:25 UTC (rev 654) @@ -24,12 +24,12 @@ * #L% */ -import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.jpa.api.AbstractJpaPersistenceContext; +import org.nuiton.jpa.api.DefaultJpaEntityIdFactory; import org.nuiton.jpa.api.JpaEntityIdFactory; import javax.persistence.EntityManager; @@ -67,19 +67,28 @@ boolean generateConcrete = !isInClassPath(packageName, entityConcreteName); + boolean useIdGenerator = + JpaTemplatesGeneratorUtil.useIdFactory(getModel()); + if (generateAbstract) { - generateAbstract(packageName, entityAbstractName); + generateAbstract(packageName, + entityAbstractName, + useIdGenerator); } if (generateConcrete) { - generateImpl(packageName, entityAbstractName, entityConcreteName); + generateImpl(packageName, + entityAbstractName, + entityConcreteName, + useIdGenerator); } } protected void generateAbstract(String packageName, - String className) { + String className, + boolean useIdGenerator) { // try to find a super class by tag-value String superClass = JpaTemplatesGeneratorUtil.getPersistenceContextSuperClassTagValue( @@ -104,21 +113,19 @@ addInterface(output, contractName); } - String idGenerator = - JpaTemplatesGeneratorUtil.getIdGeneratorTagValue(getModel()); + if (useIdGenerator) { - if (StringUtils.isNotEmpty(idGenerator)) { + // using an idGenerator - // using an idGenerator + addImport(output,DefaultJpaEntityIdFactory.class); ObjectModelOperation constructor = addConstructor( output, ObjectModelJavaModifier.PUBLIC); addParameter(constructor, EntityManager.class, "entityManager"); - setOperationBody(constructor, "" /*{ - super(new <%=idGenerator%>(), entityManager); + super(new DefaultJpaEntityIdFactory(), entityManager); }*/ ); @@ -156,17 +163,15 @@ protected ObjectModelClass generateImpl(String packageName, String entityAbstractName, - String entityConcreteName) { + String entityConcreteName, + boolean useIdGenerator) { ObjectModelClass output = createClass(entityConcreteName, packageName); setSuperClass(output, entityAbstractName); - String idGenerator = - JpaTemplatesGeneratorUtil.getIdGeneratorTagValue(getModel()); + if (useIdGenerator) { - if (StringUtils.isNotEmpty(idGenerator)) { - addConstructorWithIdGeneratorAndEntityManager(output); } addConstructorWithEntityManager(output); Modified: nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesGeneratorUtil.java =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesGeneratorUtil.java 2013-06-05 14:42:46 UTC (rev 653) +++ nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesGeneratorUtil.java 2013-06-05 15:53:25 UTC (rev 654) @@ -25,6 +25,7 @@ */ import com.google.common.base.Preconditions; +import org.apache.commons.lang3.ObjectUtils; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelAttribute; @@ -245,11 +246,16 @@ * @see JpaTemplatesTagValues#TAG_ID_FACTORY * @since 2.3 */ - public static String getIdGeneratorTagValue(ObjectModel model) { + public static String getIdFactoryTagValue(ObjectModel model) { String value = findTagValue(JpaTemplatesTagValues.TAG_ID_FACTORY, null, model); return value; } + public static boolean useIdFactory(ObjectModel model) { + String value = getIdFactoryTagValue(model); + return ObjectUtils.equals("true", value); + } + /** * Obtain the value of the {@link JpaTemplatesTagValues#TAG_ENTITY_SUPER_CLASS} * tag value on the given model or classifier. @@ -326,18 +332,6 @@ return attribute.hasStereotype(JpaTemplatesStereoTypes.STEREOTYPE_UNIQUE); } - public static boolean generateEntityGeneratedValueAnnotation(ObjectModel model, - ObjectModelClass clazz) { - String idGeneratorTagValue = getIdGeneratorTagValue(model); - boolean result = idGeneratorTagValue == null; - if (result) { - - // check entity is not marked to not generate value - result = !hasNotGeneratedValueStereotype(clazz); - } - return result; - } - /** * Check if the given class has the * {@link JpaTemplatesStereoTypes#STEREOTYPE_NOT_GENERATED_VALUE} stereotype. @@ -350,4 +344,15 @@ public static boolean hasNotGeneratedValueStereotype(ObjectModelClassifier clazz) { return clazz.hasStereotype(JpaTemplatesStereoTypes.STEREOTYPE_NOT_GENERATED_VALUE); } + + public static boolean generateEntityGeneratedValueAnnotation(ObjectModel model, + ObjectModelClass clazz) { + boolean result = !useIdFactory(model); + if (result) { + + // check entity is not marked to not generate value + result = !hasNotGeneratedValueStereotype(clazz); + } + return result; + } } Modified: nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesTagValues.java =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesTagValues.java 2013-06-05 14:42:46 UTC (rev 653) +++ nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaTemplatesTagValues.java 2013-06-05 15:53:25 UTC (rev 654) @@ -90,7 +90,7 @@ /** * Tag value to get user defined id factory. * - * @see JpaTemplatesGeneratorUtil#getIdGeneratorTagValue(ObjectModel) + * @see JpaTemplatesGeneratorUtil#getIdFactoryTagValue(ObjectModel) * @since 0.1 */ @ModelPropertiesUtil.TagValueDefinition(