Package org.nuiton.topia.templates
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.templates.EntityTransformer
- All Implemented Interfaces:
org.nuiton.eugene.TemplateConfiguration
@Component(role=org.nuiton.eugene.Template.class,
hint="org.nuiton.topia.templates.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 entityAbstractHouse: default abstract implementation of entityHouseImpl: default impl of abstract entity
- There is no abstract method
- There is no already defined such class in class-path
- Since:
- 2.3.4
- Author:
- Tony Chemit - chemit@codelutin.com
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected org.nuiton.eugene.models.object.ObjectModelClassprotected org.nuiton.eugene.models.object.ObjectModelClassprotected org.nuiton.eugene.models.object.ObjectModelInterfaceprotected TopiaTemplateHelperprotected final TopiaCoreTagValuesprotected final TopiaHibernateTagValuesFields inherited from class org.nuiton.eugene.java.ObjectModelTransformerToJava
builder, eugeneTagValuesFields inherited from class org.nuiton.eugene.Transformer
outputModel, outputProperties, outputTemplate, previousTransformerFields inherited from class org.nuiton.eugene.Template
configuration, excludeTemplates, generatedPackages, model, resourcesHelperFields 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 -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddContextableMethods(org.nuiton.eugene.models.object.ObjectModelClass input, org.nuiton.eugene.models.object.ObjectModelClass outputAbstract) Ajout les methodes necessaire à l'interfaceTopiaEntityContextablesi le tagValueTopiaCoreTagValues.Store.contextableest renseigné.protected voidaddInterface(List<String> interfaceAlreadyDone, org.nuiton.eugene.models.object.ObjectModelClassifier output, Class<?> clazz) protected voidaddInterface(List<String> interfaceAlreadyDone, org.nuiton.eugene.models.object.ObjectModelClassifier output, org.nuiton.eugene.models.object.ObjectModelClassifier interfaze) protected voidaddMultipleAddAllOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleAddAtIndexOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionImpl) protected voidaddMultipleAddOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionImpl) protected voidaddMultipleClearOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionInterface, String collectionImpl) protected voidaddMultipleContainsOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleGetByIndexOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleGetByTopiaIdOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionInterface) protected voidaddMultipleGetOperationFromEntity(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleGetTopiaIdsOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionInterface, String collectionImpl) protected voidaddMultipleIsEmptyOperations(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) protected voidaddMultipleRemoveAtIndexOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleRemoveOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidaddMultipleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionInterface, String collectionImpl) protected voidaddMultipleSizeOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) protected voidaddSingleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, String attrType, String operationPrefix) Add getter for simple property (neither association nor multiple).protected voidaddSingleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidclean()protected voidprotected voidcreateAcceptInternalOperation(org.nuiton.eugene.models.object.ObjectModelClass input) protected voidprotected voidcreateEntityAbstractClass(org.nuiton.eugene.models.object.ObjectModelPackage aPackage, org.nuiton.eugene.models.object.ObjectModelClass input) protected voidcreateEntityInterface(org.nuiton.eugene.models.object.ObjectModelPackage aPackage, org.nuiton.eugene.models.object.ObjectModelClass input) protected org.nuiton.eugene.models.object.ObjectModelOperationcreateImplOperation(org.nuiton.eugene.models.object.ObjectModelOperation interfaceOperation) protected org.nuiton.eugene.models.object.ObjectModelOperationcreatePropertySetterSignature(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 inclassifierwithpropertyTypeas return type andpropertyNameused for operation name ('set[propertyName]').protected voidgenerateExtraConstants(org.nuiton.eugene.models.object.ObjectModelClass input) Generate extra constants ifinputhas dependencies on enum used as constant injector.protected voidgenerateExtraOperations(org.nuiton.eugene.models.object.ObjectModelClass input) protected voidgenerateImpl(org.nuiton.eugene.models.object.ObjectModelClass input) protected voidgenerateProperties(Collection<org.nuiton.eugene.models.object.ObjectModelAttribute> attributes, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) Generate properties fromattributes.protected voidgeneratePropertyAttribute(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected voidgeneratePropertyConstant(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) Generate constant in interface forattribute.protected voidgeneratePropertyOperations(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) Generation operations forattributes.protected voidgenerateSerialVersionUID(org.nuiton.eugene.models.object.ObjectModelClass input, org.nuiton.eugene.models.object.ObjectModelClass ouput) protected voidgenerateToStringOperation(org.nuiton.eugene.models.object.ObjectModelClass input) protected StringgetCollectionType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) protected StringgetPropertyName(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) protected StringgetPropertyType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) protected booleanisAbstract(org.nuiton.eugene.models.object.ObjectModelClass clazz) protected booleanisGenerateAbstract(org.nuiton.eugene.models.object.ObjectModelClass input) protected booleanisGenerateImpl(org.nuiton.eugene.models.object.ObjectModelClass input) protected booleanisGenerateInterface(org.nuiton.eugene.models.object.ObjectModelClass input) voidtransformFromClass(org.nuiton.eugene.models.object.ObjectModelClass input) protected voidupdateAcceptOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) 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, setSuperClassMethods inherited from class org.nuiton.eugene.models.object.ObjectModelTransformer
transform, transformFromClassifier, transformFromElement, transformFromEnumeration, transformFromInterface, transformFromModelMethods inherited from class org.nuiton.eugene.Transformer
addOutputProperty, applyTemplate, getDefaultPackageName, getOutputModel, getOutputProperties, getOutputTemplate, init, initPreviousTransformer, transformMethods inherited from class org.nuiton.eugene.Template
getClassLoader, getConfiguration, getEncoding, getExcludeTemplates, getGeneratedPackages, getLastModifiedSource, getModel, getOverwrite, getProperties, getProperty, getProperty, getResourcesHelper, getWriterReport, isOverwrite, isVerbose, setConfiguration, setProperty
-
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 -
generatePropertyChangeSupport
protected boolean generatePropertyChangeSupport -
templateHelper
-
topiaCoreTagValues
-
topiaHibernateTagValues
-
-
Constructor Details
-
EntityTransformer
public EntityTransformer()
-
-
Method Details
-
clean
protected void clean() -
transformFromClass
public void transformFromClass(org.nuiton.eugene.models.object.ObjectModelClass input) - Overrides:
transformFromClassin classorg.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.ObjectModelPackage aPackage, org.nuiton.eugene.models.object.ObjectModelClass input) -
createEntityAbstractClass
protected void createEntityAbstractClass(org.nuiton.eugene.models.object.ObjectModelPackage aPackage, 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'interfaceTopiaEntityContextablesi le tagValueTopiaCoreTagValues.Store.contextableest renseigné.- Parameters:
input- FIXMEoutputAbstract- FIXME
-
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 ifinputhas 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, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) Generate properties fromattributes. Generate constant, attribute and operations for each property.- Parameters:
attributes- Input attributesaClass- FIXMEaPackage- FIXME
-
generatePropertyConstant
protected void generatePropertyConstant(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) Generate constant in interface forattribute.- Parameters:
attribute- Input attribute to treate- See Also:
-
generatePropertyAttribute
protected void generatePropertyAttribute(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
generatePropertyOperations
protected void generatePropertyOperations(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) Generation operations forattributes. 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 treateaClass- Input classaPackage- Input package- See Also:
-
addSingleGetOperation(ObjectModelAttribute, String, String)addSingleSetOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage)addMultipleAddOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, String)addMultipleAddAllOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage)addMultipleSetOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, String, String)addMultipleRemoveOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage)addMultipleClearOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, String, String)addMultipleGetOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage, String)addMultipleGetByTopiaIdOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage)addMultipleGetOperationFromEntity(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage)addMultipleSizeOperation(ObjectModelAttribute)addMultipleIsEmptyOperations(ObjectModelAttribute)addMultipleGetByIndexOperation(ObjectModelAttribute, ObjectModelClassifier, ObjectModelPackage)
-
addSingleSetOperation
protected void addSingleSetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
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 bothoutputAbstractandoutputInterface.- Parameters:
attribute- ObjectModelAttribute for getter operationattrType- type of the attributeoperationPrefix- Operation prefix : 'get' by default, if prefix is null
-
addMultipleAddOperation
protected void addMultipleAddOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionImpl) -
addMultipleAddAtIndexOperation
protected void addMultipleAddAtIndexOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionImpl) -
addMultipleAddAllOperation
protected void addMultipleAddAllOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
addMultipleSetOperation
-
addMultipleRemoveOperation
protected void addMultipleRemoveOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
addMultipleRemoveAtIndexOperation
protected void addMultipleRemoveAtIndexOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
addMultipleClearOperation
-
addMultipleGetOperation
protected void addMultipleGetOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage, String collectionInterface) -
addMultipleGetByIndexOperation
protected void addMultipleGetByIndexOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
addMultipleGetByTopiaIdOperation
protected void addMultipleGetByTopiaIdOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
addMultipleGetTopiaIdsOperation
-
addMultipleGetOperationFromEntity
protected void addMultipleGetOperationFromEntity(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
addMultipleSizeOperation
protected void addMultipleSizeOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) -
addMultipleIsEmptyOperations
protected void addMultipleIsEmptyOperations(org.nuiton.eugene.models.object.ObjectModelAttribute attribute) -
addMultipleContainsOperation
protected void addMultipleContainsOperation(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
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, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
closeAcceptInternalOperation
protected void closeAcceptInternalOperation() -
generateToStringOperation
protected void generateToStringOperation(org.nuiton.eugene.models.object.ObjectModelClass input) -
isAbstract
protected boolean isAbstract(org.nuiton.eugene.models.object.ObjectModelClass clazz) -
getCollectionType
-
getPropertyName
-
getPropertyType
protected String getPropertyType(org.nuiton.eugene.models.object.ObjectModelAttribute attribute, org.nuiton.eugene.models.object.ObjectModelClassifier aClass, org.nuiton.eugene.models.object.ObjectModelPackage aPackage) -
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 inclassifierwithpropertyTypeas return type andpropertyNameused for operation name ('set[propertyName]').operationDocumentcan also be added to the operation created. Only signature with default visibility will be added.- Parameters:
classifier- Classifier where the operation will be addedpropertyType- Type of the property (better if qualified name)propertyName- Name of the property to setoperationDocumentation- Documentation for the operation- Returns:
- the created operation
-
addInterface
-
addInterface
-