Class EntityTransformer

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

@Component(role=org.nuiton.eugene.Template.class, hint="org.nuiton.topia.generator.EntityTransformer") 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 :
  • House : contract of entity
  • AbstractHouse : default abstract implementation of entity
  • HouseImpl : default impl of abstract entity
Note: The impl will ony be generated in these cases :
  • There is no abstract method
  • There is no already defined such class in class-path
Since:
2.3.4
Author:
tchemit <chemit@codelutin.com>
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected boolean
     
    protected boolean
     
    protected boolean
     
    protected boolean
     
    protected org.nuiton.eugene.models.object.ObjectModelClass
     
    protected org.nuiton.eugene.models.object.ObjectModelClass
     
    protected org.nuiton.eugene.models.object.ObjectModelInterface
     

    Fields inherited from class org.nuiton.eugene.java.ObjectModelTransformerToJava

    builder, eugeneTagValues

    Fields inherited from class org.nuiton.eugene.Transformer

    outputModel, outputProperties, outputTemplate, previousTransformer

    Fields inherited from class org.nuiton.eugene.Template

    configuration, excludeTemplates, generatedPackages, model, resourcesHelper

    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

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    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
     
    protected void
     
    protected void
    createAcceptInternalOperation(org.nuiton.eugene.models.object.ObjectModelClass input)
     
    protected void
     
    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, addAnnotation, addAnnotationParameter, addAttribute, addAttribute, addAttribute, addAttribute, addBlock, addComment, addConstant, addConstant, addConstantsFromDependency, addConstructor, addConstructor, addException, addException, addGeneratedAnnotation, 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, getJavaBeanMethodName, getJavaBeanMethodName, getPackage, getPackage, initConstantPrefixFromModel, initOutputModel, initOutputTemplate, isInClassPath, 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

    addOutputProperty, applyTemplate, getDefaultPackageName, 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, getResourcesHelper, getWriterReport, isOverwrite, isVerbose, setConfiguration, setProperty

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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 Details

    • EntityTransformer

      public EntityTransformer()
  • Method Details

    • 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:
    • 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:
    • 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()
    • createAcceptInternalOperation

      protected void createAcceptInternalOperation(org.nuiton.eugene.models.object.ObjectModelClass input)
    • updateAcceptOperation

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

      protected void closeAcceptInternalOperation()
    • 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)