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 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, 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
    EntityTransformer()  
  • 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​(java.util.List<java.lang.String> interfaceAlreadyDone, org.nuiton.eugene.models.object.ObjectModelClassifier output, java.lang.Class<?> clazz)  
    protected void addInterface​(java.util.List<java.lang.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, java.lang.String collectionInterface)  
    protected void addMultipleAddOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.String collectionImpl)  
    protected void addMultipleClearOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.String collectionInterface, java.lang.String collectionImpl)  
    protected void addMultipleGetOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.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, java.lang.String collectionInterface, java.lang.String collectionImpl)  
    protected void addMultipleSizeOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)  
    protected void addSingleGetOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.String attrType, java.lang.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 closeAcceptInternalOperation()  
    protected void createAcceptInternalOperation​(org.nuiton.eugene.models.object.ObjectModelClass input)  
    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, java.lang.String propertyType, java.lang.String propertyName, java.lang.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​(java.util.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 java.lang.String getCollectionType​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)  
    protected java.lang.String getPropertyName​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)  
    protected java.lang.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

  • Constructor Details

  • 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​(java.util.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, java.lang.String attrType, java.lang.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, java.lang.String collectionImpl)
    • addMultipleAddAllOperation

      protected void addMultipleAddAllOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.String collectionInterface)
    • addMultipleSetOperation

      protected void addMultipleSetOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.String collectionInterface, java.lang.String collectionImpl)
    • addMultipleRemoveOperation

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

      protected void addMultipleClearOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.String collectionInterface, java.lang.String collectionImpl)
    • addMultipleGetOperation

      protected void addMultipleGetOperation​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, java.lang.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 java.lang.String getCollectionType​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
    • getPropertyName

      protected java.lang.String getPropertyName​(org.nuiton.eugene.models.object.ObjectModelAttribute attribute)
    • getPropertyType

      protected java.lang.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, java.lang.String propertyType, java.lang.String propertyName, java.lang.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​(java.util.List<java.lang.String> interfaceAlreadyDone, org.nuiton.eugene.models.object.ObjectModelClassifier output, org.nuiton.eugene.models.object.ObjectModelClassifier interfaze)
    • addInterface

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