Package org.nuiton.topia.templates
Class TopiaTemplateHelper
java.lang.Object
org.nuiton.topia.templates.TopiaTemplateHelper
Classe regroupant divers méthodes utiles pour la génération des entités.
Remplace
TopiageneratorUtil car on ne veut plus utiliser de méthodes
statiques (par exemple pour avoir les valeurs par défaut des tagValues,...).
Created on 7/6/14.- Since:
- 3.0
- Author:
- Tony Chemit - chemit@codelutin.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal StringStratégie d'heritage par defaut.final StringLe package par défaut si aucun n'est spécifiéprotected final org.nuiton.eugene.EugeneCoreTagValuesprotected final org.nuiton.eugene.models.object.ObjectModelfinal Comparator<org.nuiton.eugene.models.object.ObjectModelClass>final StringType de persistence par défaut (si aucun précisé)final StringType de persistence Hibernatefinal StringPropriété des générateurs indiquant le package par défautprotected final TopiaCoreTagValuesprotected final TopiaHibernateTagValues -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncleanImports(String packageName, Set<String> fqns) Clean a set of fqns, transform it into aListand sort it.getAbstractDaoFqn(org.nuiton.eugene.models.object.ObjectModelClass input) getAbstractDaoName(org.nuiton.eugene.models.object.ObjectModelClass input) getApplicationContextAbstractName(org.nuiton.eugene.models.object.ObjectModel model) getApplicationContextConcreteName(org.nuiton.eugene.models.object.ObjectModel model) getApplicationContextInterfaceName(org.nuiton.eugene.models.object.ObjectModel model) getApplicationContextPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) getClassForPrimitiveType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Class<?>getCollectionInstanceType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) Class<?>getCollectionType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) getConcreteDaoFqn(org.nuiton.eugene.models.object.ObjectModelClass input) getConcreteDaoName(org.nuiton.eugene.models.object.ObjectModelClass input) getContractDaoName(org.nuiton.eugene.models.object.ObjectModelClass input) getDaoPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) getDaoSupplierInterfaceName(org.nuiton.eugene.models.object.ObjectModel model) getDaoSupplierName(org.nuiton.eugene.models.object.ObjectModel model) getDbName(org.nuiton.eugene.models.object.ObjectModelElement element) Renvoie le nom BD de l'élement passé en paramètre.getDefaultPackage(org.nuiton.eugene.AbstractGenerator<?> generator) Renvoie le package par défaut pour le générateur donnégetDOType(org.nuiton.eugene.models.object.ObjectModelElement elem, org.nuiton.eugene.models.object.ObjectModel model) getEntityAbstractName(org.nuiton.eugene.models.object.ObjectModelClass input) List<org.nuiton.eugene.models.object.ObjectModelClass>getEntityClasses(org.nuiton.eugene.models.object.ObjectModel model, boolean sort) Obtain the list of entities classes with the possibility to sort the result.getEntityConcreteName(org.nuiton.eugene.models.object.ObjectModelClass input) getEntityEnumName(org.nuiton.eugene.models.object.ObjectModel model) getEntityPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model, org.nuiton.eugene.models.object.ObjectModelClassifier input) getGeneratedDaoFqn(org.nuiton.eugene.models.object.ObjectModelClass input) getGeneratedDaoName(org.nuiton.eugene.models.object.ObjectModelClass input) getImports(org.nuiton.eugene.models.object.ObjectModelClass aClass, String... incomingFqns) Obtain the list of fqn of object involed in the given class.voidgetImports(org.nuiton.eugene.models.object.ObjectModelClass aClass, Set<String> fqns) Obtain the list of fqn of object involed in the given class.voidgetImports(org.nuiton.eugene.models.object.ObjectModelInterface anInterface, Set<String> fqns) Obtain the list of fqn of object involed in the given interface.voidgetImports(org.nuiton.eugene.models.object.ObjectModelOperation operation, Set<String> fqns) Obtain the fqn's list of all involed type in a givne operation.getInheritanceStrategy(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Obtain the value of theTopiaHibernateTagValues.Store.inheritanceStrategytag value on the given classifier.static StringgetLegacyDaoName(org.nuiton.eugene.models.object.ObjectModelClass input) Deprecated.only used for warn to help migration to 3.0, should be deletedgetManyToManyTableName(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Renvoie le nom unique de table pour une relation ManyToMany en fonction de l'attributattrSet<org.nuiton.eugene.models.object.ObjectModelAttribute>getNaturalIdAttributes(org.nuiton.eugene.models.object.ObjectModelClass clazz) Cherche et renvoie la liste des attributs constituant la clef metier d'une classe.getNMultiplicityHibernateType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Renvoie le type d'interface à utiliser en fonction de l'attributSet<org.nuiton.eugene.models.object.ObjectModelAttribute>getNotNullAttributes(org.nuiton.eugene.models.object.ObjectModelClass clazz) Cherche et renvoie la liste des attributs qui ne doivent pas etre null dans une classe.getParentDaoFqn(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) getParentDaoName(org.nuiton.eugene.models.object.ObjectModel model) getPersistenceContextAbstractName(org.nuiton.eugene.models.object.ObjectModel model) getPersistenceContextConcreteName(org.nuiton.eugene.models.object.ObjectModel model) getPersistenceContextInterfaceName(org.nuiton.eugene.models.object.ObjectModel model) getPersistenceContextPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) getPersistenceType(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Renvoie le type de persistence pour le classifier donné.getReverseDbName(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Obtain the reverse db name of an attribute.getReverseDbNameOnReverseAttribute(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Obtain the reverse db name of a reverse attribute.Deprecated.Deprecated.booleanhasUnidirectionalRelationOnAbstractType(org.nuiton.eugene.models.object.ObjectModelAttribute attr, org.nuiton.eugene.models.object.ObjectModel model) Cette méthode permet de détecter si - l'attribut représente une relation 1-n - cette relation est unidirectionnelle - le type de l'attribut représente un entité - cette entité a des sous-classes dans le modèle Ce cas correspond à une incompatibilité d'Hibernate qui nous oblige a adopter un comportement particulier.booleanisAbstract(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Check if the given classifier is an abstract classbooleanisAttributeNotNull(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) Detecte si un attribut est marqué comme non null.booleanisBooleanType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) booleanisCollectionNeeded(Collection<org.nuiton.eugene.models.object.ObjectModelOperation> operations) booleanisDateType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) booleanisEntity(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModel model) Check if the given attribute type is an entity.booleanisEntity(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Check if the given classifier has theTopiaCoreTagValues.Store.entityand is not an enumerationbooleanisImportNeeded(Collection<org.nuiton.eugene.models.object.ObjectModelOperation> operations, String importName) booleanisNumericType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) booleanisPrimitiveType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) booleanisSetNeeded(Collection<org.nuiton.eugene.models.object.ObjectModelOperation> operations) booleanisTextType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Map<org.nuiton.eugene.models.object.ObjectModelClass,Set<org.nuiton.eugene.models.object.ObjectModelClass>> searchDirectUsages(org.nuiton.eugene.models.object.ObjectModel model) voidsearchDirectUsages(org.nuiton.eugene.models.object.ObjectModelClass klass, Map<String, org.nuiton.eugene.models.object.ObjectModelClass> allEntitiesByFQN, Map<org.nuiton.eugene.models.object.ObjectModelClass, Set<org.nuiton.eugene.models.object.ObjectModelClass>> usages)
-
Field Details
-
PERSISTENCE_TYPE_HIBERNATE
Type de persistence Hibernate- See Also:
-
PERSISTENCE_TYPE_DEFAULT
Type de persistence par défaut (si aucun précisé)- See Also:
-
PROPERTY_DEFAULT_PACKAGE
Propriété des générateurs indiquant le package par défaut- See Also:
-
DEFAULT_PACKAGE
Le package par défaut si aucun n'est spécifié- See Also:
-
DEFAULT_INHERITANCE_STRATEGY
Stratégie d'heritage par defaut.- See Also:
-
model
protected final org.nuiton.eugene.models.object.ObjectModel model -
eugeneTagValues
protected final org.nuiton.eugene.EugeneCoreTagValues eugeneTagValues -
topiaCoreTagValues
-
topiaHibernateTagValues
-
OBJECT_MODEL_CLASS_COMPARATOR
public final Comparator<org.nuiton.eugene.models.object.ObjectModelClass> OBJECT_MODEL_CLASS_COMPARATOR
-
-
Constructor Details
-
TopiaTemplateHelper
public TopiaTemplateHelper(org.nuiton.eugene.models.object.ObjectModel model)
-
-
Method Details
-
getTopiaCoreTagValues
Deprecated. -
getTopiaHibernateTagValues
Deprecated. -
getPersistenceType
Renvoie le type de persistence pour le classifier donné. Si aucun n'est trouvé, le type par défaut est utilisé- Parameters:
classifier- l'élément à tester- Returns:
- le type de persitence pour l'élément donné.
- Since:
- 2.5
-
getDefaultPackage
Renvoie le package par défaut pour le générateur donné- Parameters:
generator- le générateur donné- Returns:
- le package par défaut du générator donné
-
getApplicationContextPackage
public String getApplicationContextPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) -
getPersistenceContextPackage
public String getPersistenceContextPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) -
getDaoPackage
public String getDaoPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) -
getParentDaoName
-
getParentDaoFqn
public String getParentDaoFqn(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model) -
getApplicationContextInterfaceName
-
getApplicationContextAbstractName
-
getApplicationContextConcreteName
-
getPersistenceContextAbstractName
-
getPersistenceContextConcreteName
-
getPersistenceContextInterfaceName
-
getDaoSupplierInterfaceName
-
getDaoSupplierName
-
getEntityEnumName
-
getEntityAbstractName
-
getEntityConcreteName
-
getAbstractDaoName
-
getGeneratedDaoName
-
getConcreteDaoName
-
getContractDaoName
-
getAbstractDaoFqn
-
getGeneratedDaoFqn
-
getConcreteDaoFqn
-
getEntityPackage
public String getEntityPackage(org.nuiton.eugene.java.ObjectModelTransformerToJava transformer, org.nuiton.eugene.models.object.ObjectModel model, org.nuiton.eugene.models.object.ObjectModelClassifier input) -
getReverseDbName
Obtain the reverse db name of an attribute. Try first to get the reverse db Name from the reverseDbname tag-value, then if attribute has a specific reverse attribute, use his db name, otherwise suffix the db name of the attribute by_id.- Parameters:
attr- the attribute to seek- Returns:
- the value of the reverse name
- Since:
- 2.5
-
getDbName
Renvoie le nom BD de l'élement passé en paramètre. Elle se base sur le tag associé si il existe, sinon sur le nom de l'élément- Parameters:
element- l'élément à tester- Returns:
- le nom de table
-
getReverseDbNameOnReverseAttribute
public String getReverseDbNameOnReverseAttribute(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Obtain the reverse db name of a reverse attribute. Note that the reverse attribute can't be null here.- Try first to get the reverse db Name from the ReverseDbname tag-value
- If not found, try then the ReverseDbname tag-value on the same attribute but from this other side of the relation
- If not found, try then just get the name of the reverse attribute
- Parameters:
attr- the attribute to seek- Returns:
- the value of the reverse db name on the reverse attribute
- Since:
- 2.9.5.2
-
getNaturalIdAttributes
public Set<org.nuiton.eugene.models.object.ObjectModelAttribute> getNaturalIdAttributes(org.nuiton.eugene.models.object.ObjectModelClass clazz) Cherche et renvoie la liste des attributs constituant la clef metier d'une classe.- Parameters:
clazz- la classe à tester- Returns:
- la liste des attributs de la clef métier
-
getNotNullAttributes
public Set<org.nuiton.eugene.models.object.ObjectModelAttribute> getNotNullAttributes(org.nuiton.eugene.models.object.ObjectModelClass clazz) Cherche et renvoie la liste des attributs qui ne doivent pas etre null dans une classe.- Parameters:
clazz- la classe à tester- Returns:
- la liste des attributs qui ne doivent pas etre null
-
isAttributeNotNull
public boolean isAttributeNotNull(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) Detecte si un attribut est marqué comme non null. Les naturalId sont not null par défaut- Parameters:
attribute- l'attribut à tester- Returns:
truesi l'attribut doit être non null, par défaut pour les naturalId,falsesinon..- Since:
- 2.6.9
-
getDOType
public String getDOType(org.nuiton.eugene.models.object.ObjectModelElement elem, org.nuiton.eugene.models.object.ObjectModel model) -
getDOType
-
isNumericType
public boolean isNumericType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) -
isTextType
public boolean isTextType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) -
isDateType
public boolean isDateType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) -
isBooleanType
public boolean isBooleanType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) -
isPrimitiveType
public boolean isPrimitiveType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) -
getClassForPrimitiveType
-
hasUnidirectionalRelationOnAbstractType
public boolean hasUnidirectionalRelationOnAbstractType(org.nuiton.eugene.models.object.ObjectModelAttribute attr, org.nuiton.eugene.models.object.ObjectModel model) Cette méthode permet de détecter si - l'attribut représente une relation 1-n - cette relation est unidirectionnelle - le type de l'attribut représente un entité - cette entité a des sous-classes dans le modèle Ce cas correspond à une incompatibilité d'Hibernate qui nous oblige a adopter un comportement particulier.
- Parameters:
attr- l'attribut a testermodel- le model- Returns:
- true si et seulement si il s'agit bien de ce type de relation
-
getManyToManyTableName
Renvoie le nom unique de table pour une relation ManyToMany en fonction de l'attributattr- Parameters:
attr- l'attribut servant de base au calcul du nom- Returns:
- le nom de la table
-
getNMultiplicityHibernateType
public String getNMultiplicityHibernateType(org.nuiton.eugene.models.object.ObjectModelAttribute attr) Renvoie le type d'interface à utiliser en fonction de l'attribut- Parameters:
attr- l'attribut a traiter- Returns:
- String
-
getEntityClasses
public List<org.nuiton.eugene.models.object.ObjectModelClass> getEntityClasses(org.nuiton.eugene.models.object.ObjectModel model, boolean sort) Obtain the list of entities classes with the possibility to sort the result.- Parameters:
model- the current model to scansort- flag to allow sort the result- Returns:
- the list of filtred classes by their stereotype
-
getImports
public List<String> getImports(org.nuiton.eugene.models.object.ObjectModelClass aClass, String... incomingFqns) Obtain the list of fqn of object involed in the given class.- Parameters:
aClass- the clazz to inspectincomingFqns- incoming fqns- Returns:
- the list of fqn of attributes
-
getImports
Obtain the list of fqn of object involed in the given class.- Parameters:
aClass- the class to inspectfqns- where to store found fqns
-
getImports
public void getImports(org.nuiton.eugene.models.object.ObjectModelInterface anInterface, Set<String> fqns) Obtain the list of fqn of object involed in the given interface.- Parameters:
anInterface- the interface to inspectfqns- where to store found fqns
-
getImports
public void getImports(org.nuiton.eugene.models.object.ObjectModelOperation operation, Set<String> fqns) Obtain the fqn's list of all involed type in a givne operation.- Parameters:
operation- operation to inspectfqns- where to store found fqns
-
cleanImports
Clean a set of fqns, transform it into aListand sort it.- Parameters:
packageName- the current package namefqns- the dirty set of fqns- Returns:
- the sorted cleaned list of fqns.
-
searchDirectUsages
-
searchDirectUsages
-
isImportNeeded
public boolean isImportNeeded(Collection<org.nuiton.eugene.models.object.ObjectModelOperation> operations, String importName) -
isCollectionNeeded
public boolean isCollectionNeeded(Collection<org.nuiton.eugene.models.object.ObjectModelOperation> operations) -
isSetNeeded
public boolean isSetNeeded(Collection<org.nuiton.eugene.models.object.ObjectModelOperation> operations) -
isEntity
public boolean isEntity(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModel model) Check if the given attribute type is an entity.- Parameters:
attribute- attribute to testmodel- model containing the attribute- Returns:
trueif type of attribute is an entity,falseotherwise- Since:
- 2.7
- See Also:
-
isEntity
public boolean isEntity(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Check if the given classifier has theTopiaCoreTagValues.Store.entityand is not an enumeration- Parameters:
classifier- classifier to test- Returns:
trueif stereotype was found and classifier is not enumeration,falseotherwise- Since:
- 2.5
- See Also:
-
isAbstract
public boolean isAbstract(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Check if the given classifier is an abstract class- Parameters:
classifier- classifier to test- Returns:
trueif the classifier is abstract,falseotherwise
-
getInheritanceStrategy
public String getInheritanceStrategy(org.nuiton.eugene.models.object.ObjectModelClassifier classifier) Obtain the value of theTopiaHibernateTagValues.Store.inheritanceStrategytag value on the given classifier.- Parameters:
classifier- classifier to seek- Returns:
- the none empty value of the found tag value or
nullif not found nor empty. - Since:
- 3.0
- See Also:
-
getCollectionType
-
getCollectionInstanceType
public Class<?> getCollectionInstanceType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) -
getLegacyDaoName
@Deprecated public static String getLegacyDaoName(org.nuiton.eugene.models.object.ObjectModelClass input) Deprecated.only used for warn to help migration to 3.0, should be deleteddependency to add extra operations for entity dao.- Parameters:
input- FIXME- Returns:
- FIXME
- Since:
- 2.3.4
-