org.nuiton.topia.generator
Class EntityTransformer

java.lang.Object
  extended by org.nuiton.eugene.Template<I>
      extended by org.nuiton.eugene.Transformer<org.nuiton.eugene.models.object.ObjectModel,O>
          extended by org.nuiton.eugene.models.object.ObjectModelTransformer<org.nuiton.eugene.models.object.ObjectModel>
              extended by org.nuiton.eugene.java.ObjectModelTransformerToJava
                  extended by org.nuiton.topia.generator.EntityTransformer
All Implemented Interfaces:
org.nuiton.eugene.TemplateConfiguration

public class EntityTransformer
extends org.nuiton.eugene.java.ObjectModelTransformerToJava

A template to generate all the TopiaEntity api for all classifier with a entity stereotype. For example, given a House entity, it will generates :

Note: The impl will ony be generated in these cases :

Since:
2.3.4
Author:
tchemit
Plexus component:
role:
"org.nuiton.eugene.Template"
role-hint:
"org.nuiton.topia.generator.EntityTransformer"

Field Summary
protected  boolean generateAbstract
           
protected  boolean generateBooleanGetMethods
           
protected  boolean generateImpl
           
protected  boolean generateInterface
           
protected  org.nuiton.eugene.models.object.ObjectModelClass outputAbstract
           
protected  org.nuiton.eugene.models.object.ObjectModelClass outputImpl
           
protected  org.nuiton.eugene.models.object.ObjectModelInterface outputInterface
           
 
Fields inherited from class org.nuiton.eugene.java.ObjectModelTransformerToJava
builder
 
Fields inherited from class org.nuiton.eugene.Transformer
outputModel, outputProperties, outputTemplate, previousTransformer
 
Fields inherited from class org.nuiton.eugene.Template
configuration, excludeTemplates, generatedPackages, model
 
Fields inherited from interface org.nuiton.eugene.TemplateConfiguration
PROP_CLASS_LOADER, PROP_DEFAULT_PACKAGE, PROP_ENCODING, PROP_EXCLUDE_TEMPLATES, PROP_GENERATED_PACKAGES, PROP_LAST_MODIFIED_SOURCE, PROP_OVERWRITE, PROP_VERBOSE, PROP_WRITER_REPORT
 
Constructor Summary
EntityTransformer()
           
 
Method Summary
protected  void addContextableMethods(org.nuiton.eugene.models.object.ObjectModelClass input, org.nuiton.eugene.models.object.ObjectModelClass outputAbstract)
          Ajout les methodes necessaire à l'interface TopiaEntityContextable si le tagValue TopiaTagValues.TAG_CONTEXTABLE est renseigné.
protected  void addInterface(List<String> interfaceAlreadyDone, org.nuiton.eugene.models.object.ObjectModelClassifier output, Class<?> clazz)
           
protected  void addInterface(List<String> interfaceAlreadyDone, org.nuiton.eugene.models.object.ObjectModelClassifier output, org.nuiton.eugene.models.object.ObjectModelClassifier interfaze)
           
protected  void addMultipleAddAllOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String collectionInterface)
           
protected  void addMultipleAddOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String collectionImpl)
           
protected  void addMultipleClearOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String collectionInterface, String collectionImpl)
           
protected  void addMultipleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String collectionInterface)
           
protected  void addMultipleGetOperationFromEntity(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void addMultipleGetTopiaIdOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void addMultipleIsEmptyOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void addMultipleRemoveOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void addMultipleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String collectionInterface, String collectionImpl)
           
protected  void addMultipleSizeOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void addSingleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String attrType, String operationPrefix)
          Add getter for simple property (neither association nor multiple).
protected  void addSingleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void clean()
           
protected  void closeAcceptOperation()
           
protected  void createAcceptOperation()
           
