Author: tchemit Date: 2014-04-26 19:39:39 +0200 (Sat, 26 Apr 2014) New Revision: 3082 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3082 Log: fixes 3177: Use eugene 2.9 new Stereotype and TagValue API fixes #3178: Improve tagValue to change hibernate mapping type for attributes Added: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaModelPropertiesProvider.java trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider Removed: trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider Modified: trunk/pom.xml trunk/topia-templates/src/main/java/org/nuiton/topia/templates/BinderHelperTransformer.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DAOHelperTransformer.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DTOTransformer.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDTOTransformer.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java trunk/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaModelPropertiesProviderTest.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/pom.xml 2014-04-26 17:39:39 UTC (rev 3082) @@ -237,7 +237,7 @@ <relativizeDecorationLinks>false</relativizeDecorationLinks> <!-- libs version --> - <eugeneVersion>2.8</eugeneVersion> + <eugeneVersion>2.9-SNAPSHOT</eugeneVersion> <nuitonUtilsVersion>3.0-rc-2</nuitonUtilsVersion> <nuitonCsvVersion>3.0-rc-1</nuitonCsvVersion> <nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion> Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/BinderHelperTransformer.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/BinderHelperTransformer.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/BinderHelperTransformer.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -71,7 +71,7 @@ return; } - String packageName = getOutputProperties().getProperty(PROP_DEFAULT_PACKAGE); + String packageName = getDefaultPackageName(); String modelName = model.getName(); String binderHelperClazzName = modelName + "BinderHelper"; String daoHelperClazzName = modelName + "DAOHelper"; Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DAOHelperTransformer.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DAOHelperTransformer.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DAOHelperTransformer.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -68,8 +68,7 @@ @Override public void transformFromModel(ObjectModel model) { - String packageName = - getOutputProperties().getProperty(PROP_DEFAULT_PACKAGE); + String packageName = getDefaultPackageName(); String modelName = model.getName(); String daoHelperClazzName = modelName + "DAOHelper"; String entityEnumName = modelName + "EntityEnum"; Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DTOTransformer.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DTOTransformer.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/DTOTransformer.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -31,6 +31,7 @@ import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.metas.TagValues; import org.nuiton.eugene.models.object.*; import java.beans.PropertyChangeListener; @@ -96,7 +97,8 @@ protected void addAttributes(ObjectModelClass result, ObjectModelClass clazz) { - String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model); +// String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model); + String svUID = TagValues.findTagValue("dto-serialVersionUID", clazz, model); if (StringUtils.isNotEmpty(svUID)) { addAttribute(result, "serialVersionUID", long.class, svUID, ObjectModelJavaModifier.FINAL, ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC); } Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDTOTransformer.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDTOTransformer.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDTOTransformer.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -28,6 +28,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.metas.TagValues; import org.nuiton.eugene.models.object.ObjectModelAssociationClass; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; @@ -97,7 +98,8 @@ protected void addAttributes(ObjectModelClass result, ObjectModelClass clazz) { - String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model); +// String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model); + String svUID = TagValues.findTagValue("dto-serialVersionUID", clazz, model); if (svUID != null) { addAttribute(result, "serialVersionUID", "long", svUID, ObjectModelJavaModifier.FINAL, ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.STATIC); } Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityDaoTransformer.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -108,8 +108,7 @@ entityEnumName = modelName + "EntityEnum"; - String packageName = - getOutputProperties().getProperty(PROP_DEFAULT_PACKAGE); + String packageName = getDefaultPackageName(); entityEnumPackage = packageName + "." + entityEnumName; @@ -489,8 +488,7 @@ StringBuilder body = new StringBuilder(); String modelName = StringUtils.capitalize(model.getName()); - String providerFQN = getOutputProperties().getProperty( - PROP_DEFAULT_PACKAGE) + '.' + modelName + + String providerFQN = getDefaultPackageName() + '.' + modelName + "DAOHelper.getImplementationClass"; body.append("" Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityHibernateMappingGenerator.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -283,9 +283,9 @@ if (!TopiaGeneratorUtil.isNMultiplicity(attr)) { if (attr.getClassifier() != null && TopiaGeneratorUtil.isEntity(attr.getClassifier())) { if (TopiaGeneratorUtil.isNMultiplicity(attr.getReverseMaxMultiplicity()) && !attr.hasAssociationClass()) { - generateHibernateManyToOne(output, attr, prefix); + generateHibernateManyToOne(output, clazz,attr, prefix); } else { - generateHibernateOneToOne(output, attr, prefix); + generateHibernateOneToOne(output, clazz,attr, prefix); } } else { generateHibernateProperty(output, clazz, attr, prefix); @@ -293,9 +293,9 @@ } else { if (attr.getClassifier() != null && TopiaGeneratorUtil.isEntity(attr.getClassifier())) { if (TopiaGeneratorUtil.isNMultiplicity(attr.getReverseMaxMultiplicity()) && !attr.hasAssociationClass()) { - generateHibernateManyToMany(output, attr, prefix); + generateHibernateManyToMany(output, clazz,attr, prefix); } else { - generateHibernateOneToMany(output, attr, prefix); + generateHibernateOneToMany(output, clazz,attr, prefix); } } else { generateHibernateMany(output, clazz, attr, prefix); @@ -319,7 +319,7 @@ // String notNull = " " + generateFromTagValue(HIBERNATE_ATTRIBUTE_NOT_NULL, TopiaGeneratorUtil.getNotNullTagValue(attr)); 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(attr, true); + String attrType = getType(clazz, attr, true); String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, TopiaGeneratorUtil.getLazyTagValue(attr)); String attrColumn = TopiaGeneratorUtil.getDbName(attr); /*{<%=prefix%> <many-to-one name="<%=attrName%>" class="<%=attrType%>" <%=lazy%>column="<%=attrColumn%>" node="<%=attrName%>/@topiaId" <%=notNull%>/> @@ -355,44 +355,74 @@ return result; } - protected String getType(ObjectModelAttribute attr) { - return getType(attr, false); + protected String getType(ObjectModelClass clazz, ObjectModelAttribute attr) { + return getType(clazz, attr, false); } - protected String getType(ObjectModelAttribute attr, boolean isAssoc) { + protected String getType(ObjectModelClass clazz, ObjectModelAttribute attr, boolean isAssoc) { + if (attr.hasAssociationClass() && !isAssoc) { + String type = attr.getAssociationClass().getQualifiedName(); + return TopiaGeneratorUtil.getDOType(type, model); + } + String type = attr.getType(); - String attrType = TopiaGeneratorUtil.getTypeTagValue(attr); + String attrType = TopiaGeneratorUtil.getHibernateAttributeType(attr, clazz, model); if (StringUtils.isNotEmpty(attrType)) { - // tag value detected of the attribute type = attrType; } else { - String modelType = model.getTagValue(type); - if (StringUtils.isNotEmpty(modelType)) { + // old code + attrType = TopiaGeneratorUtil.getTypeTagValue(attr); + if (StringUtils.isNotEmpty(attrType)) { - // tag value detected of the model + // tag value detected of the attribute + if (log.isWarnEnabled()) { + String deprecatedTagName = clazz.getQualifiedName() + ".attribute." + + attr.getName() + ".tagValue." + TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE + + "." + type; + String tagName = clazz.getQualifiedName() + ".attribute." + + attr.getName() + ".tagValue." + TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE + + "." + type; + log.warn("---------"); + log.warn("You are using a deprecated tagValue (" + deprecatedTagName + "), replace it by"); + log.warn(tagName + "=" + attrType); + } + type = attrType; + } else { - //TODO tchemit 20100507 Explain What todes it do ? Dont understand the story of columnNamesMap - int bracketIndex = modelType.indexOf('('); - if (bracketIndex != -1) { - type = modelType.substring(0, bracketIndex); - int bracketEndIndex = modelType.indexOf(')', bracketIndex + 1); - String colmunList; - if (bracketEndIndex != -1) { - colmunList = modelType.substring(bracketIndex + 1, bracketEndIndex); + String modelType = model.getTagValue(type); + if (StringUtils.isNotEmpty(modelType)) { + + // tag value detected of the model + String deprecatedTagName = "model.tagValue." + type; + String tagName = "model.tagValue." + TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE + + "." + type; + log.warn("---------"); + log.warn("You are using a deprecated tagValue ("+deprecatedTagName+"), replace it by"); + log.warn(tagName + "=" + modelType); + //TODO tchemit 20100507 Explain What todes it do ? Dont understand the story of columnNamesMap + int bracketIndex = modelType.indexOf('('); + if (bracketIndex != -1) { + type = modelType.substring(0, bracketIndex); + int bracketEndIndex = modelType.indexOf(')', bracketIndex + 1); + String colmunList; + if (bracketEndIndex != -1) { + colmunList = modelType.substring(bracketIndex + 1, bracketEndIndex); + } else { + colmunList = modelType.substring(bracketIndex); + } + columnNamesMap.put(type, colmunList.split(",")); } else { - colmunList = modelType.substring(bracketIndex); + type = modelType; } - columnNamesMap.put(type, colmunList.split(",")); - } else { - type = modelType; } } } - if (attr.hasAssociationClass() && !isAssoc) { - type = attr.getAssociationClass().getQualifiedName(); - } + +// if (attr.hasAssociationClass() && !isAssoc) { +// type = attr.getAssociationClass().getQualifiedName(); +// } return TopiaGeneratorUtil.getDOType(type, model); } @@ -400,7 +430,7 @@ ObjectModelClass clazz, ObjectModelAttribute attr, String prefix) throws IOException { - String attrType = getType(attr); + String attrType = getType(clazz, attr); String accessField = "field"; String tagValue = TopiaGeneratorUtil.getAccessTagValue(attr); @@ -556,6 +586,7 @@ } protected void generateHibernateOneToOne(Writer output, + ObjectModelClass clazz, ObjectModelAttribute attr, String prefix) throws IOException { // boolean accessField = hasUnidirectionalRelationOnAbstractType(attr.getReverseAttribute(), model); @@ -566,11 +597,12 @@ // but if it is one-to-zero-or-one unique contraints is violated // with null values boolean unique = TopiaGeneratorUtil.isOneMultiplicity(attr); - generateHibernateManyToOne(output, attr, unique, prefix); + generateHibernateManyToOne(output, clazz, attr, unique, prefix); } protected void generateHibernateOneToMany(Writer output, + ObjectModelClass clazz, ObjectModelAttribute attr, String prefix) throws IOException { boolean needsIndex = JavaGeneratorUtil.isOrdered(attr); @@ -578,7 +610,7 @@ isInverse |= hasUnidirectionalRelationOnAbstractType(attr, model); String attrName = getName(attr); // ??? - String attrType = getType(attr); + String attrType = getType(clazz, attr); String reverseAttrDBName = TopiaGeneratorUtil.getReverseDbName(attr); String orderBy = generateFromTagValue(HIBERNATE_ATTRIBUTE_ORDER_BY, TopiaGeneratorUtil.getOrderByTagValue(attr)); @@ -644,7 +676,7 @@ String prefix) throws IOException { boolean needsIndex = JavaGeneratorUtil.isOrdered(attr); String attrName = getName(attr); - String attrType = getType(attr); + String attrType = getType(clazz, attr); String collType = TopiaGeneratorUtil.getNMultiplicityHibernateType(attr); String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, TopiaGeneratorUtil.getLazyTagValue(attr)); String attrColumn = TopiaGeneratorUtil.getDbName(attr); @@ -685,17 +717,19 @@ } protected void generateHibernateManyToOne(Writer output, + ObjectModelClass clazz, ObjectModelAttribute attr, String prefix) throws IOException { - generateHibernateManyToOne(output, attr, false, prefix); + generateHibernateManyToOne(output, clazz, attr, false, prefix); } protected void generateHibernateManyToOne(Writer output, + ObjectModelClass clazz, ObjectModelAttribute attr, boolean isUnique, String prefix) throws IOException { String attrName = getName(attr); - String attrType = getType(attr); + String attrType = getType(clazz, attr); String attrColumn = TopiaGeneratorUtil.getDbName(attr); /*{<%=prefix%> <many-to-one name="<%=attrName%>" class="<%=attrType%>" column="<%=attrColumn%>" }*/ if (attr.isComposite() || attr.hasAssociationClass()) { @@ -722,6 +756,7 @@ } protected void generateHibernateManyToMany(Writer output, + ObjectModelClass clazz, ObjectModelAttribute attr, String prefix) throws IOException { // On ne met le inverse="true" uniquement pour un seul coté de la relation. @@ -751,7 +786,7 @@ cascade = " cascade=\"delete,delete-orphan\""; } - String attrType = getType(attr); + String attrType = getType(clazz, attr); String attrName = getName(attr); String attrColumn = TopiaGeneratorUtil.getDbName(attr); String lazy = generateFromTagValue(HIBERNATE_ATTRIBUTE_LAZY, TopiaGeneratorUtil.getLazyTagValue(attr), "true"); Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/EntityTransformer.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -31,6 +31,7 @@ import org.nuiton.eugene.EugeneTagValues; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.metas.TagValues; import org.nuiton.eugene.models.object.ObjectModelAssociationClass; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; @@ -210,10 +211,8 @@ ObjectModelClass ouput) { // serialVersionUID - String svUID = TopiaGeneratorUtil.findTagValue(TopiaGeneratorUtil.SERIAL_VERSION_UID, - input, - model - ); +// String svUID = TopiaGeneratorUtil.findTagValue(TopiaGeneratorUtil.SERIAL_VERSION_UID, input, model); + String svUID = TagValues.findTagValue(TopiaGeneratorUtil.SERIAL_VERSION_UID, input, model); if (svUID == null) { // use a default one Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaGeneratorUtil.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -31,9 +31,9 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.AbstractGenerator; import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.ModelPropertiesUtil; import org.nuiton.eugene.java.JavaGeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.metas.TagValues; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelAssociationClass; import org.nuiton.eugene.models.object.ObjectModelAttribute; @@ -101,22 +101,6 @@ public static final String DEFAULT_INHERITANCE_STRATEGY = "union-subclass"; /** - * The Eugene provider of tag values and stereotypes. - * - * @author tchemit <chemit@codelutin.com> - * @plexus.component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" role-hint="topia" - * @since 2.3 - */ - public static class TopiaModelPropertiesProvider extends ModelPropertiesUtil.ModelPropertiesProvider { - - @Override - public void init() throws IllegalAccessException { - scanStereotypeClass(TopiaStereoTypes.class); - scanTagValueClass(TopiaTagValues.class); - } - } - - /** * Renvoie le package par défaut pour le générateur donné * * @param generator le générateur donné @@ -1238,7 +1222,8 @@ * @since 2.5 */ public static String getPersistenceTypeTagValue(ObjectModelClassifier classifier) { - String value = findTagValue(TopiaTagValues.TAG_PERSISTENCE_TYPE, classifier, null); +// String value = findTagValue(TopiaTagValues.TAG_PERSISTENCE_TYPE, classifier, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_PERSISTENCE_TYPE, classifier); return value; } @@ -1252,7 +1237,8 @@ * @since 3.0 */ public static String getInheritanceStrategyTagValue(ObjectModelClassifier classifier) { - String value = findTagValue(TopiaTagValues.TAG_INHERITANCE_STRATEGY, classifier, null); +// String value = findTagValue(TopiaTagValues.TAG_INHERITANCE_STRATEGY, classifier, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_INHERITANCE_STRATEGY, classifier); if (value == null) { value = DEFAULT_INHERITANCE_STRATEGY; } @@ -1269,7 +1255,8 @@ * @since 2.5 */ public static String getDbNameTagValue(ObjectModelElement element) { - String value = findTagValue(TopiaTagValues.TAG_DB_NAME, element, null); +// String value = findTagValue(TopiaTagValues.TAG_DB_NAME, element, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_DB_NAME, element); return value; } @@ -1284,7 +1271,8 @@ * @since 2.5 */ public static String getDbSchemaNameTagValue(ObjectModelClassifier classifier, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_SCHEMA_NAME, classifier, model); +// String value = findTagValue(TopiaTagValues.TAG_SCHEMA_NAME, classifier, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_SCHEMA_NAME, classifier, model); return value; } @@ -1299,7 +1287,8 @@ * @since 2.5 */ public static String getDbSchemaNameTagValue(ObjectModelAttribute attribute, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_SCHEMA_NAME, attribute, model); +// String value = findTagValue(TopiaTagValues.TAG_SCHEMA_NAME, attribute, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_SCHEMA_NAME, attribute, model); return value; } @@ -1313,7 +1302,8 @@ * @since 2.5 */ public static String getLengthTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_LENGTH, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_LENGTH, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_LENGTH, attribute); return value; } @@ -1327,7 +1317,8 @@ * @since 2.5 */ public static String getAnnotationTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_ANNOTATION, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_ANNOTATION, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_ANNOTATION, attribute); return value; } @@ -1341,7 +1332,8 @@ * @since 2.5 */ public static String getAccessTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_ACCESS, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_ACCESS, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_ACCESS, attribute); return value; } @@ -1355,7 +1347,8 @@ * @since 2.5 */ public static String getNaturalIdTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_NATURAL_ID, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_NATURAL_ID, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_NATURAL_ID, attribute); return value; } @@ -1369,7 +1362,8 @@ * @since 2.5 */ public static String getNaturalIdMutableTagValue(ObjectModelClassifier classifier) { - String value = findTagValue(TopiaTagValues.TAG_NATURAL_ID_MUTABLE, classifier, null); +// String value = findTagValue(TopiaTagValues.TAG_NATURAL_ID_MUTABLE, classifier, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_NATURAL_ID_MUTABLE, classifier); return value; } @@ -1383,7 +1377,8 @@ * @since 2.5 */ public static String getInverseTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_INVERSE, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_INVERSE, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_INVERSE, attribute); return value; } @@ -1397,7 +1392,8 @@ * @since 2.5 */ public static String getLazyTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_LAZY, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_LAZY, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_LAZY, attribute); return value; } @@ -1411,7 +1407,8 @@ * @since 2.5 */ public static String getFetchTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_FETCH, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_FETCH, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_FETCH, attribute); return value; } @@ -1425,7 +1422,8 @@ * @since 2.5 */ public static String getOrderByTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_ORDER_BY, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_ORDER_BY, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_ORDER_BY, attribute); return value; } @@ -1439,7 +1437,8 @@ * @since 2.5 */ public static String getNotNullTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_NOT_NULL, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_NOT_NULL, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_NOT_NULL, attribute); return value; } @@ -1454,7 +1453,8 @@ * @since 2.5 */ public static String getProxyInterfaceTagValue(ObjectModelClassifier classifier, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_PROXY_INTERFACE, classifier, model); +// String value = findTagValue(TopiaTagValues.TAG_PROXY_INTERFACE, classifier, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_PROXY_INTERFACE, classifier, model); return value; } @@ -1469,7 +1469,8 @@ * @since 2.5 */ public static String getNotGenerateToStringTagValue(ObjectModelClassifier clazz, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_NOT_GENERATE_TO_STRING, clazz, model); +// String value = findTagValue(TopiaTagValues.TAG_NOT_GENERATE_TO_STRING, clazz, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_NOT_GENERATE_TO_STRING, clazz, model); return value; } @@ -1484,7 +1485,8 @@ * @since 2.5 */ public static String getSortAttributeTagValue(ObjectModelClassifier classifier, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_SORT_ATTRIBUTE, classifier, model); +// String value = findTagValue(TopiaTagValues.TAG_SORT_ATTRIBUTE, classifier, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_SORT_ATTRIBUTE, classifier, model); return value; } @@ -1497,7 +1499,8 @@ * @since 2.5 */ public static String getGenerateOperatorForDAOHelperTagValue(ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_GENERATE_OPERATOR_FOR_DAO_HELPER, null, model); +// String value = findTagValue(TopiaTagValues.TAG_GENERATE_OPERATOR_FOR_DAO_HELPER, null, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_GENERATE_OPERATOR_FOR_DAO_HELPER, model); return value; } @@ -1509,12 +1512,21 @@ * @return the none empty value of the found tag value or {@code null} if not found nor empty. * @see TopiaTagValues#TAG_TYPE * @since 2.5 + * @deprecated since 3.0, use now {@link #getHibernateAttributeType(ObjectModelAttribute, ObjectModelClassifier, ObjectModel)} */ + @Deprecated public static String getTypeTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_TYPE, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_TYPE, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_TYPE, attribute); return value; } + public static String getHibernateAttributeType(ObjectModelAttribute attribute, ObjectModelClassifier classifier, ObjectModel model) { + String tagValueName = TopiaTagValues.TAG_HIBERNATE_ATTRIBUTE_TYPE + "." + attribute.getType(); + String value = TagValues.findTagValue(tagValueName, attribute, classifier, model); + return value; + } + /** * Obtain the value of the {@link TopiaTagValues#TAG_SQL_TYPE} * tag value on the given attribute. @@ -1525,7 +1537,8 @@ * @since 2.5 */ public static String getSqlTypeTagValue(ObjectModelAttribute attribute) { - String value = findTagValue(TopiaTagValues.TAG_SQL_TYPE, attribute, null); +// String value = findTagValue(TopiaTagValues.TAG_SQL_TYPE, attribute, null); + String value = TagValues.findTagValue(TopiaTagValues.TAG_SQL_TYPE, attribute); return value; } @@ -1540,7 +1553,8 @@ * @since 2.5 */ public static String getDaoImplementationTagValue(ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_DAO_IMPLEMENTATION, null, model); +// String value = findTagValue(TopiaTagValues.TAG_DAO_IMPLEMENTATION, null, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_DAO_IMPLEMENTATION, model); return value; } @@ -1556,18 +1570,21 @@ * @since 2.6.5 */ public static String getIndexForeignKeys(ObjectModelAttribute attribute, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_INDEX_FOREIGN_KEYS, attribute, model); +// String value = findTagValue(TopiaTagValues.TAG_INDEX_FOREIGN_KEYS, attribute, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_INDEX_FOREIGN_KEYS, attribute, model); return value; } //TODO Javadoc public static boolean hasUseEnumerationNameTagValue(ObjectModelClassifier classifier, ObjectModelAttribute attr, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_USE_ENUMERATION_NAME, classifier, model); - if (value == null) { - // try on attribute - value = findTagValue(TopiaTagValues.TAG_USE_ENUMERATION_NAME, attr, null); - } - return Boolean.parseBoolean(value); +// String value = findTagValue(TopiaTagValues.TAG_USE_ENUMERATION_NAME, classifier, model); +// if (value == null) { +// // try on attribute +// value = findTagValue(TopiaTagValues.TAG_USE_ENUMERATION_NAME, attr); +// } +// return Boolean.parseBoolean(value); + boolean value = TagValues.findBooleanTagValue(TopiaTagValues.TAG_USE_ENUMERATION_NAME, attr, classifier, model); + return value; } /** @@ -1581,9 +1598,11 @@ * @since 2.6.7 */ public static boolean shouldGenerateDTOTopiaIdTagValue(ObjectModelClassifier classifier, ObjectModel model) { - String tagValue = findTagValue(TopiaTagValues.TAG_GENERATE_TOPIA_ID_IN_DTO, classifier, model); - boolean generate = StringUtils.isNotEmpty(tagValue) && Boolean.valueOf(tagValue); - return generate; +// String tagValue = findTagValue(TopiaTagValues.TAG_GENERATE_TOPIA_ID_IN_DTO, classifier, model); +// boolean generate = StringUtils.isNotEmpty(tagValue) && Boolean.valueOf(tagValue); +// return generate; + boolean value = TagValues.findBooleanTagValue(TopiaTagValues.TAG_GENERATE_TOPIA_ID_IN_DTO, classifier, model); + return value; } /** @@ -1596,7 +1615,8 @@ * @since 3.0 */ public static String getPersistenceContextSuperClassTagValue(ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_PERSISTENCE_CONTEXT_SUPER_CLASS, null, model); +// String value = findTagValue(TopiaTagValues.TAG_PERSISTENCE_CONTEXT_SUPER_CLASS, null, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_PERSISTENCE_CONTEXT_SUPER_CLASS, model); return value; } @@ -1610,7 +1630,8 @@ * @since 3.0 */ public static String getApplicationContextSuperClassTagValue(ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_APPLICATION_CONTEXT_SUPER_CLASS, null, model); +// String value = findTagValue(TopiaTagValues.TAG_APPLICATION_CONTEXT_SUPER_CLASS, null, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_APPLICATION_CONTEXT_SUPER_CLASS, model); return value; } @@ -1624,7 +1645,8 @@ * @since 3.0 */ public static String getDaoSuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_DAO_SUPER_CLASS, classifier, model); +// String value = findTagValue(TopiaTagValues.TAG_DAO_SUPER_CLASS, classifier, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_DAO_SUPER_CLASS, classifier, model); return value; } @@ -1638,7 +1660,8 @@ * @since 3.0 */ public static String getEntitySuperClassTagValue(ObjectModelClassifier classifier, ObjectModel model) { - String value = findTagValue(TopiaTagValues.TAG_ENTITY_SUPER_CLASS, classifier, model); +// String value = findTagValue(TopiaTagValues.TAG_ENTITY_SUPER_CLASS, classifier, model); + String value = TagValues.findTagValue(TopiaTagValues.TAG_ENTITY_SUPER_CLASS, classifier, model); return value; } Added: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaModelPropertiesProvider.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaModelPropertiesProvider.java (rev 0) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaModelPropertiesProvider.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -0,0 +1,19 @@ +package org.nuiton.topia.templates; + +import org.nuiton.eugene.metas.ModelPropertiesProvider; + +/** + * The ToPIA provider of tag values and stereotypes. + * + * @author tchemit <chemit@codelutin.com> + * @plexus.component role="org.nuiton.eugene.metas.ModelPropertiesProvider" role-hint="topia" + * @since 2.3 + */ +public class TopiaModelPropertiesProvider extends ModelPropertiesProvider { + + @Override + public void init() throws IllegalAccessException { + scanStereotypeClass(TopiaStereoTypes.class); + scanTagValueClass(TopiaTagValues.class); + } +} Property changes on: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaModelPropertiesProvider.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaStereoTypes.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -29,7 +29,7 @@ import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelOperation; -import static org.nuiton.eugene.ModelPropertiesUtil.StereotypeDefinition; +import org.nuiton.eugene.metas.StereotypeDefinition; /** * All extra stereotypes usable in topia generators. Modified: trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java =================================================================== --- trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/java/org/nuiton/topia/templates/TopiaTagValues.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -33,7 +33,7 @@ import org.nuiton.topia.persistence.TopiaDaoSupplier; import org.nuiton.topia.persistence.TopiaEntityContextable; -import static org.nuiton.eugene.ModelPropertiesUtil.TagValueDefinition; +import org.nuiton.eugene.metas.TagValueDefinition; /** * All extra tag values usable in topia generators. @@ -272,7 +272,10 @@ * * @see TopiaGeneratorUtil#getTypeTagValue(ObjectModelAttribute) * @since 2.5 + * @deprecated since 3.0, use now {@link #TAG_HIBERNATE_ATTRIBUTE_TYPE} which + * permits to deal the same thing but at also model and classifier scope. */ + @Deprecated @TagValueDefinition(target = {ObjectModelAttribute.class}, documentation = "Sets the hibernate type of an attribute (Hibernate mapping)") String TAG_TYPE = "type"; @@ -380,4 +383,29 @@ @TagValueDefinition(target = {ObjectModelClassifier.class, ObjectModel.class}, documentation = "Change the super class to use when generating Entity.") String TAG_ENTITY_SUPER_CLASS = "entitySuperClass"; + + /** + * 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 TopiaGeneratorUtil#getHibernateAttributeType(ObjectModelAttribute, ObjectModelClassifier, ObjectModel) + * @since 3.0 + */ + @TagValueDefinition(target = {ObjectModelAttribute.class, ObjectModelClassifier.class, ObjectModel.class}, + documentation = "Change the super class to use when generating Entity.") + String TAG_HIBERNATE_ATTRIBUTE_TYPE = "hibernateAttributeType"; + } Deleted: trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider =================================================================== --- trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider 2014-04-26 17:39:39 UTC (rev 3082) @@ -1 +0,0 @@ -org.nuiton.topia.templates.TopiaGeneratorUtil$TopiaModelPropertiesProvider \ No newline at end of file Copied: trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider (from rev 3080, trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider) =================================================================== --- trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider (rev 0) +++ trunk/topia-templates/src/main/resources/META-INF/services/org.nuiton.eugene.metas.ModelPropertiesProvider 2014-04-26 17:39:39 UTC (rev 3082) @@ -0,0 +1 @@ +org.nuiton.topia.templates.TopiaModelPropertiesProvider \ No newline at end of file Modified: trunk/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaModelPropertiesProviderTest.java =================================================================== --- trunk/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaModelPropertiesProviderTest.java 2014-04-25 13:31:15 UTC (rev 3081) +++ trunk/topia-templates/src/test/java/org/nuiton/topia/templates/TopiaModelPropertiesProviderTest.java 2014-04-26 17:39:39 UTC (rev 3082) @@ -27,23 +27,23 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.nuiton.eugene.ModelPropertiesUtil; +import org.nuiton.eugene.metas.ModelPropertiesProvider; import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelOperation; /** - * To test {@link TopiaGeneratorUtil.TopiaModelPropertiesProvider}. + * To test {@link TopiaModelPropertiesProvider}. * * @author tchemit <chemit@codelutin.com> * @since 2.3 */ public class TopiaModelPropertiesProviderTest { - protected ModelPropertiesUtil.ModelPropertiesProvider provider; + protected ModelPropertiesProvider provider; @Before public void setUp() throws Exception { - provider = new TopiaGeneratorUtil.TopiaModelPropertiesProvider(); + provider = new TopiaModelPropertiesProvider(); provider.init(); }