Class UMLToDDLTransformation
- java.lang.Object
-
- com.nomagic.magicdraw.modeltransformations.impl.any_to_any.AnyToAnyModelTransformation
-
- com.nomagic.magicdraw.dmn.transformation.uml2ddl.UMLToDDLTransformation
-
- All Implemented Interfaces:
ModelTransformation
@OpenApiAll public class UMLToDDLTransformation extends AnyToAnyModelTransformation
ER (UML) to DDL Specific transformation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
UMLToDDLTransformation.CustomAttributeComparator
Attribute comparator to sort list by order of attribute in group
-
Field Summary
Fields Modifier and Type Field Description private DataType
charDataType
private com.nomagic.magicdraw.dmn.transformation.uml2ddl.copystrategies.ElementsCopyStrategiesFactory
copyStrategyFactory
private com.nomagic.magicdraw.dmn.transformation.ElementIdentifier
elementIdentifier
private java.util.List<OpaqueBehavior>
exclusionRules
static com.nomagic.magicdraw.dmn.ce.ddl.DialectManager
GENERIC
static com.nomagic.magicdraw.dmn.ce.ddl.DDLModelHelper
GENERIC_HELPER
private DataType
integerDataType
protected Package
mDestination
protected java.util.Set<Element>
mElementsToRemove
protected boolean
mIsTransformationInPlace
protected boolean
mIsUpdate
protected java.util.Set<Element>
mProcessedAssociations
protected boolean
mSyncDestination
protected int
mTransformationType
static com.nomagic.magicdraw.dmn.ce.ddl.DialectManager
ORACLE
static com.nomagic.magicdraw.dmn.ce.ddl.DDLModelHelper
ORACLE_HELPER
protected java.util.Map<Element,java.util.Collection<Element>>
originalTransformationMap
protected java.util.Set<Element>
postTransformationElementsToRemove
private com.nomagic.magicdraw.dmn.transformation.ProcessingContext
processingContext
private com.nomagic.magicdraw.dmn.transformation.uml2ddl.TreeRootsMap
rootsMap
private DataType
selectorDataType
private static java.util.Collection<java.lang.String>
skipProperties
static int
TRANSFORMATION_GENERIC
static int
TRANSFORMATION_ORACLE
-
Fields inherited from class com.nomagic.magicdraw.modeltransformations.impl.any_to_any.AnyToAnyModelTransformation
mTransformationMap
-
-
Constructor Summary
Constructors Constructor Description UMLToDDLTransformation()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addRemovedEntities(java.util.Collection<Element> originalElements, java.util.Map<Element,java.util.Collection<Element>> removedElements)
Adds back removed transformation mapping for specified elementsprivate void
addTableStereotype(Classifier original, Element target)
boolean
autoGeneratePK()
static boolean
canHaveConstraint(Element element)
private java.util.Collection<Element>
copyMultipleValuesProperty(Property originalProperty, Property transformedProperty, java.util.Collection<Element> transformed)
private java.util.Collection<Element>
copyTransformedProperty(Property originalProperty, Property targetProperty, java.util.Collection<Element> transformed, com.nomagic.magicdraw.dmn.transformation.uml2ddl.UML2DDLCopyPasteManager copyManager, boolean isNull)
Copies end returns transformed propertyjava.util.Collection<Element>
createCheckConstraintForEnum(Property targetProperty)
protected com.nomagic.magicdraw.modeltransformations.impl.any_to_any.ElementUpdater
createElementUpdater()
private java.lang.String
createEnumCheckConstraintBody(Property targetProperty)
private Property
createEnumNameProperty(Enumeration enumeration)
protected void
customTransformationForElement(Element original, java.util.Collection<Element> mapped)
Invokes custom transformation for specified original element.protected void
customTransformations()
boolean
excludeFromTransformation(java.lang.Object sourceElement, java.util.List<OpaqueBehavior> exclusionRules)
java.util.Collection<Property>
expandPropertyNameWithType(Property original, Property target, java.util.Set<Type> processedTypes, com.nomagic.magicdraw.dmn.transformation.uml2ddl.traversal.PropertyExpansion propertyExpansion)
void
expandPropertyWithEnum(java.util.Collection<Element> transformed)
private void
expandSlotValues(java.util.Collection<? extends Property> properties, EnumerationLiteral literal, Slot slot)
boolean
expandWithTypeProperties(Type type)
<T extends Element>
TfindInCollection(java.util.Collection<? extends Element> elements, java.lang.String name, java.lang.Class<T> classType)
Helper method that locates element with specified name and type in list of elementsprivate Element
findSameElement(Element elementToFind)
Locates 'nearest' transformed element to elementToFindprivate static Element
findWithSameName(Element newElement, Element newParent)
Find elements with the same nameprivate void
flattenPackages(Package target, Package mappedRoot, boolean stripPackage)
Flattens or strips packages.java.lang.String
generatePropertyName(java.lang.String originalPropertyName, java.lang.String typePropertyName, java.lang.String targetOwnerName)
com.nomagic.magicdraw.dmn.transformation.uml2ddl.copystrategies.ElementsCopyStrategiesFactory
getCopyStrategyFactory()
Returns transaction specific factory that returns elements copy strategy used to copy elements in generalization tree.private DataType
getDataType(java.lang.String typeName)
com.nomagic.magicdraw.dmn.ce.ddl.DDLModelHelper
getDDLModelHelper()
Returns DDL ModelHelperprivate java.lang.String
getDiagramType()
Returns diagram type idcom.nomagic.magicdraw.dmn.transformation.ElementIdentifier
getElementIdentifier()
Returns stereotype mapper that is used to map stereotypes between DDL flavors or DDL and ER.<T extends Element>
TgetElementOwner(Element element, java.lang.Class<T> type)
Finds element's owner that is of specified typeprivate com.nomagic.magicdraw.expressions.specification.CallExpressionSpecification
getExcludeElementsCallExpression(Element sourceElement, OpaqueBehavior namingRule)
private java.util.List<OpaqueBehavior>
getExclusionRules(PropertyManager pm)
private static int
getLiteralIndex(EnumerationLiteral literal)
Classifier
getMappedClassifier(Element original)
Returns transformed original element as Classifier.private com.nomagic.magicdraw.expressions.specification.CallExpressionSpecification
getNamingRuleCallExpression(java.lang.String originalName, Element namedElement, Element target, OpaqueBehavior namingRule)
private java.util.List<OpaqueBehavior>
getNamingRules()
protected java.util.Map<BaseElement,BaseElement>
getOneToOneMap()
Returns transformation map where transformation source element corresponds to 'nearest' (by type) transformed elementjava.util.Collection<Element>
getOriginalElements()
Exposing protected methodprivate EnumerationLiteral
getOriginalLiteral(Enumeration originalEnumeration, java.lang.String name)
java.util.Collection<Element>
getOriginalMappedElements(Element original)
Returns transformed elements for given original element.private Package
getOriginalRoot(Package element)
Returns root package of the listprivate Type
getOriginalType(Property transformedProperty)
private java.lang.String
getPackageHierarchyAction()
Returns PackageHierarchy action propertyClassifier
getPKRoot(Classifier element)
com.nomagic.magicdraw.dmn.transformation.ProcessingContext
getProcessingContext()
Returns processing context that is used to contain specific current transformation related data.Project
getProject()
Classifier
getRoot(Classifier element)
Returns element's root from which it is derived.private java.util.List<OpaqueBehavior>
getRules(java.lang.String propertyName, PropertyManager pm)
DataType
getSelectorDataType()
Returns selector data type that name is specified in transformation properties and type itself is retrieved from ddl profile.private DataType
getSelectorDataType(PropertyManager pm, java.lang.String propertyName)
Retrieves DataType object by it's namejava.lang.String
getStringProperty(java.lang.String property)
Returns string propertyPackage
getTargetPackage(Element originalElement)
int
getTransformationType()
Returns transformation type idjava.lang.String
getTransformedComment(Element original)
protected java.util.List<Stereotype>
getTransformedTableStereotype(Element original)
private java.util.List<Property>
getTypeAttributes(Property original, java.util.Set<Type> processedTypes, com.nomagic.magicdraw.dmn.transformation.uml2ddl.traversal.PropertyExpansion propertyExpansion)
private static boolean
hasElementWithTheSameName(Element child, Element parent)
Checks for elements in parent with the same name like element nameprivate static boolean
hasPackage(Package mp)
Checks if model package has child model packagesboolean
hasRootChildren(Classifier element)
Checks if root element has descendant(s).private boolean
hasSameParent(Property originalProperty, Property targetProperty)
boolean
hasSameRoot(Classifier element1, Classifier element2)
Checks if both elements from generalization tree have same root element.private static boolean
isChildOf(Element child, Element parent)
Checks if model element is child of parent model elementprotected boolean
isMappableElement(Element element)
Checks what source elements can be mapped and processed in destination modelprivate java.lang.Object
makeCall(com.nomagic.magicdraw.expressions.specification.CallExpressionSpecification callExpressionSpecification, ExpressionContext context)
private static void
makePKColumnsFirst(EnumerationLiteral literal, java.util.List<Slot> pkSlots)
void
markAsRemoved(java.util.Collection<? extends Element> originalElements)
Adds elements to removed elements list.protected void
processKey(Element original, Element target, java.util.Collection<Element> transformed, com.nomagic.magicdraw.dmn.transformation.uml2ddl.keys.KeyGenerator generator)
protected void
processKeyProperty(Element original, Element target, Classifier originalOwner, java.util.Collection<Element> transformed)
Helper method used to transform key propertyboolean
removeAbstractEntity(Element entity)
This method checks if abstract entity must be removed.private java.util.Map<Element,java.util.Collection<Element>>
removeEntriesFromTransformationMap(java.util.Collection<Element> elementsToRemove)
Clears transformation mapping for specified list of elementsvoid
removeMappedElements(Element original, java.util.Collection<Element> targetElements)
void
removeMappedElements(java.util.Collection<Element> targetElements)
Clear transformation elements maps from elements in targetElementsprivate boolean
removeNonRootTable(Classifier original)
Helper method used to check if original table is non root table and must be removedprivate void
renameElement(NamedElement element, NamedElement parent)
Renames elementprivate static java.lang.String
replace(java.lang.String originalString, java.lang.String placeholder, java.lang.String replaceString)
void
setCopyStrategyFactory(com.nomagic.magicdraw.dmn.transformation.uml2ddl.copystrategies.ElementsCopyStrategiesFactory copyStrategyFactory)
Sets transaction specific factory that returns elements copy strategy used to copy elements in generalization tree.void
setElementIdentifier(com.nomagic.magicdraw.dmn.transformation.ElementIdentifier elementIdentifier)
Sets stereotype mapper that is used to map stereotypes between DDL flavors or DDL and ER.private void
setEntityPropertiesCopyStrategy(com.nomagic.magicdraw.dmn.transformation.ProcessingContext context, PropertyManager manager)
Retrieves Generalization transformation type, converts it to property copy strategy and set it into processing contextSlot
setEnumerationPropertySlotValue(Property feature, InstanceSpecification instanceSpecification, java.lang.Object value, boolean addValue)
private void
setEnumerationPropertyType(Property targetProperty)
private void
setEnumSlotsForCopiedProperties(Property targetProperty, java.util.Collection<? extends Property> properties)
Slot
setExpandedEnumerationPropertySlotValue(Property feature, Property expandedType, InstanceSpecification instanceSpecification, java.lang.Object value, boolean addValue)
void
setGeneratedPKSlotValue(EnumerationLiteral literal, java.util.Collection<Property> pkProperties)
void
setOriginalElementsMapping(Element original, java.util.Collection<Element> elements)
Sets transformed elements original mapping for given original element.void
setProcessingContext(com.nomagic.magicdraw.dmn.transformation.ProcessingContext processingContext)
Sets processing context that is used to contain specific current transformation related data.void
setRoot(Classifier element, Classifier root)
Remembers element's root from which it is derived.void
setTransformationType(int type)
Sets transformation type.protected void
sortOriginalElements(java.util.List<Element> objects)
Sorts elements before invoking custom transformationprotected void
stripAllStereotypes(Element element)
Strips all stereotypes from model elementprotected void
stripAllStereotypesByProfile(Element element, Package profile)
Strips all stereotypes from model element by profilePackage
transform(java.util.Collection objects, ModelTransformationInfo info, TypeMapProfile typeMap, PropertyManager propertyManager, Package destination)
Starts model transformationprotected void
transformAbstraction(Abstraction original, Element target, java.util.Collection<Element> mapped)
Transforms abstraction.protected void
transformAssociation(Association original, Element target, java.util.Collection<Element> mapped)
Transforms association.protected void
transformAttribute(Property original, Element target, java.util.Collection<Element> mapped)
Transforms attributes.protected void
transformClass(Class original, Element target, java.util.Collection<Element> mapped)
Transforms classes.private void
transformClassifier(Classifier original, Element target, java.util.Collection<Element> mapped)
protected void
transformDataType(DataType original, Element target, java.util.Collection<Element> mapped)
protected void
transformDiagram(Diagram target)
Transform the class diagrams into the DDL diagrams.java.lang.String
transformElementName(java.lang.String originalName, Element namedElement, Element target)
protected void
transformEnumeration(Enumeration original, Element target, java.util.Collection<Element> mapped)
protected void
transformGeneralization(Generalization originalGeneralization, Element target, java.util.Collection<Element> mapped)
Transforms generalization.private void
transformLiteralName(EnumerationLiteral targetLiteral)
private void
transformMultiplicity(Property original, Property target)
If property multiplicity is in range of [0..1] (0, 1, 0..1) appropriate null/not null stereotype is added.protected void
transformPackage(Package original, Package target, java.util.Collection mapped)
Transforms package.boolean
transformToCheckConstraint(Element enumeration)
private void
transformTypeToUserDefinedType(DataType original, Element target)
private void
translateCommentsToText(java.util.Collection<Element> mapped)
private boolean
translateToText()
void
updateTransform(Package transformationPackage, TypeMapProfile typeMap, PropertyManager propertyManager, boolean syncDestination)
Updates transformation by transforming latest changes made in source model.-
Methods inherited from class com.nomagic.magicdraw.modeltransformations.impl.any_to_any.AnyToAnyModelTransformation
afterTransformation, changeDiagramType, collectInnerElements, copyElementInto, copyElements, createDefaultDoNotCopyTypes, createDefaultDoNotReconnectTypes, createDefaultDoNotSettableProperties, createDefaultMappedTypes, getMappedElements, getNotSettableProperties, getOriginalElement, getOriginalElement, getProgressStatus, getPropertyManager, getRemovedByCustomTransformation, getTarget, getTransformationsPackage, getTypeMapper, invokeCustomTransformation, invokeCustomTransformation, isAlreadyVisited, isElementCopied, isSkipElement, isTransformationInPlace, isTypeMapSet, markAsAlreadyVisited, processMappedElements, processMappingResult, setTask, setTransformationMapValue, updateDiagrams
-
-
-
-
Field Detail
-
skipProperties
private static final java.util.Collection<java.lang.String> skipProperties
-
TRANSFORMATION_GENERIC
public static final int TRANSFORMATION_GENERIC
- See Also:
- Constant Field Values
-
TRANSFORMATION_ORACLE
public static final int TRANSFORMATION_ORACLE
- See Also:
- Constant Field Values
-
ORACLE
public static final com.nomagic.magicdraw.dmn.ce.ddl.DialectManager ORACLE
-
GENERIC
public static final com.nomagic.magicdraw.dmn.ce.ddl.DialectManager GENERIC
-
ORACLE_HELPER
public static final com.nomagic.magicdraw.dmn.ce.ddl.DDLModelHelper ORACLE_HELPER
-
GENERIC_HELPER
public static final com.nomagic.magicdraw.dmn.ce.ddl.DDLModelHelper GENERIC_HELPER
-
mElementsToRemove
protected java.util.Set<Element> mElementsToRemove
-
mProcessedAssociations
protected java.util.Set<Element> mProcessedAssociations
-
mTransformationType
protected int mTransformationType
-
mIsTransformationInPlace
protected boolean mIsTransformationInPlace
-
mIsUpdate
protected boolean mIsUpdate
-
mSyncDestination
protected boolean mSyncDestination
-
mDestination
protected Package mDestination
-
elementIdentifier
private com.nomagic.magicdraw.dmn.transformation.ElementIdentifier elementIdentifier
-
processingContext
private com.nomagic.magicdraw.dmn.transformation.ProcessingContext processingContext
-
rootsMap
private final com.nomagic.magicdraw.dmn.transformation.uml2ddl.TreeRootsMap rootsMap
-
copyStrategyFactory
private com.nomagic.magicdraw.dmn.transformation.uml2ddl.copystrategies.ElementsCopyStrategiesFactory copyStrategyFactory
-
originalTransformationMap
protected java.util.Map<Element,java.util.Collection<Element>> originalTransformationMap
-
postTransformationElementsToRemove
protected java.util.Set<Element> postTransformationElementsToRemove
-
selectorDataType
private DataType selectorDataType
-
charDataType
private DataType charDataType
-
integerDataType
private DataType integerDataType
-
exclusionRules
private java.util.List<OpaqueBehavior> exclusionRules
-
-
Method Detail
-
transform
public Package transform(java.util.Collection objects, ModelTransformationInfo info, TypeMapProfile typeMap, PropertyManager propertyManager, Package destination) throws ReadOnlyElementException
Starts model transformation- Specified by:
transform
in interfaceModelTransformation
- Overrides:
transform
in classAnyToAnyModelTransformation
- Parameters:
objects
- list of objects to transforminfo
- TransformationInfo object containing current transformation configuration informationtypeMap
- profile containing type mapping informationpropertyManager
- property managerdestination
- destination root package where all transformation relevant data is stored- Returns:
- package containing transformed model
- Throws:
ReadOnlyElementException
- is thrown when processed model element is in read-only state.
-
sortOriginalElements
protected void sortOriginalElements(java.util.List<Element> objects)
Description copied from class:AnyToAnyModelTransformation
Sorts elements before invoking custom transformation- Overrides:
sortOriginalElements
in classAnyToAnyModelTransformation
- Parameters:
objects
- objects
-
getProject
public Project getProject()
-
customTransformations
protected void customTransformations()
- Overrides:
customTransformations
in classAnyToAnyModelTransformation
-
getOriginalElements
public java.util.Collection<Element> getOriginalElements()
Exposing protected method- Overrides:
getOriginalElements
in classAnyToAnyModelTransformation
- Returns:
- all original elements
-
removeEntriesFromTransformationMap
private java.util.Map<Element,java.util.Collection<Element>> removeEntriesFromTransformationMap(java.util.Collection<Element> elementsToRemove)
Clears transformation mapping for specified list of elements- Parameters:
elementsToRemove
- list of elements which transformation mapping will be cleared- Returns:
- map of removed elements
-
addRemovedEntities
private void addRemovedEntities(java.util.Collection<Element> originalElements, java.util.Map<Element,java.util.Collection<Element>> removedElements)
Adds back removed transformation mapping for specified elements- Parameters:
originalElements
- list of elements which transformation mapping will be updatedremovedElements
- transformation mapping
-
customTransformationForElement
protected void customTransformationForElement(Element original, java.util.Collection<Element> mapped) throws ReadOnlyElementException
Invokes custom transformation for specified original element.- Overrides:
customTransformationForElement
in classAnyToAnyModelTransformation
- Parameters:
original
- original element.mapped
- collection of current mapped elements. Custom transformation can modify this collection. In case custom transformation needs to remove current mapping, it should remove element from this collection. In case it needs to map more elements it should add new elements to this collection.- Throws:
ReadOnlyElementException
- is thrown if processed element is in read-only state
-
translateCommentsToText
private void translateCommentsToText(java.util.Collection<Element> mapped)
-
getTransformedComment
@CheckForNull public java.lang.String getTransformedComment(Element original)
-
translateToText
private boolean translateToText()
-
autoGeneratePK
public boolean autoGeneratePK()
-
isMappableElement
protected boolean isMappableElement(Element element)
Checks what source elements can be mapped and processed in destination model- Overrides:
isMappableElement
in classAnyToAnyModelTransformation
- Parameters:
element
- element to check.- Returns:
- true if source model element can mapped to destination model
-
updateTransform
public void updateTransform(Package transformationPackage, TypeMapProfile typeMap, PropertyManager propertyManager, boolean syncDestination) throws ReadOnlyElementException
Updates transformation by transforming latest changes made in source model.- Specified by:
updateTransform
in interfaceModelTransformation
- Overrides:
updateTransform
in classAnyToAnyModelTransformation
- Parameters:
transformationPackage
- package containing transformation mapping informationtypeMap
- profile containing type mapping informationpropertyManager
- property managersyncDestination
- destination root package where all transformation relevant data is stored- Throws:
ReadOnlyElementException
- is thrown when processed model element is in read-only state.
-
transformPackage
protected void transformPackage(Package original, Package target, java.util.Collection mapped) throws ReadOnlyElementException
Transforms package. Flattens or strips from model tree. Does nothing on update.- Parameters:
original
- original elementtarget
- mapped elementmapped
- list of mapped elements- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
transformEnumeration
protected void transformEnumeration(Enumeration original, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
- Throws:
ReadOnlyElementException
-
transformLiteralName
private void transformLiteralName(EnumerationLiteral targetLiteral)
-
getOriginalLiteral
@CheckForNull private EnumerationLiteral getOriginalLiteral(Enumeration originalEnumeration, java.lang.String name)
-
createEnumNameProperty
private Property createEnumNameProperty(Enumeration enumeration)
-
setEnumerationPropertySlotValue
@CheckForNull public Slot setEnumerationPropertySlotValue(Property feature, InstanceSpecification instanceSpecification, java.lang.Object value, boolean addValue)
-
setExpandedEnumerationPropertySlotValue
@CheckForNull public Slot setExpandedEnumerationPropertySlotValue(Property feature, @CheckForNull Property expandedType, InstanceSpecification instanceSpecification, java.lang.Object value, boolean addValue)
-
setGeneratedPKSlotValue
public void setGeneratedPKSlotValue(EnumerationLiteral literal, java.util.Collection<Property> pkProperties)
-
makePKColumnsFirst
private static void makePKColumnsFirst(EnumerationLiteral literal, java.util.List<Slot> pkSlots)
-
transformToCheckConstraint
public boolean transformToCheckConstraint(Element enumeration)
-
getLiteralIndex
private static int getLiteralIndex(EnumerationLiteral literal)
-
transformDataType
protected void transformDataType(DataType original, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
- Throws:
ReadOnlyElementException
-
transformTypeToUserDefinedType
private void transformTypeToUserDefinedType(DataType original, Element target)
-
transformClass
protected void transformClass(Class original, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
Transforms classes. Adds PK if such does not exist.- Parameters:
original
- original elementtarget
- mapped elementmapped
- contains original element's transformation result- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
transformClassifier
private void transformClassifier(Classifier original, Element target, java.util.Collection<Element> mapped)
-
addTableStereotype
private void addTableStereotype(Classifier original, Element target)
-
markAsRemoved
public void markAsRemoved(java.util.Collection<? extends Element> originalElements)
Adds elements to removed elements list.- Parameters:
originalElements
- list of elements to be added
-
getTransformedTableStereotype
protected java.util.List<Stereotype> getTransformedTableStereotype(Element original)
-
transformAttribute
protected void transformAttribute(Property original, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
Transforms attributes. Adds PK, unique, index constrains if required.- Parameters:
original
- original attributetarget
- element (attribute or operation)mapped
- list of all mapped elements- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
expandPropertyWithEnum
public void expandPropertyWithEnum(java.util.Collection<Element> transformed)
-
setEnumerationPropertyType
private void setEnumerationPropertyType(Property targetProperty)
-
createCheckConstraintForEnum
public java.util.Collection<Element> createCheckConstraintForEnum(Property targetProperty)
-
createEnumCheckConstraintBody
@CheckForNull private java.lang.String createEnumCheckConstraintBody(Property targetProperty)
-
expandPropertyNameWithType
public java.util.Collection<Property> expandPropertyNameWithType(Property original, Property target, java.util.Set<Type> processedTypes, com.nomagic.magicdraw.dmn.transformation.uml2ddl.traversal.PropertyExpansion propertyExpansion)
-
generatePropertyName
public java.lang.String generatePropertyName(java.lang.String originalPropertyName, java.lang.String typePropertyName, java.lang.String targetOwnerName)
-
replace
private static java.lang.String replace(java.lang.String originalString, java.lang.String placeholder, java.lang.String replaceString)
-
getTypeAttributes
private java.util.List<Property> getTypeAttributes(Property original, java.util.Set<Type> processedTypes, com.nomagic.magicdraw.dmn.transformation.uml2ddl.traversal.PropertyExpansion propertyExpansion)
-
expandWithTypeProperties
public boolean expandWithTypeProperties(Type type)
-
transformMultiplicity
private void transformMultiplicity(Property original, Property target)
If property multiplicity is in range of [0..1] (0, 1, 0..1) appropriate null/not null stereotype is added.- Parameters:
original
- original property used to retrieve multiplicitytarget
- transformed property, where null/not null stereotype will be applied
-
copyMultipleValuesProperty
private java.util.Collection<Element> copyMultipleValuesProperty(Property originalProperty, Property transformedProperty, java.util.Collection<Element> transformed)
-
setEnumSlotsForCopiedProperties
private void setEnumSlotsForCopiedProperties(Property targetProperty, java.util.Collection<? extends Property> properties)
-
expandSlotValues
private void expandSlotValues(java.util.Collection<? extends Property> properties, EnumerationLiteral literal, Slot slot)
-
copyTransformedProperty
private java.util.Collection<Element> copyTransformedProperty(Property originalProperty, Property targetProperty, java.util.Collection<Element> transformed, com.nomagic.magicdraw.dmn.transformation.uml2ddl.UML2DDLCopyPasteManager copyManager, boolean isNull)
Copies end returns transformed property- Parameters:
originalProperty
- property which transformed elements will be copiedtargetProperty
- target propertytransformed
- list of elements to be copiedcopyManager
- copy managerisNull
- indicates if column value can be null- Returns:
- list of copied elements
-
processKeyProperty
protected void processKeyProperty(Element original, Element target, Classifier originalOwner, java.util.Collection<Element> transformed)
Helper method used to transform key property- Parameters:
original
- element to be processedtarget
- element in transformed model, corresponding to original elementtransformed
- list of transformed elements
-
processKey
protected void processKey(Element original, Element target, java.util.Collection<Element> transformed, com.nomagic.magicdraw.dmn.transformation.uml2ddl.keys.KeyGenerator generator)
-
getOneToOneMap
protected java.util.Map<BaseElement,BaseElement> getOneToOneMap()
Returns transformation map where transformation source element corresponds to 'nearest' (by type) transformed element- Overrides:
getOneToOneMap
in classAnyToAnyModelTransformation
- Returns:
- transformation map
-
findSameElement
@CheckForNull private Element findSameElement(Element elementToFind)
Locates 'nearest' transformed element to elementToFind- Parameters:
elementToFind
- original element, which transformed element must be found- Returns:
- found 'nearest' transformed element. If element not found, null is returned.
-
transformDiagram
protected void transformDiagram(Diagram target) throws ReadOnlyElementException
Transform the class diagrams into the DDL diagrams.- Parameters:
target
- target diagram- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
transformGeneralization
protected void transformGeneralization(Generalization originalGeneralization, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
Transforms generalization.- Parameters:
originalGeneralization
- original generalizationtarget
- mapped element (generalization or model class)mapped
- list of all mapped elements- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
canHaveConstraint
public static boolean canHaveConstraint(Element element)
-
transformAbstraction
protected void transformAbstraction(Abstraction original, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
Transforms abstraction.- Parameters:
original
- original abstractiontarget
- mapped element (abstraction or model class)mapped
- list of all mapped elements- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
transformAssociation
protected void transformAssociation(Association original, Element target, java.util.Collection<Element> mapped) throws ReadOnlyElementException
Transforms association. Adds association table for many-to-many relationships.- Parameters:
original
- original associationtarget
- mapped element (association or model class)mapped
- list of all mapped elements- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
getRoot
public Classifier getRoot(Classifier element)
Returns element's root from which it is derived. If element is not part of generalization tree, then root is element itself.- Parameters:
element
- root of this element will be returned.- Returns:
- root element. If no root exists, same element as root is returned.
-
getPKRoot
public Classifier getPKRoot(Classifier element)
-
setRoot
public void setRoot(Classifier element, Classifier root)
Remembers element's root from which it is derived.- Parameters:
element
- derived elementroot
- element's root
-
hasRootChildren
public boolean hasRootChildren(Classifier element)
Checks if root element has descendant(s).- Parameters:
element
- to be checked- Returns:
- true if root element has descendant(s), otherwise false is returned
-
getMappedClassifier
public Classifier getMappedClassifier(Element original)
Returns transformed original element as Classifier.- Parameters:
original
- element from source model- Returns:
- element Classifier target. If it does not exists, null is returned
-
getDDLModelHelper
public com.nomagic.magicdraw.dmn.ce.ddl.DDLModelHelper getDDLModelHelper()
Returns DDL ModelHelper- Returns:
- DDL ModelHelper
-
getDiagramType
private java.lang.String getDiagramType()
Returns diagram type id- Returns:
- diagram type id
-
setTransformationType
public void setTransformationType(int type)
Sets transformation type.- Parameters:
type
- transformation type id
-
getTransformationType
public int getTransformationType()
Returns transformation type id- Returns:
- transformation type id
-
getPackageHierarchyAction
@CheckForNull private java.lang.String getPackageHierarchyAction()
Returns PackageHierarchy action property- Returns:
- PackageHierarchy action property
-
getStringProperty
@CheckForNull public java.lang.String getStringProperty(java.lang.String property)
Returns string property- Parameters:
property
- property name- Returns:
- value
-
getOriginalRoot
@CheckForNull private Package getOriginalRoot(@CheckForNull Package element)
Returns root package of the list- Parameters:
element
- child package- Returns:
- root package
-
flattenPackages
private void flattenPackages(Package target, @CheckForNull Package mappedRoot, boolean stripPackage) throws ReadOnlyElementException
Flattens or strips packages.- Parameters:
target
- model package to flatten or stripmappedRoot
- root package to move child elements of targetstripPackage
- true for "strip packages"- Throws:
ReadOnlyElementException
- this exception is thrown if processed element has read-only status
-
hasPackage
private static boolean hasPackage(Package mp)
Checks if model package has child model packages- Parameters:
mp
- model package to check- Returns:
- true if has child model package
-
isChildOf
private static boolean isChildOf(Element child, Element parent)
Checks if model element is child of parent model element- Parameters:
child
- child elementparent
- parent element- Returns:
- true if is
-
hasElementWithTheSameName
private static boolean hasElementWithTheSameName(Element child, Element parent)
Checks for elements in parent with the same name like element name- Parameters:
child
- element to check forparent
- parent element- Returns:
- true if parent has elements with the same name like child element name
-
renameElement
private void renameElement(NamedElement element, NamedElement parent)
Renames element- Parameters:
element
- element nameparent
- parent of element
-
findWithSameName
@CheckForNull private static Element findWithSameName(Element newElement, Element newParent)
Find elements with the same name- Parameters:
newElement
- element to checknewParent
- parent element to check in- Returns:
- found element
-
stripAllStereotypes
protected void stripAllStereotypes(Element element)
Strips all stereotypes from model element- Parameters:
element
- element to strip from
-
stripAllStereotypesByProfile
protected void stripAllStereotypesByProfile(@CheckForNull Element element, @CheckForNull Package profile)
Strips all stereotypes from model element by profile- Parameters:
element
- element to strip fromprofile
- profile model package
-
setEntityPropertiesCopyStrategy
private void setEntityPropertiesCopyStrategy(com.nomagic.magicdraw.dmn.transformation.ProcessingContext context, PropertyManager manager)
Retrieves Generalization transformation type, converts it to property copy strategy and set it into processing context- Parameters:
context
- processing contextmanager
- property manager
-
removeNonRootTable
private boolean removeNonRootTable(Classifier original)
Helper method used to check if original table is non root table and must be removed- Parameters:
original
- table to be checked- Returns:
- return true if original table must be removed, otherwise false is returned
-
hasSameRoot
public boolean hasSameRoot(Classifier element1, Classifier element2)
Checks if both elements from generalization tree have same root element.- Parameters:
element1
- to be checkedelement2
- to be checked- Returns:
- true if both have same root element, false - otherwise
-
removeAbstractEntity
public boolean removeAbstractEntity(Element entity)
This method checks if abstract entity must be removed.- Parameters:
entity
- to be checked- Returns:
- true if entity is abstract and must be removed, false - otherwise
-
removeMappedElements
public void removeMappedElements(java.util.Collection<Element> targetElements)
Clear transformation elements maps from elements in targetElements- Parameters:
targetElements
- list of elements to be removed
-
removeMappedElements
public void removeMappedElements(Element original, java.util.Collection<Element> targetElements)
-
findInCollection
@CheckForNull public <T extends Element> T findInCollection(java.util.Collection<? extends Element> elements, java.lang.String name, java.lang.Class<T> classType)
Helper method that locates element with specified name and type in list of elements- Parameters:
elements
- list of elements to be searched.name
- of element to be foundclassType
- type of element to be found- Returns:
- found element, null - if not found
-
getSelectorDataType
private DataType getSelectorDataType(PropertyManager pm, java.lang.String propertyName)
Retrieves DataType object by it's name- Parameters:
pm
- property managerpropertyName
- property containing DataType name- Returns:
- found DataType object. If no DataType with specified name exists, null is returned
-
getDataType
private DataType getDataType(java.lang.String typeName)
-
getElementOwner
@CheckForNull public <T extends Element> T getElementOwner(Element element, java.lang.Class<T> type)
Finds element's owner that is of specified type- Parameters:
element
- this element's owner will be returned.type
- owner type- Returns:
- element's owner, if owner of specified type is not found, null is returned.
-
getOriginalMappedElements
public java.util.Collection<Element> getOriginalMappedElements(Element original)
Returns transformed elements for given original element.- Parameters:
original
- original element.- Returns:
- mapped elements if original was mapped; empty collection if original was mapped to nothing;
-
setOriginalElementsMapping
public void setOriginalElementsMapping(Element original, java.util.Collection<Element> elements)
Sets transformed elements original mapping for given original element.- Parameters:
original
- original element.elements
- list of transformed elements to add
-
createElementUpdater
protected com.nomagic.magicdraw.modeltransformations.impl.any_to_any.ElementUpdater createElementUpdater()
- Overrides:
createElementUpdater
in classAnyToAnyModelTransformation
- Returns:
- element updater.
-
getElementIdentifier
public com.nomagic.magicdraw.dmn.transformation.ElementIdentifier getElementIdentifier()
Returns stereotype mapper that is used to map stereotypes between DDL flavors or DDL and ER. It is useful when different stereotypes refers to same feature.- Returns:
- stereotype mapper
-
setElementIdentifier
public void setElementIdentifier(com.nomagic.magicdraw.dmn.transformation.ElementIdentifier elementIdentifier)
Sets stereotype mapper that is used to map stereotypes between DDL flavors or DDL and ER. It is useful when different stereotypes refers to same feature.- Parameters:
elementIdentifier
- new stereotype mapper
-
getProcessingContext
public com.nomagic.magicdraw.dmn.transformation.ProcessingContext getProcessingContext()
Returns processing context that is used to contain specific current transformation related data. Also it contains different transformation specific key generators that can be changed dynamically to alter transformation behavior.- Returns:
- processing context
-
setProcessingContext
public void setProcessingContext(com.nomagic.magicdraw.dmn.transformation.ProcessingContext processingContext)
Sets processing context that is used to contain specific current transformation related data. Also it contains different transformation specific key generators that can be changed dynamically to alter transformation behavior.- Parameters:
processingContext
- new processing context
-
getSelectorDataType
public DataType getSelectorDataType()
Returns selector data type that name is specified in transformation properties and type itself is retrieved from ddl profile.- Returns:
- selector data type
-
getCopyStrategyFactory
public com.nomagic.magicdraw.dmn.transformation.uml2ddl.copystrategies.ElementsCopyStrategiesFactory getCopyStrategyFactory()
Returns transaction specific factory that returns elements copy strategy used to copy elements in generalization tree.- Returns:
- transaction specific elements copy factory
-
setCopyStrategyFactory
public void setCopyStrategyFactory(com.nomagic.magicdraw.dmn.transformation.uml2ddl.copystrategies.ElementsCopyStrategiesFactory copyStrategyFactory)
Sets transaction specific factory that returns elements copy strategy used to copy elements in generalization tree.- Parameters:
copyStrategyFactory
- new transaction specific elements copy factory
-
transformElementName
public java.lang.String transformElementName(java.lang.String originalName, @CheckForNull Element namedElement, Element target)
-
excludeFromTransformation
public boolean excludeFromTransformation(java.lang.Object sourceElement, java.util.List<OpaqueBehavior> exclusionRules)
-
getExcludeElementsCallExpression
private com.nomagic.magicdraw.expressions.specification.CallExpressionSpecification getExcludeElementsCallExpression(@CheckForNull Element sourceElement, OpaqueBehavior namingRule)
-
getNamingRuleCallExpression
private com.nomagic.magicdraw.expressions.specification.CallExpressionSpecification getNamingRuleCallExpression(java.lang.String originalName, Element namedElement, @CheckForNull Element target, OpaqueBehavior namingRule)
-
makeCall
private java.lang.Object makeCall(com.nomagic.magicdraw.expressions.specification.CallExpressionSpecification callExpressionSpecification, ExpressionContext context)
-
getNamingRules
private java.util.List<OpaqueBehavior> getNamingRules()
-
getExclusionRules
private java.util.List<OpaqueBehavior> getExclusionRules(PropertyManager pm)
-
getRules
private java.util.List<OpaqueBehavior> getRules(java.lang.String propertyName, PropertyManager pm)
-
-