protected  void createEntityAbstractClass(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  void createEntityInterface(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  org.nuiton.eugene.models.object.ObjectModelOperation createImplOperation(org.nuiton.eugene.models.object.ObjectModelOperation interfaceOperation)
           
protected  org.nuiton.eugene.models.object.ObjectModelOperation createPropertySetterSignature(org.nuiton.eugene.models.object.ObjectModelClassifier classifier, String propertyType, String propertyName, String operationDocumentation)
          TODO-fdesbois-2010-06-25 : This method can be put in JavaBuilder or ObjectModelTransformerToJava This method create an set operation in classifier with propertyType as return type and propertyName used for operation name ('set[propertyName]').
protected  void generateAggregateOperation(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  void generateCompositeOperation(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  void generateExtraConstants(org.nuiton.eugene.models.object.ObjectModelClass input)
          Generate extra constants if input has dependencies on enum used as constant injector.
protected  void generateExtraOperations(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  void generateImpl(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  void generateProperties(Collection<org.nuiton.eugene.models.object.ObjectModelAttribute> attributes)
          Generate properties from attributes.
protected  void generatePropertyAttribute(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  void generatePropertyConstant(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
          Generate constant in interface for attribute.
protected  void generatePropertyOperations(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
          Generation operations for attributes.
protected  void generateSerialVersionUID(org.nuiton.eugene.models.object.ObjectModelClass input, org.nuiton.eugene.models.object.ObjectModelClass ouput)
           
protected  void generateToStringOperation(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  String getCollectionType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  String getPropertyName(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  String getPropertyType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
protected  boolean isAbstract(org.nuiton.eugene.models.object.ObjectModelClass clazz)
           
protected  boolean isGenerateAbstract(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  boolean isGenerateImpl(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  boolean isGenerateInterface(org.nuiton.eugene.models.object.ObjectModelClass input)
           
 void transformFromClass(org.nuiton.eugene.models.object.ObjectModelClass input)
           
protected  void updateAcceptOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
           
 
Methods inherited from class org.nuiton.eugene.java.ObjectModelTransformerToJava
addAnnotation, addAttribute, addAttribute, addAttribute, addAttribute, addBlock, addComment, addConstant, addConstant, addConstantsFromDependency, addConstructor, addConstructor, addException, addException, addI18n, addImport, addImport, addImport, addInnerClassifier, addInterface, addInterface, addLiteral, addOperation, addOperation, addOperation, addParameter, addParameter, addStereotype, addTagValue, addTagValue, cloneAttribute, cloneClass, cloneClassifier, cloneClassifier, cloneEnumeration, cloneInterface, cloneOperation, cloneOperationSignature, cloneStereotypes, cloneTagValues, copyClassifier, createAbstractClass, createClass, createEnumeration, createInterface, debugOutputModel, generateI18nBlock, getConstantName, getConstantPrefix, getConstantPrefix, getFileInClassPath, initConstantPrefixFromModel, initOutputModel, initOutputTemplate, isInClassPath, isInClassPath, setConstantPrefix, setDocumentation, setMaxMultiplicity, setMinMultiplicity, setNavigable, setOperationBody, setSuperClass, setSuperClass
 
Methods inherited from class org.nuiton.eugene.models.object.ObjectModelTransformer
transform, transformFromClassifier, transformFromElement, transformFromEnumeration, transformFromInterface, transformFromModel
 
Methods inherited from class org.nuiton.eugene.Transformer
applyTemplate, getOutputModel, getOutputProperties, getOutputTemplate, init, initPreviousTransformer, transform
 
Methods inherited from class org.nuiton.eugene.Template
getClassLoader, getConfiguration, getEncoding, getExcludeTemplates, getGeneratedPackages, getLastModifiedSource, getModel, getOverwrite, getProperties, getProperty, getProperty, getWriterReport, isOverwrite, isVerbose, setConfiguration, setProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

outputInterface

protected org.nuiton.eugene.models.object.ObjectModelInterface outputInterface

outputAbstract

protected org.nuiton.eugene.models.object.ObjectModelClass outputAbstract

outputImpl

protected org.nuiton.eugene.models.object.ObjectModelClass outputImpl

generateInterface

protected boolean generateInterface

generateAbstract

protected boolean generateAbstract

generateImpl

protected boolean generateImpl

generateBooleanGetMethods

protected boolean generateBooleanGetMethods
Constructor Detail

EntityTransformer

public EntityTransformer()
Method Detail

clean

protected void clean()

transformFromClass

public void transformFromClass(org.nuiton.eugene.models.object.ObjectModelClass input)
Overrides:
transformFromClass in class org.nuiton.eugene.models.object.ObjectModelTransformer<org.nuiton.eugene.models.object.ObjectModel>

generateSerialVersionUID

protected void generateSerialVersionUID(org.nuiton.eugene.models.object.ObjectModelClass input,
                                        org.nuiton.eugene.models.object.ObjectModelClass ouput)

createEntityInterface

protected void createEntityInterface(org.nuiton.eugene.models.object.ObjectModelClass input)

createEntityAbstractClass

protected void createEntityAbstractClass(org.nuiton.eugene.models.object.ObjectModelClass input)

addContextableMethods

protected void addContextableMethods(org.nuiton.eugene.models.object.ObjectModelClass input,
                                     org.nuiton.eugene.models.object.ObjectModelClass outputAbstract)
Ajout les methodes necessaire à l'interface TopiaEntityContextable si le tagValue TopiaTagValues.TAG_CONTEXTABLE est renseigné.

Parameters:
input -
outputAbstract -

isGenerateInterface

protected boolean isGenerateInterface(org.nuiton.eugene.models.object.ObjectModelClass input)

isGenerateAbstract

protected boolean isGenerateAbstract(org.nuiton.eugene.models.object.ObjectModelClass input)

isGenerateImpl

protected boolean isGenerateImpl(org.nuiton.eugene.models.object.ObjectModelClass input)

generateImpl

protected void generateImpl(org.nuiton.eugene.models.object.ObjectModelClass input)

generateExtraConstants

protected void generateExtraConstants(org.nuiton.eugene.models.object.ObjectModelClass input)
Generate extra constants if input has dependencies on enum used as constant injector.

Parameters:
input - Entity class to treate

generateExtraOperations

protected void generateExtraOperations(org.nuiton.eugene.models.object.ObjectModelClass input)

generateProperties

protected void generateProperties(Collection<org.nuiton.eugene.models.object.ObjectModelAttribute> attributes)
Generate properties from attributes. Generate constant, attribute and operations for each property.

Parameters:
attributes - Input attributes

generatePropertyConstant

protected void generatePropertyConstant(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
Generate constant in interface for attribute.

Parameters:
attribute - Input attribute to treate
See Also:
getPropertyName(ObjectModelAttribute)

generatePropertyAttribute

protected void generatePropertyAttribute(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

generatePropertyOperations

protected void generatePropertyOperations(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
Generation operations for attributes. One method exists for each operation to generate. Methods starting with 'addSingle' is for maxMultiplicity attribute = 1 and for collection case, methods start with 'addMultiple'. Other case are take care in each method (association class, reverse, entity reference, ...).

Parameters:
attribute - Input attribute to treate
See Also:
addSingleGetOperation(ObjectModelAttribute, String, String), addSingleSetOperation(ObjectModelAttribute), addMultipleAddOperation(ObjectModelAttribute, String), addMultipleAddAllOperation(ObjectModelAttribute, String), addMultipleSetOperation(ObjectModelAttribute, String, String), addMultipleRemoveOperation(ObjectModelAttribute), addMultipleClearOperation(ObjectModelAttribute, String, String), addMultipleGetOperation(ObjectModelAttribute, String), addMultipleGetTopiaIdOperation(ObjectModelAttribute), addMultipleGetOperationFromEntity(ObjectModelAttribute), addMultipleSizeOperation(ObjectModelAttribute), addMultipleIsEmptyOperation(ObjectModelAttribute)

addSingleSetOperation

protected void addSingleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

addSingleGetOperation

protected void addSingleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute,
                                     String attrType,
                                     String operationPrefix)
Add getter for simple property (neither association nor multiple). Will add two different operations for boolean case ('is' method and 'get' method). This method add the operation in both outputAbstract and outputInterface.

Parameters:
attribute - ObjectModelAttribute for getter operation
attrType - type of the attribute
operationPrefix - Operation prefix : 'get' by default, if prefix is null

addMultipleAddOperation

protected void addMultipleAddOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute,
                                       String collectionImpl)

addMultipleAddAllOperation

protected void addMultipleAddAllOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute,
                                          String collectionInterface)

addMultipleSetOperation

protected void addMultipleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute,
                                       String collectionInterface,
                                       String collectionImpl)

addMultipleRemoveOperation

protected void addMultipleRemoveOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

addMultipleClearOperation

protected void addMultipleClearOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute,
                                         String collectionInterface,
                                         String collectionImpl)

addMultipleGetOperation

protected void addMultipleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute,
                                       String collectionInterface)

addMultipleGetTopiaIdOperation

protected void addMultipleGetTopiaIdOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

addMultipleGetOperationFromEntity

protected void addMultipleGetOperationFromEntity(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

addMultipleSizeOperation

protected void addMultipleSizeOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

addMultipleIsEmptyOperation

protected void addMultipleIsEmptyOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

createAcceptOperation

protected void createAcceptOperation()

updateAcceptOperation

protected void updateAcceptOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

closeAcceptOperation

protected void closeAcceptOperation()

generateToStringOperation

protected void generateToStringOperation(org.nuiton.eugene.models.object.ObjectModelClass input)

generateCompositeOperation

protected void generateCompositeOperation(org.nuiton.eugene.models.object.ObjectModelClass input)

generateAggregateOperation

protected void generateAggregateOperation(org.nuiton.eugene.models.object.ObjectModelClass input)

isAbstract

protected boolean isAbstract(org.nuiton.eugene.models.object.ObjectModelClass clazz)

getCollectionType

protected String getCollectionType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

getPropertyName

protected String getPropertyName(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

getPropertyType

protected String getPropertyType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)

createImplOperation

protected org.nuiton.eugene.models.object.ObjectModelOperation createImplOperation(org.nuiton.eugene.models.object.ObjectModelOperation interfaceOperation)

createPropertySetterSignature

protected org.nuiton.eugene.models.object.ObjectModelOperation createPropertySetterSignature(org.nuiton.eugene.models.object.ObjectModelClassifier classifier,
                                                                                             String propertyType,
                                                                                             String propertyName,
                                                                                             String operationDocumentation)
TODO-fdesbois-2010-06-25 : This method can be put in JavaBuilder or ObjectModelTransformerToJava This method create an set operation in classifier with propertyType as return type and propertyName used for operation name ('set[propertyName]'). operationDocument can also be added to the operation created. Only signature with default visibility will be added.

Parameters:
classifier - Classifier where the operation will be added
propertyType - Type of the property (better if qualified name)
propertyName - Name of the property to set
operationDocumentation - Documentation for the operation
Returns:
the created operation

addInterface

protected void addInterface(List<String> interfaceAlreadyDone,
                            org.nuiton.eugene.models.object.ObjectModelClassifier output,
                            org.nuiton.eugene.models.object.ObjectModelClassifier interfaze)

addInterface

protected void addInterface(List<String> interfaceAlreadyDone,
                            org.nuiton.eugene.models.object.ObjectModelClassifier output,
                            Class<?> clazz)


Copyright © 2004-2011 CodeLutin. All Rights Reserved.