r2076 - trunk/topia-persistence/src/main/java/org/nuiton/topia/generator
Author: tchemit Date: 2010-07-18 13:28:56 +0200 (Sun, 18 Jul 2010) New Revision: 2076 Url: http://nuiton.org/repositories/revision/topia/2076 Log: Evolution #773: Can generate EntityEnum as a standalone enumeration Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2010-07-11 08:39:27 UTC (rev 2075) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2010-07-18 11:28:56 UTC (rev 2076) @@ -73,8 +73,12 @@ resultClass = createClass(daoHelperClazzName, packageName); List<ObjectModelClass> classes = TopiaGeneratorUtil.getEntityClasses(model, true); - boolean generateOperator = TopiaGeneratorUtil.shouldgenerateOperatorForDAOHelper(null, model); + boolean generateOperator = + TopiaGeneratorUtil.shouldgenerateOperatorForDAOHelper(null, model); + boolean generateStandaloneEnum = + TopiaGeneratorUtil.shouldGnerateStandaloneEnumForDAOHelper(null, model); + addImport(resultClass, TopiaContextImplementor.class); addImport(resultClass, TopiaDAO.class); addImport(resultClass, TopiaEntity.class); @@ -240,9 +244,23 @@ // add enum - ObjectModelEnumerationImpl entityEnum = (ObjectModelEnumerationImpl) addInnerClassifier(resultClass, ObjectModelType.OBJECT_MODEL_ENUMERATION, entityEnumName); - addImport(resultClass,TopiaEntityEnum.class); + ObjectModelEnumeration entityEnum; + + if (generateStandaloneEnum) { + log.info("Will generate standalone " + entityEnumName + " in package " + packageName); + entityEnum = createEnumeration(entityEnumName, packageName); + addImport(entityEnum,TopiaEntity.class); + addImport(entityEnum,EntityOperatorStore.class); + addImport(entityEnum,Arrays.class); + + } else { + entityEnum = (ObjectModelEnumerationImpl) + addInnerClassifier(resultClass, ObjectModelType.OBJECT_MODEL_ENUMERATION, entityEnumName); + } + + addImport(resultClass, TopiaEntityEnum.class); addInterface(entityEnum, TopiaEntityEnum.class); +// addImport(entityEnum,TopiaEntityEnum.class); for (ObjectModelClass clazz : classes) { String clazzName = clazz.getName(); 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 2010-07-11 08:39:27 UTC (rev 2075) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2010-07-18 11:28:56 UTC (rev 2076) @@ -52,6 +52,7 @@ import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.topia.persistence.TopiaEntityEnum; /** * Classe regroupant divers méthodes utiles pour la génération des entités @@ -243,7 +244,16 @@ * Tag pour specfier si on doit générer la methode getOperator dans les daohelpers ) */ public static final String TAG_GENERATE_OPERATOR_FOR_DAO_HELPER = "generateOperatorForDAOHelper"; + /** + * Tag pour spécifier si on doit générer le {@link TopiaEntityEnum} en tant qu'inner classe + * du dao helper ou pas. + * + * <b>Note:</b> Par défaut, on génère en tant qu'inner classe. + * @since 2.4.1 + */ + public static final String TAG_GENERATE_STANDALONE_ENUM_FOR_DAO_HELPER = "generateStandaloneEnumForDAOHelper"; + /** * Tag pour spécifier le type d'une propriété dans le mapping hibernate */ public static final String TAG_TYPE= "type"; @@ -387,12 +397,13 @@ } /** - * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur - * le model. + * Cherche si le tagvalue {@link #TAG_GENERATE_OPERATOR_FOR_DAO_HELPER} a été + * activé dans le model. * * @param element l'élément à tester * @param model le modele utilisé - * @return le prefix i18n ou <code>null</code> si non spécifié + * @return {@code true} si le tag value trouvé dans le modèle, {@code false} + * sinon. */ public static boolean shouldgenerateOperatorForDAOHelper( ObjectModelElement element, @@ -405,6 +416,26 @@ } /** + * Cherche si le tagvalue {@link #TAG_GENERATE_OPERATOR_FOR_DAO_HELPER} a été + * activé dans le model. + * + * @param element l'élément à tester + * @param model le modele utilisé + * @return {@code true} si le tag value trouvé dans le modèle, {@code false} + * sinon. + * @since 2.4.1 + */ + public static boolean shouldGnerateStandaloneEnumForDAOHelper( + ObjectModelElement element, + ObjectModel model) { + String tagValue = GeneratorUtil.findTagValue( + TAG_GENERATE_STANDALONE_ENUM_FOR_DAO_HELPER, element, model); + boolean generate = GeneratorUtil.notEmpty(tagValue) && + Boolean.valueOf(tagValue); + return generate; + } + + /** * Cherche et renvoie la liste des attributs constituant la clef metier * d'une classe. *
participants (1)
-
tchemit@users.nuiton.org