r2401 - in trunk: . topia-persistence/src/main/java/org/nuiton/topia/generator topia-persistence/src/test/java/org/nuiton/topia/test topia-persistence/src/test/java/org/nuiton/topia/test/evo1912 topia-persistence/src/test/xmi
Author: ymartel Date: 2012-01-18 16:45:09 +0100 (Wed, 18 Jan 2012) New Revision: 2401 Url: http://nuiton.org/repositories/revision/topia/2401 Log: evo#1912 Add TagValue to generate an "id" property with EntityDTOTransformer Added: trunk/topia-persistence/src/test/java/org/nuiton/topia/test/evo1912/ trunk/topia-persistence/src/test/java/org/nuiton/topia/test/evo1912/EntityDTOTransformerTest.java Modified: trunk/ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java trunk/topia-persistence/src/test/xmi/topiatest.properties Property changes on: trunk ___________________________________________________________________ Modified: svn:ignore - *.ipr *.iws .classpath *.iml .project target .settings + *.ipr *.iws .classpath *.iml .project target .settings .idea Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java 2012-01-12 15:56:52 UTC (rev 2400) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDTOTransformer.java 2012-01-18 15:45:09 UTC (rev 2401) @@ -41,6 +41,7 @@ import java.io.Serializable; import static org.nuiton.topia.generator.TopiaGeneratorUtil.hasUnidirectionalRelationOnAbstractType; +import static org.nuiton.topia.generator.TopiaGeneratorUtil.shouldGenerateDTOIdTagValue; /*{generator option: parentheses = false}*/ @@ -100,6 +101,11 @@ addAttribute(result, "serialVersionUID", "long", svUID, ObjectModelModifier.FINAL, ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC); } + boolean generateDTOId = shouldGenerateDTOIdTagValue(clazz, model); + if (generateDTOId) { + addAttribute(result, "id", "String"); + } + ObjectModelAttribute attr2; for (ObjectModelAttribute attr : clazz.getAttributes()) { ObjectModelAttribute reverse = attr.getReverseAttribute(); @@ -169,7 +175,25 @@ protected void addOperations(ObjectModelClass result,ObjectModelClass clazz) { + boolean generateDTOId = shouldGenerateDTOIdTagValue(clazz, model); ObjectModelOperation op; + if (generateDTOId) { + op = addOperation(result, "setId", "void", ObjectModelModifier.PUBLIC); + addParameter(op, "String", "id"); + setOperationBody(op, "" +/*{ + this.id = id; + }*/ + ); + + op = addOperation(result, "getId", "String", ObjectModelModifier.PUBLIC); + setOperationBody(op, "" +/*{ + return id; + }*/ + ); + } + op = addOperation(result, "addPropertyChangeListener", "void"); addParameter(op,PropertyChangeListener.class,"listener"); setOperationBody(op,"" Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2012-01-12 15:56:52 UTC (rev 2400) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2012-01-18 15:45:09 UTC (rev 2401) @@ -1801,5 +1801,21 @@ return Boolean.parseBoolean(value); } + /** + * Search if the TagValue {@link TopiaTagValues#TAG_GENERATE_ID_IN_DTO} has been + * activated in the model. + * + * @param classifier classifier to seek + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see TopiaTagValues#TAG_GENERATE_ID_IN_DTO + * @since 2.6.7 + */ + public static boolean shouldGenerateDTOIdTagValue(ObjectModelClassifier classifier, ObjectModel model) { + String tagValue = findTagValue(TopiaTagValues.TAG_GENERATE_ID_IN_DTO, classifier, model); + boolean generate = StringUtils.isNotEmpty(tagValue) && Boolean.valueOf(tagValue); + return generate; + } + } // TopiaGeneratorUtil Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java 2012-01-12 15:56:52 UTC (rev 2400) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaTagValues.java 2012-01-18 15:45:09 UTC (rev 2401) @@ -25,7 +25,6 @@ package org.nuiton.topia.generator; import org.nuiton.eugene.EugeneTagValues; -import org.nuiton.eugene.ModelPropertiesUtil; import org.nuiton.eugene.models.Model; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelAttribute; @@ -456,4 +455,17 @@ @TagValueDefinition(target = {ObjectModel.class,ObjectModelAttribute.class}, documentation = "Specifies if an nm-multiplicity attribute (or all nm-multiplicity attributes of a given model) needs an index in db (Hibernate mapping)") String TAG_INDEX_FOREIGN_KEYS = "indexForeignKeys"; + + /** + * Tag to specify if we want to add an "id" property in DTO generated by + * {@link EntityDTOTransformer}. + * <p/> + * + * @see EntityDTOTransformer + * @see TopiaGeneratorUtil#shouldGenerateDTOIdTagValue(ObjectModelClassifier, ObjectModel) + * @since 2.6.7 + */ + @TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class}, + documentation = "Add a \"id\" property with its getter/setter on a DTO.") + String TAG_GENERATE_ID_IN_DTO = "generateDTOId"; } Added: trunk/topia-persistence/src/test/java/org/nuiton/topia/test/evo1912/EntityDTOTransformerTest.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topia/test/evo1912/EntityDTOTransformerTest.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topia/test/evo1912/EntityDTOTransformerTest.java 2012-01-18 15:45:09 UTC (rev 2401) @@ -0,0 +1,24 @@ +package org.nuiton.topia.test.evo1912; + +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.topiatest.CompanyDTO; + +/** + * @author ymartel <martel@codelutin.com> + */ +public class EntityDTOTransformerTest { + + @Test + public void testEvo1912() throws Exception { + // simply test the getter/setter on id property : with the tagValue, they should be generated + CompanyDTO companyDTO = new CompanyDTO(); + String originalId = companyDTO.getId(); + Assert.assertNull(originalId); + String wantedId = "mycompany"; + companyDTO.setId(wantedId); + String updatedId = companyDTO.getId(); + Assert.assertEquals(wantedId, updatedId); + } + +} Modified: trunk/topia-persistence/src/test/xmi/topiatest.properties =================================================================== --- trunk/topia-persistence/src/test/xmi/topiatest.properties 2012-01-12 15:56:52 UTC (rev 2400) +++ trunk/topia-persistence/src/test/xmi/topiatest.properties 2012-01-18 15:45:09 UTC (rev 2401) @@ -25,6 +25,7 @@ model.tagvalue.i18n=topia.test.common. model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.constantPrefix=PROPERTY_ +model.tagvalue.generateDTOId=true # Do not use this tag value (deprecated since 2.5) #model.tagvalue.useLegacyDAO=true
participants (1)
-
ymartel@users.nuiton.org