This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git commit d77fc23050e16d0885c53493a222838ec3719e71 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 26 12:59:34 2016 +0200 Use EUGene new stereotypes and tag values API (see #4043) --- pom.xml | 2 +- .../templates/ApplicationContextTransformer.java | 10 +- .../topia/templates/EntityDaoTransformer.java | 19 +- .../topia/templates/EntityEnumTransformer.java | 14 +- .../templates/EntityHibernateMappingGenerator.java | 80 +-- .../nuiton/topia/templates/EntityTransformer.java | 41 +- .../templates/PersistenceContextTransformer.java | 8 +- .../topia/templates/TopiaCoreStereoTypes.java | 130 ++++ .../nuiton/topia/templates/TopiaCoreTagValues.java | 349 ++++++++++ .../nuiton/topia/templates/TopiaGeneratorUtil.java | 73 +- .../topia/templates/TopiaHibernateTagValues.java | 737 +++++++++++++++++++++ .../nuiton/topia/templates/TopiaStereoTypes.java | 15 +- .../org/nuiton/topia/templates/TopiaTagValues.java | 1 + .../topia/templates/TopiaTemplateHelper.java | 111 ++-- ...stereotype.provider.StereotypeMetadatasProvider | 1 + ...ion.tagvalue.provider.TagValueMetadatasProvider | 2 + ...ypesTest.java => TopiaCoreStereoTypesTest.java} | 25 +- ...ValuesTest.java => TopiaCoreTagValuesTest.java} | 13 +- ...sTest.java => TopiaHibernateTagValuesTest.java} | 12 +- .../topia/templates/TopiaStereoTypesTest.java | 1 + .../nuiton/topia/templates/TopiaTagValuesTest.java | 1 + 21 files changed, 1443 insertions(+), 202 deletions(-) diff --git a/pom.xml b/pom.xml index 55cdd21..3db3e92 100644 --- a/pom.xml +++ b/pom.xml @@ -218,7 +218,7 @@ <!-- libs version --> <commonsLoggingVersion>1.2</commonsLoggingVersion> - <eugeneVersion>3.0-alpha-5</eugeneVersion> + <eugeneVersion>3.0-SNAPSHOT</eugeneVersion> <flywayVersion>3.1</flywayVersion> <guavaVersion>19.0</guavaVersion> diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java index 6524966..b3f684b 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/ApplicationContextTransformer.java @@ -54,7 +54,7 @@ public class ApplicationContextTransformer extends ObjectModelTransformerToJava protected TopiaTemplateHelper templateHelper; - protected TopiaTagValues topiaTagValues; + protected TopiaCoreTagValues topiaCoreTagValues; @Override public void transformFromModel(ObjectModel input) { @@ -62,8 +62,8 @@ public class ApplicationContextTransformer extends ObjectModelTransformerToJava if (templateHelper == null) { templateHelper = new TopiaTemplateHelper(model); } - if (topiaTagValues == null) { - topiaTagValues = templateHelper.getTopiaTagValues(); + if (topiaCoreTagValues == null) { + topiaCoreTagValues = templateHelper.getTopiaCoreTagValues(); } String packageName = templateHelper.getApplicationContextPackage(this, model); @@ -95,7 +95,7 @@ public class ApplicationContextTransformer extends ObjectModelTransformerToJava String className) { // try to find a super class by tag-value - String superClass = topiaTagValues.getApplicationContextSuperClassTagValue(model); + String superClass = topiaCoreTagValues.getApplicationContextSuperClassTagValue(model); if (superClass == null) { @@ -130,7 +130,7 @@ public class ApplicationContextTransformer extends ObjectModelTransformerToJava addInterface(output, TopiaEntityEnumProvider.class.getName() + "<" + entityEnumName + ">"); boolean generateOperator = - topiaTagValues.getGenerateOperatorForDAOHelperTagValue(model); + topiaCoreTagValues.getGenerateOperatorForDAOHelperTagValue(model); addImport(output, TopiaEntity.class); diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java index 3c0d3f9..19dbf8d 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java @@ -95,7 +95,8 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { protected TopiaTemplateHelper templateHelper; - protected TopiaTagValues topiaTagValues; + protected TopiaCoreTagValues topiaCoreTagValues; + protected TopiaHibernateTagValues topiaHibernateTagValues; @Override public void transformFromModel(ObjectModel model) { @@ -103,10 +104,12 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { if (templateHelper == null) { templateHelper = new TopiaTemplateHelper(model); } - if (topiaTagValues == null) { - topiaTagValues = templateHelper.getTopiaTagValues(); + if (topiaCoreTagValues == null) { + topiaCoreTagValues = templateHelper.getTopiaCoreTagValues(); + } + if (topiaHibernateTagValues == null) { + topiaHibernateTagValues = templateHelper.getTopiaHibernateTagValues(); } - String modelName = model.getName(); entityEnumName = modelName + "EntityEnum"; @@ -122,7 +125,7 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { // keep all classifiers on the model which are entities List<ObjectModelClass> allEntities = templateHelper.getEntityClasses(model, true); - allEntitiesFqn = new HashSet<String>(allEntities.size()); + allEntitiesFqn = new HashSet<>(allEntities.size()); for (ObjectModelClass entity : allEntities) { String fqn = entity.getQualifiedName(); allEntitiesFqn.add(fqn); @@ -295,7 +298,7 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { } } if (superClassName == null) { - superClassName = topiaTagValues.getDaoSuperClassTagValue(clazz, getPackage(clazz), model); + superClassName = topiaCoreTagValues.getDaoSuperClassTagValue(clazz, getPackage(clazz), model); if (superClassName == null) { superClassName = templateHelper.getParentDaoFqn(this, model); addImport(daoAbstractClass, superClassName); @@ -435,7 +438,7 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { // On doit absolument supprimer pour les relations many-to-many // le this de la collection de l'autre cote - String dbSchema = topiaTagValues.getDbSchemaNameTagValue(clazz, aPackage, model); + String dbSchema = topiaHibernateTagValues.getDbSchemaNameTagValue(clazz, aPackage, model); String attrDBName = templateHelper.getDbName(attr); String attrClassifierDBName = templateHelper.getDbName(attr.getClassifier()); if (dbSchema != null) { @@ -615,7 +618,7 @@ public class EntityDaoTransformer extends ObjectModelTransformerToJava { Map<String, ObjectModelClass> allEntitiesByFQN; allEntities = templateHelper.getEntityClasses(model, true); - allEntitiesByFQN = new TreeMap<String, ObjectModelClass>(); + allEntitiesByFQN = new TreeMap<>(); // prepare usages map and fill allEntitiesByFQN map for (ObjectModelClass klass : allEntities) { diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityEnumTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityEnumTransformer.java index c2fbdb8..b3568e2 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityEnumTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityEnumTransformer.java @@ -71,7 +71,8 @@ public class EntityEnumTransformer extends ObjectModelTransformerToJava { protected TopiaTemplateHelper templateHelper; - protected TopiaTagValues topiaTagValues; + protected TopiaCoreTagValues topiaCoreTagValues; + protected TopiaHibernateTagValues topiaHibernateTagValues; @Override public void transformFromModel(ObjectModel input) { @@ -80,15 +81,18 @@ public class EntityEnumTransformer extends ObjectModelTransformerToJava { templateHelper = new TopiaTemplateHelper(model); } - if (topiaTagValues == null) { - topiaTagValues = templateHelper.getTopiaTagValues(); + if (topiaCoreTagValues == null) { + topiaCoreTagValues = templateHelper.getTopiaCoreTagValues(); + } + if (topiaHibernateTagValues == null) { + topiaHibernateTagValues = templateHelper.getTopiaHibernateTagValues(); } String packageName = templateHelper.getApplicationContextPackage(this, model); String entityEnumName = templateHelper.getEntityEnumName(model); boolean generateOperator = - topiaTagValues.getGenerateOperatorForDAOHelperTagValue(model); + topiaCoreTagValues.getGenerateOperatorForDAOHelperTagValue(model); generateEntityEnum(packageName, entityEnumName, generateOperator); @@ -163,7 +167,7 @@ public class EntityEnumTransformer extends ObjectModelTransformerToJava { StringBuilder params = new StringBuilder(clazzName + ".class"); ObjectModelPackage aPackage = model.getPackage(clazz); - String dbSchema = topiaTagValues.getDbSchemaNameTagValue(clazz, aPackage, model); + String dbSchema = topiaHibernateTagValues.getDbSchemaNameTagValue(clazz, aPackage, model); if (dbSchema == null) { params.append(", null"); } else { diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java index a644b87..7d1dd3d 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java @@ -28,7 +28,7 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.EugeneStereoTypes; +import org.nuiton.eugene.EugeneCoreStereotypes; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.models.object.ObjectModel; @@ -71,7 +71,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { private static final String HIBERNATE_ATTRIBUTE_NAME = "name"; - private Map<String, String[]> columnNamesMap = new HashMap<String, String[]>(); + private Map<String, String[]> columnNamesMap = new HashMap<>(); public static final String HIBERNATE_ATTRIBUTE_LAZY = "lazy"; @@ -103,7 +103,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { protected TopiaTemplateHelper templateHelper; - protected TopiaTagValues topiaTagValues; + protected TopiaHibernateTagValues topiaHibernateTagValues; class ClassContext { @@ -123,9 +123,9 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { this.model = model; this.input = input; this.aPackage=aPackage; - this.generateForeignKeyNames = topiaTagValues.isGenerateForeignKeyNames(input, model); + this.generateForeignKeyNames = topiaHibernateTagValues.isGenerateForeignKeyNames(input, model); this.tableName = templateHelper.getDbName(input); - this.schema = topiaTagValues.getDbSchemaNameTagValue(input, aPackage, model); + this.schema = topiaHibernateTagValues.getDbSchemaNameTagValue(input, aPackage, model); } public boolean isGenerateForeignKeyNames() { @@ -177,8 +177,8 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { if (templateHelper == null) { templateHelper = new TopiaTemplateHelper(model); } - if (topiaTagValues == null) { - topiaTagValues = templateHelper.getTopiaTagValues(); + if (topiaHibernateTagValues == null) { + topiaHibernateTagValues = templateHelper.getTopiaHibernateTagValues(); } String persistenceType = templateHelper.getPersistenceType(input); @@ -202,16 +202,16 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { }*/ boolean haveSuper = input.getSuperclasses().size() > 0; // la liste des attributs faisant parti de la clef metier - List<ObjectModelAttribute> naturalAttributes = new ArrayList<ObjectModelAttribute>(); + List<ObjectModelAttribute> naturalAttributes = new ArrayList<>(); // la liste des autres attributs - List<ObjectModelAttribute> noneNaturalAttributes = new ArrayList<ObjectModelAttribute>(); + List<ObjectModelAttribute> noneNaturalAttributes = new ArrayList<>(); String clazzDOType = templateHelper.getDOType(input, model); String tableName = classContext.getTableName(); String isAbstract = BooleanUtils.toStringTrueFalse(input.isAbstract()); String clazzFQN = input.getQualifiedName(); - Map<String,String> optionalAttributesMap = new HashMap<String, String>(); + Map<String,String> optionalAttributesMap = new HashMap<>(); if (classContext.isUseSchema()) { generateFromTagValue(optionalAttributesMap,HIBERNATE_ATTRIBUTE_SCHEMA, classContext.getSchema()); @@ -219,7 +219,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { //On précise au proxy de quelle interface hérite l'objet - String proxyTagValue = topiaTagValues.getProxyInterfaceTagValue(input, aPackage, model); + String proxyTagValue = topiaHibernateTagValues.getProxyInterfaceTagValue(input, aPackage, model); if (StringUtils.isEmpty(proxyTagValue) || !proxyTagValue.equals("none")) { generateFromTagValue(optionalAttributesMap,HIBERNATE_ATTRIBUTE_PROXY, clazzFQN); } @@ -263,7 +263,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { // on detecte les attributs des clef metiers for (ObjectModelAttribute attr : input.getAttributes()) { - if (topiaTagValues.getNaturalIdTagValue(attr)) { + if (topiaHibernateTagValues.getNaturalIdTagValue(attr)) { // attribut metier naturalAttributes.add(attr); } else { @@ -273,7 +273,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { } if (!naturalAttributes.isEmpty()) { // generation de la clef metier - boolean mutable = topiaTagValues.getNaturalIdMutableTagValue(input); + boolean mutable = topiaHibernateTagValues.getNaturalIdMutableTagValue(input); String mutableStr = mutable ? " mutable=\"true\"" : ""; if (log.isDebugEnabled()) { log.debug("natural-id detected for class " + input.getName() + " (" + mutableStr + ") attributes : " + naturalAttributes); @@ -327,7 +327,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { ObjectModelPackage aPackage = classContext.getPackage(); boolean indexForeignKeys = - topiaTagValues.getIndexForeignKeysTagValue(attribute, aPackage, model); + topiaHibernateTagValues.getIndexForeignKeysTagValue(attribute, aPackage, model); if (!indexForeignKeys) { @@ -428,7 +428,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { String notNull = " " + generateFromTagValue(HIBERNATE_ATTRIBUTE_NOT_NULL, "true"); // AThimel 14/03/2014 I think both assoc class participants must always be not-null String attrName = getName(attr, true); String attrType = getType(aPackage, clazz, attr, true); - String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaTagValues.getLazyTagValue(attr)); + String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaHibernateTagValues.getLazyTagValue(attr)); String attrColumn = templateHelper.getDbName(attr); String foreignKeyName = ""; if (classContext.isGenerateForeignKeyNames()) { @@ -482,25 +482,25 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { } String type = attr.getType(); - String attrType = topiaTagValues.getHibernateAttributeType(attr, clazz, aPackage, model); + String attrType = topiaHibernateTagValues.getHibernateAttributeType(attr, clazz, aPackage, model); if (StringUtils.isNotEmpty(attrType)) { // tag value detected of the attribute type = attrType; } else { - attrType = topiaTagValues.getAttributeType(attr, clazz, aPackage, model); + attrType = topiaHibernateTagValues.getAttributeType(attr, clazz, aPackage, model); if (StringUtils.isNotEmpty(attrType)) { // tag value detected of the attribute type = attrType; } else{ // old code - attrType = topiaTagValues.getTypeTagValue(attr); + attrType = topiaHibernateTagValues.getTypeTagValue(attr); if (StringUtils.isNotEmpty(attrType)) { // tag value detected of the attribute if (log.isWarnEnabled()) { - String message = topiaTagValues.getDeprecatedAttributeTagValueMessage(clazz, attr, TopiaTagValues.TAG_TYPE, TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE , attrType); + String message = topiaHibernateTagValues.getDeprecatedAttributeTagValueMessage(clazz, attr, TopiaHibernateTagValues.Store.type.getName(), TopiaHibernateTagValues.Store.hibernateAttributeType.getName(), attrType); log.warn(message); } type = attrType; @@ -510,7 +510,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { if (StringUtils.isNotEmpty(modelType)) { // tag value detected of the model - String message = topiaTagValues.getDeprecatedModelTagValueMessage(model, type, TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE + "." + type , modelType); + String message = topiaHibernateTagValues.getDeprecatedModelTagValueMessage(model, type, TopiaHibernateTagValues.Store.attributeType.getName() + "." + type , modelType); log.warn(message); //TODO tchemit 20100507 Explain What todes it do ? Dont understand the story of columnNamesMap int bracketIndex = modelType.indexOf('('); @@ -545,7 +545,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { String attrType = getType(classContext, attr); String accessField = "field"; - String tagValue = topiaTagValues.getAccessTagValue(attr); + String tagValue = topiaHibernateTagValues.getAccessTagValue(attr); if (StringUtils.isNotEmpty(tagValue)) { accessField = tagValue; } @@ -559,7 +559,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { if (attrType.trim().endsWith("[]")) { attrType = attrType.trim().substring(0, attrType.trim().length()-2); - Map<String,String> optionalAttributesMap = new HashMap<String, String>(); + Map<String,String> optionalAttributesMap = new HashMap<>(); if (classContext.isUseSchema()) { generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_SCHEMA, classContext.getSchema()); @@ -578,17 +578,17 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { }*/ } else { - Map<String,String> optionalAttributesMap = new HashMap<String, String>(); + Map<String,String> optionalAttributesMap = new HashMap<>(); if (JavaGeneratorUtil.isOrdered(attr)) { String indexName = tableName + "_idx"; generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_INDEX, indexName); } - if (EugeneStereoTypes.hasUniqueStereotype(attr)) { + if (EugeneCoreStereotypes.hasUniqueStereotype(attr)) { generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_UNIQUE, "true"); } - generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_NOT_NULL, topiaTagValues.getNotNullTagValue(attr)); + generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_NOT_NULL, topiaHibernateTagValues.getNotNullTagValue(attr)); /*{<%=prefix%> <property name="<%=attrName%>" access="<%=accessField%>"}*/ if ( ! attrIsEnumeration) { /*{ type="<%=attrType%>"}*/ @@ -597,14 +597,14 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { String[] columnNames = columnNamesMap.get(attrType); // contains all required attributes for a column node - Map<String,String> columnAttributes = new TreeMap<String, String>(); + Map<String,String> columnAttributes = new TreeMap<>(); if (StringUtils.isNotEmpty(attr.getDefaultValue())) { //TC-20100129 with a default value we must use the column child tag String defaultValue = attr.getDefaultValue().trim(); columnAttributes.put(HIBERNATE_ATTRIBUTE_DEFAULT, defaultValue); } - String sqlType = topiaTagValues.getSqlTypeTagValue(attr); + String sqlType = topiaHibernateTagValues.getSqlTypeTagValue(attr); if (!StringUtils.isEmpty(sqlType)) { // an specific sql type was specified for the attribute, use it @@ -612,7 +612,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { } // add length attribute if required - String lengthTagValue = topiaTagValues.getLengthTagValue(attr); + String lengthTagValue = topiaHibernateTagValues.getLengthTagValue(attr); if (!StringUtils.isEmpty(lengthTagValue)) { generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_LENGTH, lengthTagValue); @@ -639,7 +639,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { // if the user tuned the model to use name instead of // ordinal to store the values, we must add a clause - boolean useEnumerationName = topiaTagValues.hasUseEnumerationNameTagValue(attr, classContext.getInput(), classContext.getPackage(), model); + boolean useEnumerationName = topiaHibernateTagValues.hasUseEnumerationNameTagValue(attr, classContext.getInput(), classContext.getPackage(), model); if (useEnumerationName) { String enumSQLType = String.valueOf(Types.VARCHAR); /*{ @@ -717,16 +717,16 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { String attrName = getName(attr); // ??? String attrType = getType(classContext, attr); String reverseAttrDBName = templateHelper.getReverseDbName(attr); - String orderBy = generateFromTagValue(HIBERNATE_ATTRIBUTE_ORDER_BY, topiaTagValues.getOrderByTagValue(attr)); + String orderBy = generateFromTagValue(HIBERNATE_ATTRIBUTE_ORDER_BY, topiaHibernateTagValues.getOrderByTagValue(attr)); String cascade = ""; if (attr.isComposite() || attr.hasAssociationClass()) { cascade += HIBERNATE_ATTRIBUTE_CASCADE+"=\"all,delete-orphan\" "; } - String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaTagValues.getLazyTagValue(attr), "true"); + String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaHibernateTagValues.getLazyTagValue(attr), "true"); - String fetch = generateFromTagValue(HIBERNATE_ATTRIBUTE_FETCH, topiaTagValues.getFetchTagValue(attr)); + String fetch = generateFromTagValue(HIBERNATE_ATTRIBUTE_FETCH, topiaHibernateTagValues.getFetchTagValue(attr)); String collType = templateHelper.getNMultiplicityHibernateType(attr); String inverse = ""; @@ -812,7 +812,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { String attrName = getName(attr); String attrType = getType(classContext, attr); String collType = templateHelper.getNMultiplicityHibernateType(attr); - String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaTagValues.getLazyTagValue(attr)); + String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaHibernateTagValues.getLazyTagValue(attr)); String attrColumn = templateHelper.getDbName(attr); String foreignKeyAttribute = ""; if (classContext.isGenerateForeignKeyNames()) { @@ -830,7 +830,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { } if (attrIsEnumeration) { - boolean useEnumerationName = topiaTagValues.hasUseEnumerationNameTagValue(attr, classContext.getInput(), classContext.getPackage(), model); + boolean useEnumerationName = topiaHibernateTagValues.hasUseEnumerationNameTagValue(attr, classContext.getInput(), classContext.getPackage(), model); /*{<%=prefix%> <element column="<%=attrColumn%>" node="id"> <%=prefix%> <type name="org.hibernate.type.EnumType"> <%=prefix%> <param name="<%=org.hibernate.type.EnumType.ENUM%>"><%=attrType%></param> @@ -884,9 +884,9 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { /*{access="field" }*/ } // vérifier si le tag lazy est defini par defaut dans le fichier de proprietes - String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaTagValues.getLazyTagValue(attr)); + String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaHibernateTagValues.getLazyTagValue(attr)); /*{<%=lazy%>}*/ - String notNull = generateFromTagValue(HIBERNATE_ATTRIBUTE_NOT_NULL, topiaTagValues.getNotNullTagValue(attr)); + String notNull = generateFromTagValue(HIBERNATE_ATTRIBUTE_NOT_NULL, topiaHibernateTagValues.getNotNullTagValue(attr)); /*{<%=notNull%>}*/ if (isUnique) { /*{unique="true" }*/ @@ -912,7 +912,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { // Le tagvalue "inverse" permet de spécifier qui possède le // inverse="true". Il est impératif de l'utiliser sur les deux // extrémités pour ne pas avoir de surprise. - String inverseValue = topiaTagValues.getInverseTagValue(attr); + String inverseValue = topiaHibernateTagValues.getInverseTagValue(attr); if (StringUtils.isNotEmpty(inverseValue)) { isInverse &= Boolean.parseBoolean(inverseValue); // Si aucun tagvalue n'est défini, le choix est arbitraire : le @@ -931,8 +931,8 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { String attrType = getType(classContext, attr); String attrName = getName(attr); String attrColumn = templateHelper.getDbName(attr); - String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaTagValues.getLazyTagValue(attr), "true"); - String orderBy = generateFromTagValue(HIBERNATE_ATTRIBUTE_ORDER_BY, topiaTagValues.getOrderByTagValue(attr)); + String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, topiaHibernateTagValues.getLazyTagValue(attr), "true"); + String orderBy = generateFromTagValue(HIBERNATE_ATTRIBUTE_ORDER_BY, topiaHibernateTagValues.getOrderByTagValue(attr)); String collType = templateHelper.getNMultiplicityHibernateType(attr); String tableName = templateHelper.getManyToManyTableName(attr); String inverse = ""; @@ -940,7 +940,7 @@ public class EntityHibernateMappingGenerator extends ObjectModelGenerator { inverse = HIBERNATE_ATTRIBUTE_INVERSE+"=\"true\" "; } String reverseAttrDBName = templateHelper.getReverseDbName(attr); - Map<String, String> optionalAttributesMap = new HashMap<String, String>(); + Map<String, String> optionalAttributesMap = new HashMap<>(); if (classContext.isUseSchema()) { generateFromTagValue(optionalAttributesMap, HIBERNATE_ATTRIBUTE_SCHEMA, classContext.getSchema()); } diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java index 836ec3d..765e43d 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java @@ -28,8 +28,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.EugeneStereoTypes; -import org.nuiton.eugene.EugeneTagValues; +import org.nuiton.eugene.EugeneCoreStereotypes; +import org.nuiton.eugene.EugeneCoreTagValues; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; @@ -109,7 +109,8 @@ public class EntityTransformer extends ObjectModelTransformerToJava { protected TopiaTemplateHelper templateHelper; - protected TopiaTagValues topiaTagValues; + protected TopiaCoreTagValues topiaCoreTagValues; + protected TopiaHibernateTagValues topiaHibernateTagValues; protected void clean() { outputInterface = null; @@ -144,9 +145,9 @@ public class EntityTransformer extends ObjectModelTransformerToJava { // no specific prefix, so no prefix if (log.isWarnEnabled()) { log.warn("[" + input.getName() + "] Will generate constants with NO prefix, not a good idea... \n" + - "Use '" + EugeneTagValues.TAG_CONSTANT_PREFIX + + "Use '" + EugeneCoreTagValues.Store.constantPrefix+ "' tagvalue in your xmi properties. For example " + - "for all the model : model.tagvalue." + EugeneTagValues.TAG_CONSTANT_PREFIX + "=PROPERTY_"); + "for all the model : model.tagvalue." + EugeneCoreTagValues.Store.constantPrefix + "=PROPERTY_"); } } setConstantPrefix(prefix); @@ -155,12 +156,15 @@ public class EntityTransformer extends ObjectModelTransformerToJava { generateAbstract = isGenerateAbstract(input); generateImpl = isGenerateImpl(input); - if (topiaTagValues == null) { - topiaTagValues = templateHelper.getTopiaTagValues(); + if (topiaCoreTagValues == null) { + topiaCoreTagValues = templateHelper.getTopiaCoreTagValues(); + } + if (topiaHibernateTagValues==null) { + topiaHibernateTagValues = templateHelper.getTopiaHibernateTagValues(); } generateBooleanGetMethods = getEugeneTagValues().isGenerateBooleanGetMethods(input, aPackage, model); - generatePropertyChangeSupport = topiaTagValues.isGeneratePropertyChangeSupport(input, model); + generatePropertyChangeSupport = topiaCoreTagValues.isGeneratePropertyChangeSupport(input, model); if (generateInterface) { @@ -211,7 +215,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { generateExtraOperations(input); // Implement toString operation - if (!topiaTagValues.getNotGenerateToStringTagValue(input, aPackage, model)) { + if (!topiaCoreTagValues.getNotGenerateToStringTagValue(input, aPackage, model)) { generateToStringOperation(input); } @@ -232,6 +236,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { ObjectModelClass ouput) { // serialVersionUID + //FIXME deprecated api String svUID = TagValues.findTagValue(GeneratorUtil.SERIAL_VERSION_UID, input, model); if (svUID == null) { @@ -258,7 +263,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { outputInterface.getQualifiedName()); } - List<String> interfaceAlreadyDone = new LinkedList<String> (); + List<String> interfaceAlreadyDone = new LinkedList<>(); // Extends for (ObjectModelClassifier parent : input.getInterfaces()) { addInterface(interfaceAlreadyDone, outputInterface, parent); @@ -278,7 +283,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { Class<?> interfaze = TopiaEntity.class; - if (topiaTagValues.getContextableTagValue(input, aPackage, model)) { + if (topiaCoreTagValues.getContextableTagValue(input, aPackage, model)) { interfaze = TopiaEntityContextable.class; } @@ -286,7 +291,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { outputInterface, interfaze); - } else if (topiaTagValues.getContextableTagValue(input, aPackage, model)) { + } else if (topiaCoreTagValues.getContextableTagValue(input, aPackage, model)) { // Even if there is no need to implement TopiaEntity, it might be // necessary to implement TopiaEntityContextable addInterface(interfaceAlreadyDone, @@ -346,21 +351,21 @@ public class EntityTransformer extends ObjectModelTransformerToJava { // Extends AbstractTopiaEntity (only if hasn't parent entity) if (outputAbstract.getSuperclasses().isEmpty()) { - String superClassName = topiaTagValues.getEntitySuperClassTagValue(input, aPackage, model); + String superClassName = topiaCoreTagValues.getEntitySuperClassTagValue(input, aPackage, model); if (superClassName == null) { superClassName = AbstractTopiaEntity.class.getName(); } setSuperClass(outputAbstract, superClassName); } - if (topiaTagValues.getContextableTagValue(input, aPackage, model)) { + if (topiaCoreTagValues.getContextableTagValue(input, aPackage, model)) { addContextableMethods(input, outputAbstract); } } /** * Ajout les methodes necessaire à l'interface {@link TopiaEntityContextable} - * si le tagValue {@link TopiaTagValues#TAG_CONTEXTABLE} est renseigné. + * si le tagValue {@link TopiaCoreTagValues.Store#contextable} est renseigné. * @param input FIXME * @param outputAbstract FIXME */ @@ -677,7 +682,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { setDocumentation(property, buffer.toString()); // Annotation - String annotation = getTagValueDefinitionProvider(TopiaTagValues.class).getAnnotationTagValue(attribute); + String annotation = getTagValueMetadatasProvider(TopiaCoreTagValues.class).getAnnotationTagValue(attribute); if (!StringUtils.isEmpty(annotation)) { //FIXME Make annotation works... //TODO tchemit 20100513 Test it still works @@ -755,7 +760,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { GeneratorUtil.getSimpleName(collectionImpl); boolean ordered = JavaGeneratorUtil.isOrdered(attribute); - boolean unique = EugeneStereoTypes.hasUniqueStereotype(attribute); + boolean unique = EugeneCoreStereotypes.hasUniqueStereotype(attribute); boolean entity = templateHelper.isEntity(attribute, model); // addXXX @@ -1853,7 +1858,7 @@ public class EntityTransformer extends ObjectModelTransformerToJava { } protected String getPropertyType(ObjectModelAttribute attribute, ObjectModelClassifier aClass, ObjectModelPackage aPackage) { - String propertyType = topiaTagValues.getAttributeType(attribute, aClass, aPackage ,model); + String propertyType = topiaHibernateTagValues.getAttributeType(attribute, aClass, aPackage , model); if (propertyType == null) { propertyType = attribute.getType(); } diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java b/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java index 69979e5..3654ff7 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/PersistenceContextTransformer.java @@ -50,7 +50,7 @@ public class PersistenceContextTransformer extends ObjectModelTransformerToJava protected TopiaTemplateHelper templateHelper; - protected TopiaTagValues topiaTagValues; + protected TopiaCoreTagValues topiaCoreTagValues; @Override public void transformFromModel(ObjectModel input) { @@ -59,8 +59,8 @@ public class PersistenceContextTransformer extends ObjectModelTransformerToJava templateHelper = new TopiaTemplateHelper(model); } - if (topiaTagValues == null) { - topiaTagValues = templateHelper.getTopiaTagValues(); + if (topiaCoreTagValues == null) { + topiaCoreTagValues = templateHelper.getTopiaCoreTagValues(); } String packageName = templateHelper.getPersistenceContextPackage(this, model); @@ -142,7 +142,7 @@ public class PersistenceContextTransformer extends ObjectModelTransformerToJava ObjectModelClass output = createAbstractClass(className, packageName); // try to find a super class by tag-value - String superClass = topiaTagValues.getPersistenceContextSuperClassTagValue(model); + String superClass = topiaCoreTagValues.getPersistenceContextSuperClassTagValue(model); if (superClass == null) { diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaCoreStereoTypes.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaCoreStereoTypes.java new file mode 100644 index 0000000..d7ee040 --- /dev/null +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaCoreStereoTypes.java @@ -0,0 +1,130 @@ +package org.nuiton.topia.templates; + +/* + * #%L + * ToPIA :: Templates + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2004 - 2014 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; +import org.nuiton.eugene.models.extension.stereotype.StereotypeUtil; +import org.nuiton.eugene.models.extension.stereotype.provider.DefaultStereotypeMetadatasProvider; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelPackage; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.n; + +/** + * All extra stereotypes usable in topia generators. + * + * @author Tony Chemit - chemit@codelutin.com + * @plexus.component role="org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider" role-hint="topia-core" + * @since 2.5 + */ +public class TopiaCoreStereoTypes extends DefaultStereotypeMetadatasProvider { + + public enum Store implements StereotypeMetadata { + + /** + * Stéréotype pour les objets devant être générées sous forme d'entités + * + * @see TopiaTemplateHelper#isEntity(ObjectModelClassifier) + * @see #hasEntityStereotype(ObjectModelClassifier , ObjectModelPackage) + */ + entity(n("topia.stereotypes.entity"), ObjectModelPackage.class, ObjectModelClassifier.class), + /** + * Stéréotype pour les attributs étant des clés primaires. + * + * @see #hasPrimaryKeyStereotype(ObjectModelAttribute) + * @deprecated since 3.0, use nowhere in ToPIA + */ + primaryKey(n("topia.stereotypes.primaryKey"), ObjectModelAttribute.class); + + private final Set<Class<?>> targets; + private final String i18nDocumentationKey; + + Store(String i18nDocumentationKey, Class<?>... targets) { + this.targets = ImmutableSet.copyOf(targets); + this.i18nDocumentationKey = i18nDocumentationKey; + } + + @Override + public String getName() { + return name(); + } + + @Override + public Set<Class<?>> getTargets() { + return targets; + } + + @Override + public String getI18nDocumentationKey() { + return i18nDocumentationKey; + } + + @Override + public boolean isDeprecated() { + return false; + } + + } + + public TopiaCoreStereoTypes() { + super((StereotypeMetadata[]) Store.values()); + } + + /** + * Check if the given classifier has the {@link Store#entity} stereotype. + * + * @param aPackage FIXME + * @param classifier classifier to test + * @return {@code true} if stereotype was found, {@code false otherwise} + * @see Store#entity + * + * @since 2.5 + */ + public static boolean hasEntityStereotype(ObjectModelClassifier classifier, ObjectModelPackage aPackage) { + boolean hasStereotype = StereotypeUtil.findDirectStereotype(Store.entity, classifier); + if (!hasStereotype && aPackage!=null) { + hasStereotype = StereotypeUtil.findDirectStereotype(Store.entity, aPackage); + } + return hasStereotype; + } + + /** + * Check if the given attribute has the {@link Store#primaryKey} stereotype. + * + * @param attribute attribute to test + * @return {@code true} if stereotype was found, {@code false otherwise} + * @see Store#primaryKey + * @since 2.5 + * @deprecated since 3.0, not used in ToPIA + */ + @Deprecated + public static boolean hasPrimaryKeyStereotype(ObjectModelAttribute attribute) { + return StereotypeUtil.findDirectStereotype(Store.primaryKey, attribute); + } +} diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaCoreTagValues.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaCoreTagValues.java new file mode 100644 index 0000000..fbb705f --- /dev/null +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaCoreTagValues.java @@ -0,0 +1,349 @@ +package org.nuiton.topia.templates; + +/* + * #%L + * ToPIA :: Templates + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2004 - 2014 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; +import org.nuiton.eugene.models.extension.tagvalue.TagValueUtil; +import org.nuiton.eugene.models.extension.tagvalue.matcher.EqualsTagValueNameMatcher; +import org.nuiton.eugene.models.extension.tagvalue.provider.DefaultTagValueMetadatasProvider; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelPackage; +import org.nuiton.topia.persistence.TopiaDaoSupplier; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaEntityContextable; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.n; + +/** + * All extra tag values usable in topia generators. + * + * @author Tony Chemit - chemit@codelutin.com + * @plexus.component role="org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider" role-hint="topia-core" + * @since 2.5 + */ +public class TopiaCoreTagValues extends DefaultTagValueMetadatasProvider { + + /** + * Static singleton instance used to read defaultValue + */ + protected static final TopiaCoreTagValues INSTANCE = new TopiaCoreTagValues(); + + public enum Store implements TagValueMetadata { + + /** + * Tag pour que les entités etendent {@link TopiaEntityContextable} et + * se fasse injecter le {@link TopiaDaoSupplier} par rapport aux autres + * entités qui ne l'ont pas. + * + * @since 2.5.3 + */ + contextable(n("topia.core.tagValue.contextable"), boolean.class, "false", ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag pour ajouter une annotation à un champ. + * + * @see #getAnnotationTagValue(ObjectModelAttribute) + * @since 2.5 + */ + annotation(n("topia.core.tagValue.annotation"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag to skip toString() methods generation on entities. + * + * @see #getNotGenerateToStringTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.5 + */ + notGenerateToString(n("topia.core.tagValue.notGenerateToString"), boolean.class, "true", ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag pour specfier si on doit générer la methode getOperator dans les daohelpers. + * + * @see #getGenerateOperatorForDAOHelperTagValue(ObjectModel) + * @since 2.5 + */ + generateOperatorForDAOHelper(n("topia.core.tagValue.generateOperatorForDAOHelper"), boolean.class, "false", ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * To specify the abstract dao to use. + * + * If none given, will use the {@code org.nuiton.topia.persistence.TopiaDAOImpl}. + * + * Other value possible is {@code org.nuiton.topia.persistence.TopiaDAOLegacy} + * + * @see #getDaoImplementationTagValue(ObjectModel) + * @since 2.5 + */ + daoImplementation(n("topia.core.tagValue.daoImplementation"), String.class, null, ObjectModel.class), + + /** + * Tag to specify a super class to use instead of + * {@link org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContext}. + * + * <strong>Note:</strong> the class must implements + * {@link org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContext}. + * + * @see org.nuiton.topia.persistence.internal.AbstractTopiaPersistenceContext + * @see #getPersistenceContextSuperClassTagValue(ObjectModel) + * @since 3.0 + */ + persistenceContextSuperClass(n("topia.core.tagValue.persistenceContextSuperClass"), String.class, null, ObjectModel.class), + + /** + * Tag to specify a super class to use instead of + * {@link org.nuiton.topia.persistence.internal.AbstractTopiaApplicationContext}. + * + * <strong>Note:</strong> the class must implement + * {@link org.nuiton.topia.persistence.internal.AbstractTopiaApplicationContext}. + * + * @see org.nuiton.topia.persistence.internal.AbstractTopiaApplicationContext + * @see #getApplicationContextSuperClassTagValue(ObjectModel) + * @since 3.0 + */ + applicationContextSuperClass(n("topia.core.tagValue.applicationContextSuperClass"), String.class, null, ObjectModel.class), + + /** + * Tag to specify a super class to use instead of {@link org.nuiton.topia.persistence.internal.AbstractTopiaDao}. + * + * <strong>Note:</strong> the class must implements {@link org.nuiton.topia.persistence.TopiaDao}. + * + * @see org.nuiton.topia.persistence.internal.AbstractTopiaDao + * @see #getDaoSuperClassTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + daoSuperClass(n("topia.core.tagValue.daoSuperClass"), String.class, null, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag to specify a super class to use instead of {@link org.nuiton.topia.persistence.internal.AbstractTopiaEntity}. + * + * <strong>Note:</strong> the class must implements {@link TopiaEntity}. + * + * @see TopiaEntity + * @see #getEntitySuperClassTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + entitySuperClass(n("topia.core.tagValue.entitySuperClass"), String.class, null, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag to specify if PropertyChangeListener support should be generated + * + * @see #isGeneratePropertyChangeSupport(ObjectModelClass, ObjectModel) + * @since 3.0 + */ + generatePropertyChangeSupport(n("topia.core.tagValue.generatePropertyChangeSupport"), boolean.class, "false", ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class); + + private final Set<Class<?>> targets; + private final Class<?> type; + private final String i18nDocumentationKey; + private final String defaultValue; + + Store(String i18nDocumentationKey, Class<?> type, String defaultValue, Class<?>... targets) { + this.targets = ImmutableSet.copyOf(targets); + this.type = type; + this.i18nDocumentationKey = i18nDocumentationKey; + this.defaultValue = defaultValue; + } + + @Override + public String getName() { + return name(); + } + + @Override + public Set<Class<?>> getTargets() { + return targets; + } + + @Override + public Class<?> getType() { + return type; + } + + @Override + public Class<EqualsTagValueNameMatcher> getMatcherClass() { + return EqualsTagValueNameMatcher.class; + } + + @Override + public String getI18nDocumentationKey() { + return i18nDocumentationKey; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public boolean isDeprecated() { + return false; + } + + } + + public TopiaCoreTagValues() { + super((TagValueMetadata[]) Store.values()); + } + + /** + * Obtain the value of the {@link Store#annotation} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#annotation + * @since 2.5 + */ + public String getAnnotationTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.annotation, attribute); + } + + /** + * Obtain the value of the {@link Store#contextable} tag value on the given classifier or model. + * + * @param classifier classifier to seek + * @param aPackage FIXME + * @param model model to seek + * @return the boolean value of the found tag value or {@code false} if not found nor empty. + * @see Store#contextable + * @since 2.5 + */ + public boolean getContextableTagValue(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findBooleanTagValue(Store.contextable, classifier, aPackage, model); + } + + /** + * Obtain the value of the {@link Store#notGenerateToString} tag value on the given class. + * + * @param clazz class to seek + * @param aPackage FIXME + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#notGenerateToString + * @since 2.5 + */ + public boolean getNotGenerateToStringTagValue(ObjectModelClassifier clazz, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findBooleanTagValue(Store.notGenerateToString, clazz, aPackage, model); + } + + /** + * Obtains the value of the {@link Store#daoImplementation} tag value on the given model. + * + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#daoImplementation + * @since 2.5 + */ + public String getDaoImplementationTagValue(ObjectModel model) { + return TagValueUtil.findTagValue(Store.daoImplementation, model); + } + + /** + * Obtains the value of the {@link Store#persistenceContextSuperClass} tag value on the model. + * + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#persistenceContextSuperClass + * @since 3.0 + */ + public String getPersistenceContextSuperClassTagValue(ObjectModel model) { + return TagValueUtil.findTagValue(Store.persistenceContextSuperClass, model); + } + + /** + * Obtains the value of the {@link Store#applicationContextSuperClass} tag value on the model. + * + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#applicationContextSuperClass + * @since 3.0 + */ + public String getApplicationContextSuperClassTagValue(ObjectModel model) { + return TagValueUtil.findTagValue(Store.applicationContextSuperClass, model); + } + + /** + * Obtains the value of the {@link Store#daoSuperClass} tag value on the given classifier or on the model. + * + * @param model model to seek + * @param aPackage FIXME + * @param classifier FIXME + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#daoSuperClass + * @since 3.0 + */ + public String getDaoSuperClassTagValue(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil. findTagValue(Store.daoSuperClass, classifier, aPackage, model); + } + + /** + * Obtains the value of the {@link Store#entitySuperClass} tag value on the given classifier or on the model. + * + * @param model model to seek + * @param aPackage FIXME + * @param classifier FIXME + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#entitySuperClass + * @since 3.0 + */ + public String getEntitySuperClassTagValue(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findTagValue(Store.entitySuperClass, classifier, aPackage, model); + } + + /** + * Cherche si le tagvalue {@link Store#generateOperatorForDAOHelper} a été activé dans le model. + * + * @param model le modele utilisé + * @return {@code true} si le tag value trouvé dans le modèle, {@code false} + * sinon. + * @see Store#generateOperatorForDAOHelper + * @since 2.5 + */ + public boolean getGenerateOperatorForDAOHelperTagValue(ObjectModel model) { + return TagValueUtil. findBooleanTagValue(Store.generateOperatorForDAOHelper, model); + } + + public boolean isGeneratePropertyChangeSupport(ObjectModelClass clazz, ObjectModel model) { + ObjectModelPackage modelPackage = model.getPackage(clazz); + return TagValueUtil.findBooleanTagValue(Store.generatePropertyChangeSupport, clazz, modelPackage, model); + } + + public String getDeprecatedModelTagValueMessage(ObjectModel model, + String deprecatedTagValue, + String newTagValue, + String value) { + String tagValuePrefix = "model.tagValue."; + + String deprecatedTagName = tagValuePrefix + deprecatedTagValue + "=" + value; + String tagName = tagValuePrefix + newTagValue + "=" + value; + return "\n---------\nYou are using a deprecated tagValue (" + deprecatedTagName + "), replace it by\n" + tagName + "\n---------\n"; + + } + +} diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java index 76b16df..8593dfd 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java @@ -32,7 +32,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.AbstractGenerator; -import org.nuiton.eugene.EugeneStereoTypes; +import org.nuiton.eugene.EugeneCoreStereotypes; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; @@ -84,11 +84,8 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { * Static singleton instance used to read defaultValue * TODO AThimel 19/06/14 Remove this when remove deprecated methods using it */ - protected final static TopiaTagValues TOPIA_TAG_VALUES = new TopiaTagValues(); - - static { - TOPIA_TAG_VALUES.init(); - } + protected final static TopiaCoreTagValues TOPIA_TAG_VALUES = new TopiaCoreTagValues(); + protected final static TopiaHibernateTagValues TOPIA_HIBERNATE_TAG_VALUES = new TopiaHibernateTagValues(); /** * dependency to add extra operations for entity dao. @@ -247,7 +244,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { * @since 2.5 */ public static String getPersistenceType(ObjectModelClassifier classifier) { - String tag = TOPIA_TAG_VALUES.getPersistenceTypeTagValue(classifier); + String tag = TOPIA_HIBERNATE_TAG_VALUES.getPersistenceTypeTagValue(classifier); if (tag == null) { tag = PERSISTENCE_TYPE_DEFAULT; } @@ -283,7 +280,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { if (element == null) { return null; } - String value = TOPIA_TAG_VALUES.getDbNameTagValue(element); + String value = TOPIA_HIBERNATE_TAG_VALUES.getDbNameTagValue(element); if (value != null) { return value; } @@ -302,9 +299,9 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { // use {@link LinkedHashSet} to keep order and prevent duplicate natural ids found Set<ObjectModelAttribute> results = - new LinkedHashSet<ObjectModelAttribute>(); + new LinkedHashSet<>(); for (ObjectModelAttribute attr : clazz.getAttributes()) { - if (TOPIA_TAG_VALUES.getNaturalIdTagValue(attr)) { + if (TOPIA_HIBERNATE_TAG_VALUES.getNaturalIdTagValue(attr)) { results.add(attr); } } @@ -330,7 +327,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { // use {@link LinkedHashSet} to keep order and prevent duplicate not null found Set<ObjectModelAttribute> results = - new LinkedHashSet<ObjectModelAttribute>(); + new LinkedHashSet<>(); for (ObjectModelAttribute attr : clazz.getAttributes()) { if (isAttributeNotNull(attr)) { results.add(attr); @@ -362,10 +359,10 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { * @since 2.6.9 */ public static boolean isAttributeNotNull(ObjectModelAttribute attribute) { - Boolean value = TOPIA_TAG_VALUES.getNotNullTagValue(attribute); + Boolean value = TOPIA_HIBERNATE_TAG_VALUES.getNotNullTagValue(attribute); if (value == null) { // valeur null, donc pas positionnee - return TOPIA_TAG_VALUES.getNaturalIdTagValue(attribute); + return TOPIA_HIBERNATE_TAG_VALUES.getNaturalIdTagValue(attribute); } return value; } @@ -398,15 +395,15 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { return type; } - private static final Set<String> numberTypes = new HashSet<String>(); + private static final Set<String> numberTypes = new HashSet<>(); - private static final Set<String> textTypes = new HashSet<String>(); + private static final Set<String> textTypes = new HashSet<>(); - private static final Set<String> booleanTypes = new HashSet<String>(); + private static final Set<String> booleanTypes = new HashSet<>(); - private static final Set<String> primitiveTypes = new HashSet<String>(); + private static final Set<String> primitiveTypes = new HashSet<>(); - private static final Map<String, String> primitiveTypeToClass = new HashMap<String, String>(); + private static final Map<String, String> primitiveTypeToClass = new HashMap<>(); private static final String VOID_TYPE = "void"; @@ -556,7 +553,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { ObjectModelAttribute attr) { if (JavaGeneratorUtil.isOrdered(attr)) { return "list"; - } else if (EugeneStereoTypes.hasUniqueStereotype(attr)) { + } else if (EugeneCoreStereotypes.hasUniqueStereotype(attr)) { return "set"; } //attr.isOrdered() - On génère le ordered en bag @@ -573,7 +570,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { */ public static List<ObjectModelClass> getEntityClasses(ObjectModel model, boolean sort) { - return getClassesByStereotype(TopiaStereoTypes.STEREOTYPE_ENTITY, model, sort); + return getClassesByStereotype(TopiaCoreStereoTypes.Store.entity.getName(), model, sort); } /** @@ -587,7 +584,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { */ public static List<ObjectModelClass> getClassesByStereotype( String stereotype, ObjectModel model, boolean sort) { - List<ObjectModelClass> classes = new ArrayList<ObjectModelClass>(); + List<ObjectModelClass> classes = new ArrayList<>(); for (ObjectModelClass clazz : model.getClasses()) { if (clazz.hasStereotype(stereotype)) { classes.add(clazz); @@ -621,7 +618,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { */ public static List<String> getImports(ObjectModelClass aClass, String... incomingFqns) { - Set<String> tmp = new HashSet<String>(); + Set<String> tmp = new HashSet<>(); tmp.addAll(Arrays.asList(incomingFqns)); getImports(aClass, tmp); List<String> result = cleanImports(aClass.getPackageName(), tmp); @@ -729,7 +726,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { fqns.removeAll(primitiveTypes); fqns.remove(VOID_TYPE); int packageLength = packageName.length(); - List<String> genericType = new ArrayList<String>(); + List<String> genericType = new ArrayList<>(); for (Iterator<String> it = fqns.iterator(); it.hasNext(); ) { String fqn = it.next(); int lastIndex = fqn.lastIndexOf("."); @@ -746,7 +743,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { } fqns.addAll(genericType); - ArrayList<String> result = new ArrayList<String>(fqns); + ArrayList<String> result = new ArrayList<>(fqns); Collections.sort(result); return result; } @@ -759,8 +756,8 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { allEntities = getEntityClasses(model, true); - allEntitiesByFQN = new TreeMap<String, ObjectModelClass>(); - usages = new LinkedHashMap<ObjectModelClass, Set<ObjectModelClass>>(); + allEntitiesByFQN = new TreeMap<>(); + usages = new LinkedHashMap<>(); // prepare usages map and fill allEntitiesByFQN map for (ObjectModelClass klass : allEntities) { @@ -846,7 +843,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { * @param model model containing the attribute * @return {@code true} if type of attribute is an entity, * {@code false} otherwise - * @see TopiaStereoTypes#STEREOTYPE_ENTITY + * @see TopiaCoreStereoTypes.Store#entity * @since 2.7 */ public static boolean isEntity(ObjectModelAttribute attribute, @@ -862,28 +859,28 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { /** * Check if the given classifier has the - * {@link TopiaStereoTypes#STEREOTYPE_ENTITY} and is not an enumeration + * {@link TopiaCoreStereoTypes.Store#entity} and is not an enumeration * * @param classifier classifier to test * @return {@code true} if stereotype was found and classifier is not * enumeration, {@code false} otherwise - * @see TopiaStereoTypes#STEREOTYPE_ENTITY + * @see TopiaCoreStereoTypes.Store#entity * @since 2.5 */ public static boolean isEntity(ObjectModelClassifier classifier) { - return TopiaStereoTypes.hasEntityStereotype(classifier, null) && !classifier.isEnum(); + return TopiaCoreStereoTypes.hasEntityStereotype(classifier, null) && !classifier.isEnum(); } /** - * Obtain the value of the {@link TopiaTagValues#TAG_INHERITANCE_STRATEGY} tag value on the given classifier. + * Obtain the value of the {@link TopiaHibernateTagValues.Store#inheritanceStrategy} tag value on the given classifier. * * @param classifier classifier to seek * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see TopiaTagValues#TAG_INHERITANCE_STRATEGY + * @see TopiaHibernateTagValues.Store#inheritanceStrategy * @since 3.0 */ public static String getInheritanceStrategy(ObjectModelClassifier classifier) { - String value = TOPIA_TAG_VALUES.getInheritanceStrategyTagValue(classifier, null); + String value = TOPIA_HIBERNATE_TAG_VALUES.getInheritanceStrategyTagValue(classifier, null); if (value == null) { value = TopiaGeneratorUtil.DEFAULT_INHERITANCE_STRATEGY; } @@ -909,7 +906,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { @Deprecated public static <Type extends ObjectModelElement> Collection<Type> getElementsWithStereotype( Collection<Type> elements, String... stereotypes) { - Collection<Type> result = new ArrayList<Type>(); + Collection<Type> result = new ArrayList<>(); for (Type element : elements) { if (hasStereotypes(element, stereotypes)) { result.add(element); @@ -946,7 +943,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { ObjectModelClass clazz, boolean includeName) { Collection<ObjectModelAttribute> attributeCollection; attributeCollection = getElementsWithStereotype(clazz.getAttributes(), - TopiaStereoTypes.STEREOTYPE_PRIMARY_KEY); + TopiaCoreStereoTypes.Store.primaryKey.getName()); List<String> attributes = Lists.newArrayList(); for (ObjectModelAttribute attr : attributeCollection) { String attribute = attr.getType(); @@ -985,7 +982,7 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { @Deprecated public static List<String> getImports(ObjectModelInterface anInterface, String... incomingFqns) { - Set<String> tmp = new HashSet<String>(); + Set<String> tmp = new HashSet<>(); tmp.addAll(Arrays.asList(incomingFqns)); getImports(anInterface, tmp); List<String> result = cleanImports(anInterface.getPackageName(), tmp); @@ -1027,13 +1024,13 @@ public class TopiaGeneratorUtil extends JavaGeneratorUtil { /** * Obtain the class to use as abstract dao. * - * It will look after a tag value {@link TopiaTagValues#TAG_DAO_IMPLEMENTATION} in model + * It will look after a tag value {@link TopiaCoreTagValues.Store#daoSuperClass} in model * and if not found will use the default value which is {@link AbstractTopiaDao}. * * @param model the model which could contains * @return the type of the abstract dao to use * @since 2.5 - * @deprecated since 3.0-alpha-8, replaced by {@link TopiaTagValues#getDaoSuperClassTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel)} + * @deprecated since 3.0-alpha-8, replaced by {@link TopiaCoreTagValues#getDaoSuperClassTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel)} */ @Deprecated public static Class<?> getDAOImplementation(ObjectModel model) { diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaHibernateTagValues.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaHibernateTagValues.java new file mode 100644 index 0000000..d0bad47 --- /dev/null +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaHibernateTagValues.java @@ -0,0 +1,737 @@ +package org.nuiton.topia.templates; + +/* + * #%L + * ToPIA :: Templates + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2004 - 2014 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; +import org.nuiton.eugene.models.extension.tagvalue.TagValueUtil; +import org.nuiton.eugene.models.extension.tagvalue.matcher.EqualsTagValueNameMatcher; +import org.nuiton.eugene.models.extension.tagvalue.matcher.TagValueDefinitionMatcher; +import org.nuiton.eugene.models.extension.tagvalue.provider.DefaultTagValueMetadatasProvider; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelPackage; +import org.nuiton.eugene.models.tagvalue.TagValues; + +import java.sql.Blob; +import java.util.Map; +import java.util.Set; + +import static org.nuiton.eugene.models.tagvalue.TagValues.findTagValue; +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.topia.templates.TopiaTagValues.TAG_ATTRIBUTE_TYPE; +import static org.nuiton.topia.templates.TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE; + +/** + * All extra tag values usable in topia generators. + * + * @author Tony Chemit - chemit@codelutin.com + * @plexus.component role="org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider" role-hint="topia-hibernate" + * @since 2.5 + */ +public class TopiaHibernateTagValues extends DefaultTagValueMetadatasProvider { + + /** + * Static singleton instance used to read defaultValue + */ + protected static final TopiaHibernateTagValues INSTANCE = new TopiaHibernateTagValues(); + + public enum Store implements TagValueMetadata { + + /** + * Tag pour le type de persistence. + * + * @see TopiaTemplateHelper#getPersistenceType(ObjectModelClassifier) + * @see #getPersistenceTypeTagValue(ObjectModelClassifier) + * @since 2.5 + */ + persistenceType(n("topia.core.tagValue.persistenceType"), String.class, null, ObjectModelClassifier.class), + + /** + * Tag pour le nom du champ / entité en BD. + * + * @see #getDbNameTagValue(ObjectModelElement) + * @see TopiaTemplateHelper#getDbName(ObjectModelElement) + * @see TopiaTemplateHelper#getReverseDbName(ObjectModelAttribute) + */ + dbName(n("topia.core.tagValue.dbName"), String.class, null, ObjectModelElement.class), + + /** + * Tag to specify the reverse db name of an attribute in database. + * + * @see TopiaTemplateHelper#getReverseDbName(ObjectModelAttribute) + */ + reverseDbName(n("topia.core.tagValue.reverseDbName"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag to specify the reverse db name of an attribute in database. + * + * @see #getManytoManyTableNameTagValue(ObjectModelAttribute) + * @see TopiaTemplateHelper#getManyToManyTableName(ObjectModelAttribute) + * @since 2.9.2 + */ + manyToManyTableName(n("topia.core.tagValue.manyToManyTableName"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag pour le nom du schema en BD. + * + * @see #getDbSchemaNameTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.5 + */ + dbSchema(n("topia.core.tagValue.dbSchema"), String.class, null, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelAttribute.class), + + /** + * Tag pour la taille du champ en BD. + * + * @see #getLengthTagValue(ObjectModelAttribute) + * @since 2.5 + */ + length(n("topia.core.tagValue.length"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag pour specfier le type d'acces a un champ. + * + * @see #getAccessTagValue(ObjectModelAttribute) + * @since 2.5 + */ + access(n("topia.core.tagValue.access"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag pour ajouter un attribut dans une clef métier. + * + * @see #getNaturalIdTagValue(ObjectModelAttribute) + * @since 2.5 + */ + naturalId(n("topia.core.tagValue.naturalId"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag pour specifier si une clef metier est mutable. + * + * @see #getNaturalIdMutableTagValue(ObjectModelClassifier) + * @since 2.5 + */ + naturalIdMutable(n("topia.core.tagValue.naturalIdMutable"), boolean.class, null, ObjectModelClassifier.class), + + /** + * Tag pour permettre de choisir qui contrôle la relation N-N + * bidirectionnelle. A utiliser sur les deux extremités de l'association. + * Mettre inverse=false sur le rôle fils et inverse=true sur le rôle père. + * Par défaut le inverse=true est placé sur le premier rôle trouvé dans + * l'ordre alphabétique. + * + * @see #getInverseTagValue(ObjectModelAttribute) + * @since 2.5 + */ + inverse(n("topia.core.tagValue.inverse"), boolean.class, null, ObjectModelAttribute.class), + + /** + * Tag pour spécifier la caractère lazy d'une association multiple. + * + * @see #getLazyTagValue(ObjectModelAttribute) + * @since 2.5 + */ + lazy(n("topia.core.tagValue.lazy"), boolean.class, null, ObjectModelAttribute.class), + + /** + * Tag pour spécifier la caractère fetch d'une association multiple. + * + * @see #getFetchTagValue(ObjectModelAttribute) + * @since 2.5 + */ + fetch(n("topia.core.tagValue.fetch"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag pour spécifier la caractère order-by d'une association multiple. + * + * @see #getOrderByTagValue(ObjectModelAttribute) + * @since 2.5 + */ + orderBy(n("topia.core.tagValue.orderBy"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag pour spécifier la caractère not-null d'un attribut. + * + * @see #getNotNullTagValue(ObjectModelAttribute) + * @since 2.5 + */ + notNull(n("topia.core.tagValue.notNull"), String.class, null, ObjectModelAttribute.class), + + /** + * Tag à placer sur un l'attribut d'une entité. Cet attribut est de type + * énumération : l'ajout de la tagValue indique qu'il faut utiliser le + * {@code name} de l'énumération et non l'ordinal pour stocker la valeur en + * base + * + * @see #hasUseEnumerationNameTagValue(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + useEnumerationName(n("topia.core.tagValue.useEnumerationName"), boolean.class, "true", ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelAttribute.class), + + /** + * Tag pour configurer l'interface du proxy sur autre chose que l'implementation par defaut. + * + * Par defaut : + * null → generere le proxy sur l'interface de l'implementation + * Autre valeur : + * "none" → laisse la configuration par defaut d'hibernate + * + * @see #getPersistenceTypeTagValue(ObjectModelClassifier) + * @since 2.5 + */ + hibernateProxyInterface(n("topia.core.tagValue.hibernateProxyInterface"), String.class, null, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag pour configurer la stategie d'heritage choisie. + * + * Par defaut : union-subclass : Table per class strategy + * Autre valeur : + * "subclass" → Single table per class hierarchy strategy + * "joined-subclass" → Joined subclass strategy + * + * @see #getPersistenceTypeTagValue(ObjectModelClassifier) + * @since 3.0 + */ + inheritanceStrategy(n("topia.core.tagValue.inheritanceStrategy"), String.class, "union-subclass", ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag pour specifier de trier les attributs par nom lors de la generation. + * + * @see #getSortAttributeTagValue(ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 2.5 + */ + sortAttribute(n("topia.core.tagValue.sortAttribute"), boolean.class, "false", ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag pour spécifier le type d'une propriété dans le mapping hibernate. + * + * @see #getTypeTagValue(ObjectModelAttribute) + * @since 2.5 + * @deprecated since 3.0, use now {@link #hibernateAttributeType} which + * permits to deal the same thing but at also model and classifier scope. + */ + @Deprecated + type(n("topia.core.tagValue.type"), String.class, null, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class), + + /** + * Tag pour spécifier le type sql d'une propriété dans le mapping hibernate. + * + * @see #getSqlTypeTagValue(ObjectModelAttribute) + * @since 2.5 + */ + sqlType(n("topia.core.tagValue.sqlType"), String.class, null, ObjectModelAttribute.class), + + /** + * Stéréotype pour les attributs avec multiplicité nécessitant la création d'un index. + * + * @see #getIndexForeignKeysTagValue(ObjectModelAttribute, ObjectModelPackage, ObjectModel) + * @since 2.6.5 + */ + indexForeignKeys(n("topia.core.tagValue.indexForeignKeys"), boolean.class, "true", ObjectModel.class, ObjectModelPackage.class, ObjectModelAttribute.class), + + /** + * Tag to generate deterministic foreign key names in hibernate mapping files. + * + * @see #isGenerateForeignKeyNames(ObjectModelClassifier, ObjectModel) + * @since 3.0.1 + */ + generateForeignKeyNames(n("topia.core.tagValue.generateForeignKeyNames"), boolean.class, "false", ObjectModel.class, ObjectModelClassifier.class), + + /** + * Tag to change the type of an attribute in a hibernate mapping. + * + * This is a special tagValue that is dynamic. + * + * For example to change the type {@code String} into hibernate mapping type {@code text}, add this: + * <pre> + * model.tagValue.hibernateAttributeType.String=text + * </pre> + * + * Before 3.0, you could do the same thing using: + * <pre> + * model.tagValue.String=text + * </pre> + * + * The new way permits us to validate the usage of the tagValue, old way can't. + * + * @see #getHibernateAttributeType(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + hibernateAttributeType(n("topia.core.tagValue.hibernateAttributeType"), String.class, null, org.nuiton.eugene.models.extension.tagvalue.matcher.StartsWithTagNameMatcher.class, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelAttribute.class), + + /** + * Tag to change the type of an attribute. + * + * This is a special tagValue that is dynamic. + * + * For example to change the type {@code String} into type {@code java.lang.String}, add this: + * <pre> + * model.tagValue.attributeType.String=java.lang.String + * </pre> + * + * Before 3.0, you could do the same thing using: + * <pre> + * model.tagValue.String=java.lang.String + * </pre> + * + * The new way permits us to validate the usage of the tagValue, old way can't. + * + * @see #getHibernateAttributeType(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, ObjectModel) + * @since 3.0 + */ + attributeType(n("topia.core.tagValue.attributeType"), String.class, null, org.nuiton.eugene.models.extension.tagvalue.matcher.StartsWithTagNameMatcher.class, ObjectModel.class, ObjectModelPackage.class, ObjectModelClassifier.class, ObjectModelAttribute.class); + + private final Set<Class<?>> targets; + private final Class<?> tagValueType; + private final String i18nDocumentationKey; + private final String defaultValue; + private final Class<? extends TagValueDefinitionMatcher> matcher; + + Store(String i18nDocumentationKey, Class<?> tagValueType, String defaultValue, Class<?>... targets) { + this.targets = ImmutableSet.copyOf(targets); + this.tagValueType = tagValueType; + this.i18nDocumentationKey = i18nDocumentationKey; + this.defaultValue = defaultValue; + this.matcher = EqualsTagValueNameMatcher.class; + } + + Store(String i18nDocumentationKey, Class<?> tagValueType, String defaultValue, Class<? extends TagValueDefinitionMatcher> matcher, Class<?>... targets) { + this.targets = ImmutableSet.copyOf(targets); + this.tagValueType = tagValueType; + this.i18nDocumentationKey = i18nDocumentationKey; + this.defaultValue = defaultValue; + this.matcher = matcher; + } + + @Override + public String getName() { + return name(); + } + + @Override + public Set<Class<?>> getTargets() { + return targets; + } + + @Override + public Class<?> getType() { + return tagValueType; + } + + @Override + public Class<? extends TagValueDefinitionMatcher> getMatcherClass() { + return matcher; + } + + @Override + public String getI18nDocumentationKey() { + return i18nDocumentationKey; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public boolean isDeprecated() { + return false; + } + + } + + public TopiaHibernateTagValues() { + super((TagValueMetadata[]) Store.values()); + } + + /** + * Obtain the value of the {@link Store#persistenceType} tag value on the given classifier. + * + * @param classifier classifier to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#persistenceType + * @since 2.5 + */ + public String getPersistenceTypeTagValue(ObjectModelClassifier classifier) { + return TagValueUtil.findTagValue(Store.persistenceType, classifier); + } + + /** + * Obtain the value of the {@link Store#inheritanceStrategy} tag value on the given classifier. + * + * @param classifier classifier to seek + * @param aPackage package to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#inheritanceStrategy + * @since 3.0 + */ + public String getInheritanceStrategyTagValue(ObjectModelClassifier classifier, + ObjectModelPackage aPackage) { + return TagValueUtil.findTagValue(Store.inheritanceStrategy, classifier, aPackage); + } + + /** + * Obtain the value of the {@link Store#dbName} tag value on the given element. + * + * <strong>Note:</strong> We just try a direct search on the element and do not + * walk through his declaring elements if not found (see https://forge.nuiton.org/issues/2342). + * + * @param element element to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#dbName + * @since 2.5 + */ + public String getDbNameTagValue(ObjectModelElement element) { + return TagValueUtil.findDirectTagValue(Store.dbName, null, element); + } + + /** + * Obtain the value of the {@link Store#dbSchema} tag value on the given classifier. + * + * @param classifier classifier to seek + * @param aPackage package 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 Store#dbSchema + * @since 2.5 + */ + public String getDbSchemaNameTagValue(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findTagValue(Store.dbSchema, classifier, aPackage, model); + } + + /** + * Obtain the value of the {@link Store#manyToManyTableName} + * tag value on the given attribute. + * + * + * Note that it won't and search on declaring element or anywhere else than on the given element. + * See https://forge.nuiton.org/issues/2342 + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#manyToManyTableName + * @since 2.9.2 + */ + public String getManytoManyTableNameTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findDirectTagValue(Store.manyToManyTableName); + } + + /** + * Obtain the value of the {@link Store#length} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#length + * @since 2.5 + */ + public String getLengthTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.length, attribute); + } + + /** + * Obtain the value of the {@link Store#access} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#access + * @since 2.5 + */ + public String getAccessTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.access, attribute); + } + + /** + * Obtain the value of the {@link Store#naturalId} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#naturalId + * @since 2.5 + */ + public boolean getNaturalIdTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findBooleanTagValue(Store.naturalId, attribute); + } + + /** + * Obtain the value of the {@link Store#naturalIdMutable} tag value on the given classifier. + * + * @param classifier classifier to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#naturalIdMutable + * @since 2.5 + */ + public boolean getNaturalIdMutableTagValue(ObjectModelClassifier classifier) { + return TagValueUtil.findBooleanTagValue(Store.naturalIdMutable, classifier); + } + + /** + * Obtain the value of the {@link Store#inverse} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#inverse + * @since 2.5 + */ + public String getInverseTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.inverse, attribute); + } + + /** + * Obtain the value of the {@link Store#lazy} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#lazy + * @since 2.5 + */ + public String getLazyTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.lazy, attribute); + } + + /** + * Obtain the value of the {@link Store#fetch} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#fetch + * @since 2.5 + */ + public String getFetchTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.fetch, attribute); + } + + /** + * Obtain the value of the {@link Store#orderBy} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#orderBy + * @since 2.5 + */ + public String getOrderByTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.orderBy, attribute); + } + + /** + * Obtain the value of the {@link Store#notNull} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#notNull + * @since 2.5 + */ + public Boolean getNotNullTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findNullableBooleanTagValue(Store.notNull, attribute); + } + + /** + * Obtain the value of the {@link Store#hibernateProxyInterface} tag value on the given classifier. + * + * @param classifier classifier to seek + * @param aPackage FIXME + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#hibernateProxyInterface + * @since 2.5 + */ + public String getProxyInterfaceTagValue(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findTagValue(Store.hibernateProxyInterface, classifier, aPackage, model); + } + + /** + * Obtain the value of the {@link Store#sortAttribute} tag value on the given classifier. + * + * @param classifier classifier to seek + * @param aPackage FIXME + * @param model model to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#sortAttribute + * @since 2.5 + */ + public boolean getSortAttributeTagValue(ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findBooleanTagValue(Store.sortAttribute, classifier, aPackage, model); + } + + /** + * Obtain the value of the {@link Store#generateForeignKeyNames} + * tag value on the given model or classifier and returns {@code true} if the tag value was found and value {@code true}. + * + * It will first look on the model, and then in the given classifier. + * + * @param model model to seek + * @param classifier classifier to seek + * @return {@code true} if tag value was found on classifier or model and his value is {@code true}, otherwise {@code false}. + * @see Store#generateForeignKeyNames + * @since 2.10 + */ + public boolean isGenerateForeignKeyNames(ObjectModelClassifier classifier, ObjectModel model) { + return TagValueUtil.findBooleanTagValue(Store.generateForeignKeyNames, classifier, model); + } + + protected static final Map<String, String> HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES = Maps.newHashMap(); + + static { + // String + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(String.class.getSimpleName(), String.class.getName()); + + // primitive types wrappers + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Boolean.class.getSimpleName(), Boolean.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Byte.class.getSimpleName(), Byte.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Character.class.getSimpleName(), Character.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Short.class.getSimpleName(), Short.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Integer.class.getSimpleName(), Integer.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Long.class.getSimpleName(), Long.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Float.class.getSimpleName(), Float.class.getName()); + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Double.class.getSimpleName(), Double.class.getName()); + + // some particular types + HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.put(Blob.class.getSimpleName(), Blob.class.getName().toLowerCase()); + } + + /** + * Obtain the value of the {@link Store#hibernateAttributeType} tag value on the given attribute, classifier or model. + * + * @param attribute attribute to seek + * @param aPackage FIXME + * @param model FIXME + * @param classifier FIXME + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#hibernateAttributeType + * @since 3.0 + */ + public String getHibernateAttributeType(ObjectModelAttribute attribute, ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + + String value = TagValueUtil.findDirectTagValue(Store.hibernateAttributeType, null, attribute); + if (value == null) { + String tagValueName = TAG_HIBERNATE_ATTRIBUTE_TYPE + "." + attribute.getType(); + String defaultValue = HIBERNATE_ATTRIBUTE_TYPE_DEFAULT_VALUES.get(attribute.getType()); + value = findTagValue(tagValueName, defaultValue, attribute, classifier, aPackage, model); + } + return value; + + } + + /** + * Obtain the value of the {@link Store#attributeType} tag value on the given attribute, classifier or model. + * + * @param attribute attribute to seek + * @param aPackage FIXME + * @param model FIXME + * @param classifier FIXME + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#attributeType + * @since 3.0.1 + */ + public String getAttributeType(ObjectModelAttribute attribute, ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + + String value = TagValueUtil.findDirectTagValue(Store.attributeType, null, attribute); + if (value == null) { + String tagValueName = TAG_ATTRIBUTE_TYPE + "." + attribute.getType(); + //TODO do not use this deprecated api + value = TagValues.findTagValue(tagValueName, (String) null, attribute, classifier, aPackage, model); + } + return value; + + } + + /** + * Obtain the value of the {@link Store#sqlType} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#sqlType + * @since 2.5 + */ + public String getSqlTypeTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.sqlType, attribute); + } + + /** + * Obtains the value of the tag value {@link Store#indexForeignKeys} on the model or on the + * given attribute. + * + * @param attribute attribute to test + * @param model model to test + * @param aPackage FIXME + * @return none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#indexForeignKeys + * @since 2.6.5 + */ + public boolean getIndexForeignKeysTagValue(ObjectModelAttribute attribute, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findBooleanTagValue(Store.indexForeignKeys, attribute, aPackage, model); + } + + //TODO Javadoc + public boolean hasUseEnumerationNameTagValue(ObjectModelAttribute attr, ObjectModelClassifier classifier, ObjectModelPackage aPackage, ObjectModel model) { + return TagValueUtil.findBooleanTagValue(Store.useEnumerationName, attr, classifier, aPackage, model); + } + + //--------------------------------------------------------------------------------------------------------------- + //-- DEPRECATED API TO REMOVE --------------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------------------------------- + + /** + * Obtain the value of the {@link Store#type} tag value on the given attribute. + * + * @param attribute attribute to seek + * @return the none empty value of the found tag value or {@code null} if not found nor empty. + * @see Store#type + * @since 2.5 + * @deprecated since 3.0, use now {@link #getHibernateAttributeType(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, ObjectModel)} or {@link #getAttributeType(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, ObjectModel)} + */ + @Deprecated + public String getTypeTagValue(ObjectModelAttribute attribute) { + return TagValueUtil.findTagValue(Store.type, attribute); + } + + public String getDeprecatedAttributeTagValueMessage(ObjectModelClass clazz, + ObjectModelAttribute attr, + String deprecatedTagValue, + String newTagValue, + String value) { + String tagValuePrefix = clazz.getQualifiedName() + ".attribute." + attr.getName() + ".tagValue."; + + String deprecatedTagName = tagValuePrefix + deprecatedTagValue + "=" + value; + String tagName = tagValuePrefix + newTagValue + "=" + value; + return "\n---------\nYou are using a deprecated tagValue (" + deprecatedTagName + "), replace it by\n" + tagName + "\n---------\n"; + + } + + public String getDeprecatedModelTagValueMessage(ObjectModel model, + String deprecatedTagValue, + String newTagValue, + String value) { + String tagValuePrefix = "model.tagValue."; + + String deprecatedTagName = tagValuePrefix + deprecatedTagValue + "=" + value; + String tagName = tagValuePrefix + newTagValue + "=" + value; + return "\n---------\nYou are using a deprecated tagValue (" + deprecatedTagName + "), replace it by\n" + tagName + "\n---------\n"; + + } + +} diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java index 01af013..706840f 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java @@ -37,6 +37,7 @@ import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider; * @plexus.component role="org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider" role-hint="topia-templates" * @since 2.5 */ +@Deprecated public class TopiaStereoTypes extends StereotypeDefinitionProvider { /** @@ -61,33 +62,33 @@ public class TopiaStereoTypes extends StereotypeDefinitionProvider { public static final String STEREOTYPE_PRIMARY_KEY = "primaryKey"; /** - * Check if the given classifier has the {@link TopiaStereoTypes#STEREOTYPE_ENTITY} stereotype. + * Check if the given classifier has the {@link TopiaCoreStereoTypes.Store#entity} stereotype. * * @param aPackage FIXME * @param classifier classifier to test * @return {@code true} if stereotype was found, {@code false otherwise} - * @see TopiaStereoTypes#STEREOTYPE_ENTITY + * @see TopiaCoreStereoTypes.Store#entity * @since 2.5 */ public static boolean hasEntityStereotype(ObjectModelClassifier classifier, ObjectModelPackage aPackage) { - boolean hasStereotype = classifier.hasStereotype(TopiaStereoTypes.STEREOTYPE_ENTITY); + boolean hasStereotype = classifier.hasStereotype(TopiaCoreStereoTypes.Store.entity.getName()); if (!hasStereotype && aPackage!=null) { - hasStereotype = aPackage.hasStereotype(TopiaStereoTypes.STEREOTYPE_ENTITY); + hasStereotype = aPackage.hasStereotype(TopiaCoreStereoTypes.Store.entity.getName()); } return hasStereotype; } /** - * Check if the given attribute has the {@link TopiaStereoTypes#STEREOTYPE_PRIMARY_KEY} stereotype. + * Check if the given attribute has the {@link TopiaCoreStereoTypes.Store#primaryKey} stereotype. * * @param attribute attribute to test * @return {@code true} if stereotype was found, {@code false otherwise} - * @see TopiaStereoTypes#STEREOTYPE_PRIMARY_KEY + * @see TopiaCoreStereoTypes.Store#primaryKey * @since 2.5 * @deprecated since 3.0, not used in ToPIA */ @Deprecated public static boolean hasPrimaryKeyStereotype(ObjectModelAttribute attribute) { - return attribute.hasStereotype(TopiaStereoTypes.STEREOTYPE_PRIMARY_KEY); + return attribute.hasStereotype(TopiaCoreStereoTypes.Store.primaryKey.getName()); } } diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java index 075b13f..ca854ca 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java @@ -49,6 +49,7 @@ import java.util.Map; * @plexus.component role="org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider" role-hint="topia-templates" * @since 2.5 */ +@Deprecated public class TopiaTagValues extends TagValueDefinitionProvider { /** diff --git a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java index a17e749..43c2158 100644 --- a/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java +++ b/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTemplateHelper.java @@ -30,10 +30,13 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.AbstractGenerator; -import org.nuiton.eugene.EugeneStereoTypes; +import org.nuiton.eugene.EugeneCoreStereotypes; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadatasProviderManagerExtension; +import org.nuiton.eugene.models.extension.tagvalue.TagValueUtil; +import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelAssociationClass; import org.nuiton.eugene.models.object.ObjectModelAttribute; @@ -44,8 +47,6 @@ import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelPackage; import org.nuiton.eugene.models.object.ObjectModelParameter; -import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; -import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviderManagerExtension; import java.util.ArrayList; import java.util.Arrays; @@ -95,15 +96,21 @@ public class TopiaTemplateHelper { protected final ObjectModel model; - protected final TopiaTagValues topiaTagValues; + protected final TopiaCoreTagValues topiaCoreTagValues; + protected final TopiaHibernateTagValues topiaHibernateTagValues; public TopiaTemplateHelper(ObjectModel model) { this.model = model; - this.topiaTagValues = getTagValueDefinitionProvider(TopiaTagValues.class); + this.topiaCoreTagValues = getTagValueMetadatasProvider(TopiaCoreTagValues.class); + this.topiaHibernateTagValues = getTagValueMetadatasProvider(TopiaHibernateTagValues.class); } - public TopiaTagValues getTopiaTagValues() { - return topiaTagValues; + public TopiaCoreTagValues getTopiaCoreTagValues() { + return topiaCoreTagValues; + } + + public TopiaHibernateTagValues getTopiaHibernateTagValues() { + return topiaHibernateTagValues; } /** @@ -115,7 +122,7 @@ public class TopiaTemplateHelper { * @since 2.5 */ public String getPersistenceType(ObjectModelClassifier classifier) { - String tag = topiaTagValues.getPersistenceTypeTagValue(classifier); + String tag = topiaHibernateTagValues.getPersistenceTypeTagValue(classifier); if (tag == null) { tag = PERSISTENCE_TYPE_DEFAULT; } @@ -139,19 +146,16 @@ public class TopiaTemplateHelper { public String getApplicationContextPackage(ObjectModelTransformerToJava transformer, ObjectModel model) { - String result = transformer.getDefaultPackageName(); - return result; + return transformer.getDefaultPackageName(); } public String getPersistenceContextPackage(ObjectModelTransformerToJava transformer, ObjectModel model) { - String result = transformer.getDefaultPackageName(); - return result; + return transformer.getDefaultPackageName(); } public String getDaoPackage(ObjectModelTransformerToJava transformer, ObjectModel model) { - String result = transformer.getDefaultPackageName(); - return result; + return transformer.getDefaultPackageName(); } public String getParentDaoName(ObjectModel model) { @@ -237,8 +241,7 @@ public class TopiaTemplateHelper { public String getEntityPackage(ObjectModelTransformerToJava transformer, ObjectModel model, ObjectModelClassifier input) { - String result = input.getPackageName(); - return result; + return input.getPackageName(); } @@ -254,7 +257,7 @@ public class TopiaTemplateHelper { * @since 2.5 */ public String getReverseDbName(ObjectModelAttribute attr) { - String result = topiaTagValues.findDirectTagValue(TopiaTagValues.TAG_REVERSE_DB_NAME, attr); + String result = TagValueUtil.findDirectTagValue(TopiaHibernateTagValues.Store.reverseDbName, attr); if (StringUtils.isEmpty(result)) { if (attr.getReverseAttribute() != null) { result = getDbName(attr.getReverseAttribute()); @@ -276,7 +279,7 @@ public class TopiaTemplateHelper { if (element == null) { return null; } - String value = topiaTagValues.findDirectTagValue(TopiaTagValues.TAG_DB_NAME, element); + String value = topiaHibernateTagValues.getDbNameTagValue(element); if (value != null) { return value; } @@ -336,9 +339,9 @@ public class TopiaTemplateHelper { // use {@link LinkedHashSet} to keep order and prevent duplicate natural ids found Set<ObjectModelAttribute> results = - new LinkedHashSet<ObjectModelAttribute>(); + new LinkedHashSet<>(); for (ObjectModelAttribute attr : clazz.getAttributes()) { - if (topiaTagValues.getNaturalIdTagValue(attr)) { + if (topiaHibernateTagValues.getNaturalIdTagValue(attr)) { results.add(attr); } } @@ -364,7 +367,7 @@ public class TopiaTemplateHelper { // use {@link LinkedHashSet} to keep order and prevent duplicate not null found Set<ObjectModelAttribute> results = - new LinkedHashSet<ObjectModelAttribute>(); + new LinkedHashSet<>(); for (ObjectModelAttribute attr : clazz.getAttributes()) { if (isAttributeNotNull(attr)) { results.add(attr); @@ -396,10 +399,10 @@ public class TopiaTemplateHelper { * @since 2.6.9 */ public boolean isAttributeNotNull(ObjectModelAttribute attribute) { - Boolean value = topiaTagValues.getNotNullTagValue(attribute); + Boolean value = topiaHibernateTagValues.getNotNullTagValue(attribute); if (value == null) { // valeur null, donc pas positionnee - return topiaTagValues.getNaturalIdTagValue(attribute); + return topiaHibernateTagValues.getNaturalIdTagValue(attribute); } return value; } @@ -427,15 +430,15 @@ public class TopiaTemplateHelper { return type; } - private static final Set<String> numberTypes = new HashSet<String>(); + private static final Set<String> numberTypes = new HashSet<>(); - private static final Set<String> textTypes = new HashSet<String>(); + private static final Set<String> textTypes = new HashSet<>(); - private static final Set<String> booleanTypes = new HashSet<String>(); + private static final Set<String> booleanTypes = new HashSet<>(); - private static final Set<String> primitiveTypes = new HashSet<String>(); + private static final Set<String> primitiveTypes = new HashSet<>(); - private static final Map<String, String> primitiveTypeToClass = new HashMap<String, String>(); + private static final Map<String, String> primitiveTypeToClass = new HashMap<>(); private static final String VOID_TYPE = "void"; @@ -564,7 +567,7 @@ public class TopiaTemplateHelper { if (attr.hasAssociationClass()) { result = getDbName(attr.getAssociationClass()); } else { - result = topiaTagValues.getManytoManyTableNameTagValue(attr); + result = topiaHibernateTagValues.getManytoManyTableNameTagValue(attr); if (StringUtils.isEmpty(result)) { String name = attr.getName(); String revers = attr.getReverseAttributeName(); @@ -589,7 +592,7 @@ public class TopiaTemplateHelper { ObjectModelAttribute attr) { if (JavaGeneratorUtil.isOrdered(attr)) { return "list"; - } else if (EugeneStereoTypes.hasUniqueStereotype(attr)) { + } else if (EugeneCoreStereotypes.hasUniqueStereotype(attr)) { return "set"; } //attr.isOrdered() - On génère le ordered en bag @@ -606,7 +609,7 @@ public class TopiaTemplateHelper { */ public List<ObjectModelClass> getEntityClasses(ObjectModel model, boolean sort) { - List<ObjectModelClass> classes = new ArrayList<ObjectModelClass>(); + List<ObjectModelClass> classes = new ArrayList<>(); for (ObjectModelClass clazz : model.getClasses()) { if (isEntity(clazz)) { classes.add(clazz); @@ -640,11 +643,10 @@ public class TopiaTemplateHelper { */ public List<String> getImports(ObjectModelClass aClass, String... incomingFqns) { - Set<String> tmp = new HashSet<String>(); + Set<String> tmp = new HashSet<>(); tmp.addAll(Arrays.asList(incomingFqns)); getImports(aClass, tmp); - List<String> result = cleanImports(aClass.getPackageName(), tmp); - return result; + return cleanImports(aClass.getPackageName(), tmp); } /** @@ -748,7 +750,7 @@ public class TopiaTemplateHelper { fqns.removeAll(primitiveTypes); fqns.remove(VOID_TYPE); int packageLength = packageName.length(); - List<String> genericType = new ArrayList<String>(); + List<String> genericType = new ArrayList<>(); for (Iterator<String> it = fqns.iterator(); it.hasNext(); ) { String fqn = it.next(); int lastIndex = fqn.lastIndexOf("."); @@ -765,7 +767,7 @@ public class TopiaTemplateHelper { } fqns.addAll(genericType); - ArrayList<String> result = new ArrayList<String>(fqns); + ArrayList<String> result = new ArrayList<>(fqns); Collections.sort(result); return result; } @@ -778,8 +780,8 @@ public class TopiaTemplateHelper { allEntities = getEntityClasses(model, true); - allEntitiesByFQN = new TreeMap<String, ObjectModelClass>(); - usages = new LinkedHashMap<ObjectModelClass, Set<ObjectModelClass>>(); + allEntitiesByFQN = new TreeMap<>(); + usages = new LinkedHashMap<>(); // prepare usages map and fill allEntitiesByFQN map for (ObjectModelClass klass : allEntities) { @@ -865,7 +867,7 @@ public class TopiaTemplateHelper { * @param model model containing the attribute * @return {@code true} if type of attribute is an entity, * {@code false} otherwise - * @see TopiaStereoTypes#STEREOTYPE_ENTITY + * @see TopiaCoreStereoTypes.Store#entity * @since 2.7 */ public boolean isEntity(ObjectModelAttribute attribute, @@ -881,17 +883,17 @@ public class TopiaTemplateHelper { /** * Check if the given classifier has the - * {@link TopiaStereoTypes#STEREOTYPE_ENTITY} and is not an enumeration + * {@link TopiaCoreStereoTypes.Store#entity} and is not an enumeration * * @param classifier classifier to test * @return {@code true} if stereotype was found and classifier is not * enumeration, {@code false} otherwise - * @see TopiaStereoTypes#STEREOTYPE_ENTITY + * @see TopiaCoreStereoTypes.Store#entity * @since 2.5 */ public boolean isEntity(ObjectModelClassifier classifier) { ObjectModelPackage aPackage = model.getPackage(classifier); - return !classifier.isEnum() && TopiaStereoTypes.hasEntityStereotype(classifier, aPackage); + return !classifier.isEnum() && TopiaCoreStereoTypes.hasEntityStereotype(classifier, aPackage); } /** @@ -906,17 +908,17 @@ public class TopiaTemplateHelper { } /** - * Obtain the value of the {@link TopiaTagValues#TAG_INHERITANCE_STRATEGY} tag value on the given classifier. + * Obtain the value of the {@link TopiaHibernateTagValues.Store#inheritanceStrategy} tag value on the given classifier. * * @param classifier classifier to seek * @return the none empty value of the found tag value or {@code null} if not found nor empty. - * @see TopiaTagValues#TAG_INHERITANCE_STRATEGY + * @see TopiaHibernateTagValues.Store#inheritanceStrategy * @since 3.0 */ public String getInheritanceStrategy(ObjectModelClassifier classifier) { ObjectModelPackage aPackage = model.getPackage(classifier); - String value = topiaTagValues.getInheritanceStrategyTagValue(classifier, - aPackage); + String value = topiaHibernateTagValues.getInheritanceStrategyTagValue(classifier, + aPackage); if (value == null) { value = DEFAULT_INHERITANCE_STRATEGY; } @@ -925,16 +927,15 @@ public class TopiaTemplateHelper { public Class<?> getCollectionType(ObjectModelAttribute attribute) { - Class<?> collectionType = JavaGeneratorUtil.getCollectionType(attribute); - return collectionType; + return JavaGeneratorUtil.getCollectionType(attribute); } public Class<?> getCollectionInstanceType(ObjectModelAttribute attribute) { - boolean unique = EugeneStereoTypes.hasUniqueStereotype(attribute); - boolean ordered = EugeneStereoTypes.hasOrderedStereotype(attribute); - boolean orderBy = topiaTagValues.getOrderByTagValue(attribute) != null; + boolean unique = EugeneCoreStereotypes.hasUniqueStereotype(attribute); + boolean ordered = EugeneCoreStereotypes.hasOrderedStereotype(attribute); + boolean orderBy = topiaHibernateTagValues.getOrderByTagValue(attribute) != null; Class<?> result; @@ -949,11 +950,11 @@ public class TopiaTemplateHelper { } - protected <T extends TagValueDefinitionProvider> T getTagValueDefinitionProvider(Class<T> providerType) { + protected <T extends TagValueMetadatasProvider> T getTagValueMetadatasProvider(Class<T> providerType) { - TagValueDefinitionProviderManagerExtension extension = model.getExtension( - TagValueDefinitionProviderManagerExtension.OBJECTMODEL_EXTENSION, TagValueDefinitionProviderManagerExtension.class); - return extension.getTagValueDefinitionProvider(providerType); + TagValueMetadatasProviderManagerExtension extension = model.getExtension( + TagValueMetadatasProviderManagerExtension.OBJECTMODEL_EXTENSION, TagValueMetadatasProviderManagerExtension.class); + return extension.getProvider(providerType); } //--------------------------------------------------------------------------------------------------------------- diff --git a/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider b/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider new file mode 100644 index 0000000..f6e805a --- /dev/null +++ b/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider @@ -0,0 +1 @@ +org.nuiton.topia.templates.TopiaCoreStereoTypes \ No newline at end of file diff --git a/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider b/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider new file mode 100644 index 0000000..2858294 --- /dev/null +++ b/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider @@ -0,0 +1,2 @@ +org.nuiton.topia.templates.TopiaCoreTagValues +org.nuiton.topia.templates.TopiaHibernateTagValues \ No newline at end of file diff --git a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaCoreStereoTypesTest.java similarity index 59% copy from topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java copy to topia-templates/src/test/java/org/nuiton/topia/templates/TopiaCoreStereoTypesTest.java index 4a7f1d5..8350ba4 100644 --- a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java +++ b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaCoreStereoTypesTest.java @@ -26,19 +26,32 @@ package org.nuiton.topia.templates; import org.junit.Assert; import org.junit.Before; -import org.nuiton.eugene.models.stereotype.MismatchStereotypeTargetException; -import org.nuiton.eugene.models.stereotype.StereotypeNotFoundException; +import org.junit.Test; +import org.nuiton.eugene.models.extension.stereotype.MismatchStereotypeTargetException; +import org.nuiton.eugene.models.extension.stereotype.StereotypeNotFoundException; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelPackage; -public class TopiaStereoTypesTest { +public class TopiaCoreStereoTypesTest { - protected TopiaStereoTypes provider; + protected TopiaCoreStereoTypes provider; @Before public void setUp() throws Exception { - provider = new TopiaStereoTypes(); - provider.init(); + provider = new TopiaCoreStereoTypes(); } + @Test + public void test() { + + validate(TopiaCoreStereoTypes.Store.entity.name(), true, ObjectModelPackage.class, ObjectModelClassifier.class); + validate(TopiaCoreStereoTypes.Store.entity.name(), false, ObjectModel.class, ObjectModelAttribute.class); + + validate(TopiaCoreStereoTypes.Store.entity.name() + System.nanoTime(), false, ObjectModelPackage.class, ObjectModelClassifier.class); + + } protected void validate(String name, boolean expected, Class<?>... types) { for (Class<?> type : types) { diff --git a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaCoreTagValuesTest.java similarity index 76% copy from topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java copy to topia-templates/src/test/java/org/nuiton/topia/templates/TopiaCoreTagValuesTest.java index e91fb77..310ec90 100644 --- a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java +++ b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaCoreTagValuesTest.java @@ -27,28 +27,25 @@ package org.nuiton.topia.templates; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.nuiton.eugene.models.extension.tagvalue.MismatchTagValueTargetException; +import org.nuiton.eugene.models.extension.tagvalue.TagValueNotFoundException; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; import org.nuiton.eugene.models.object.xml.ObjectModelImpl; import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; -import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException; -import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException; -public class TopiaTagValuesTest { +public class TopiaCoreTagValuesTest { - protected TopiaTagValues provider; + protected TopiaCoreTagValues provider; @Before public void setUp() throws Exception { - provider = new TopiaTagValues(); - provider.init(); + provider = new TopiaCoreTagValues(); } @Test public void testDefaultValues() { - Assert.assertEquals("union-subclass", provider.getInheritanceStrategyTagValue(new ObjectModelClassImpl(), new ObjectModelPackageImpl())); Assert.assertEquals(true, provider.getNotGenerateToStringTagValue(new ObjectModelClassImpl(), new ObjectModelPackageImpl(), new ObjectModelImpl())); - Assert.assertEquals(true, provider.getIndexForeignKeysTagValue(new ObjectModelAttributeImpl(), new ObjectModelPackageImpl(), new ObjectModelImpl())); } protected void validate(String name, boolean expected, Class<?>... types) { diff --git a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaHibernateTagValuesTest.java similarity index 82% copy from topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java copy to topia-templates/src/test/java/org/nuiton/topia/templates/TopiaHibernateTagValuesTest.java index e91fb77..bbb2907 100644 --- a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java +++ b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaHibernateTagValuesTest.java @@ -27,27 +27,25 @@ package org.nuiton.topia.templates; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.nuiton.eugene.models.extension.tagvalue.MismatchTagValueTargetException; +import org.nuiton.eugene.models.extension.tagvalue.TagValueNotFoundException; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; import org.nuiton.eugene.models.object.xml.ObjectModelImpl; import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; -import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException; -import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException; -public class TopiaTagValuesTest { +public class TopiaHibernateTagValuesTest { - protected TopiaTagValues provider; + protected TopiaHibernateTagValues provider; @Before public void setUp() throws Exception { - provider = new TopiaTagValues(); - provider.init(); + provider = new TopiaHibernateTagValues(); } @Test public void testDefaultValues() { Assert.assertEquals("union-subclass", provider.getInheritanceStrategyTagValue(new ObjectModelClassImpl(), new ObjectModelPackageImpl())); - Assert.assertEquals(true, provider.getNotGenerateToStringTagValue(new ObjectModelClassImpl(), new ObjectModelPackageImpl(), new ObjectModelImpl())); Assert.assertEquals(true, provider.getIndexForeignKeysTagValue(new ObjectModelAttributeImpl(), new ObjectModelPackageImpl(), new ObjectModelImpl())); } diff --git a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java index 4a7f1d5..b1ae836 100644 --- a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java +++ b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaStereoTypesTest.java @@ -29,6 +29,7 @@ import org.junit.Before; import org.nuiton.eugene.models.stereotype.MismatchStereotypeTargetException; import org.nuiton.eugene.models.stereotype.StereotypeNotFoundException; +@Deprecated public class TopiaStereoTypesTest { protected TopiaStereoTypes provider; diff --git a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java index e91fb77..75d5d86 100644 --- a/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java +++ b/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaTagValuesTest.java @@ -34,6 +34,7 @@ import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; import org.nuiton.eugene.models.tagvalue.MismatchTagValueTargetException; import org.nuiton.eugene.models.tagvalue.TagValueNotFoundException; +@Deprecated public class TopiaTagValuesTest { protected TopiaTagValues provider; -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.