Class AnyToAnyModelTransformation

    • Field Detail

      • mMappedTypes

        private final java.util.List<? extends java.lang.Class> mMappedTypes
      • mNotSettableProperties

        private final java.util.List<java.lang.String> mNotSettableProperties
      • mDoNotReconnect

        private final java.util.List<? extends java.lang.Class> mDoNotReconnect
      • mDoNotCopyTypes

        private final java.util.List<? extends java.lang.Class> mDoNotCopyTypes
      • mTransformationMap

        protected java.util.Map<Element,​java.util.Collection<Element>> mTransformationMap
      • mTransformationsPackage

        private Package mTransformationsPackage
      • mDestinationPackage

        private Package mDestinationPackage
      • mRemoveElements

        private java.util.Collection<Element> mRemoveElements
      • mAlreadyVisitedElements

        private java.util.Collection<Element> mAlreadyVisitedElements
      • mCopy

        private boolean mCopy
      • mObjectsToTransform

        private java.util.List<Element> mObjectsToTransform
      • mTypeMapper

        private com.nomagic.magicdraw.modeltransformations.impl.any_to_any.TypeMapper mTypeMapper
      • mCustomMappedElements

        private java.util.Map<Element,​java.util.List<Element>> mCustomMappedElements
      • mRemovedByCustomTransformation

        private java.util.Collection<Element> mRemovedByCustomTransformation
      • mSyncDestination

        private boolean mSyncDestination
      • mSkippedElements

        private java.util.Collection<Element> mSkippedElements
      • mTask

        private Task mTask
      • mCopiedElements

        private final java.util.Collection<Element> mCopiedElements
    • Constructor Detail

      • AnyToAnyModelTransformation

        public AnyToAnyModelTransformation()
    • Method Detail

      • createDefaultDoNotCopyTypes

        protected java.util.List<? extends java.lang.Class> createDefaultDoNotCopyTypes()
      • createDefaultDoNotReconnectTypes

        protected java.util.List<? extends java.lang.Class> createDefaultDoNotReconnectTypes()
      • createDefaultDoNotSettableProperties

        protected java.util.List<java.lang.String> createDefaultDoNotSettableProperties()
      • createDefaultMappedTypes

        protected java.util.List<java.lang.Class> createDefaultMappedTypes()
      • transform

        @CheckForNull
        public Package transform​(@CheckForNull
                                 java.util.Collection selectedObjects,
                                 @CheckForNull
                                 ModelTransformationInfo info,
                                 TypeMapProfile typeMap,
                                 PropertyManager propertyManager,
                                 Package destination)
                          throws ReadOnlyElementException
        Description copied from interface: ModelTransformation
        Performs transformation on specific set of objects
        Specified by:
        transform in interface ModelTransformation
        Parameters:
        selectedObjects - set of objects to transform
        info - model transformation info
        typeMap - type map profile to use for transformation, null for none
        propertyManager - transformation properties
        destination - destination model packages, null for transformation in place
        Returns:
        transformation model package (where transformation links are stored)
        Throws:
        ReadOnlyElementException - in case target model elements are read-only
      • setDescription

        private void setDescription​(java.lang.String string)
      • needToUpdate

        private boolean needToUpdate()
        Returns:
        true if model should be updated from source. In other case only new elements are added to model.
      • customTransformations

        protected void customTransformations()
      • isSkipElement

        protected boolean isSkipElement​(Element element)
        Check if element should be skipped
        Parameters:
        element - element
        Returns:
        true if element can not be processed by custom transformation
      • disposeRemovedElementsFromCustomTransformations

        private void disposeRemovedElementsFromCustomTransformations​(com.nomagic.magicdraw.commands.MacroCommand macro)
      • invokeCustomTransformation

        public void invokeCustomTransformation​(java.util.Collection<? extends Element> original)
        Invokes custom transformation for collection.
        Parameters:
        original - original elements
        See Also:
        invokeCustomTransformation(Element)
      • invokeCustomTransformation

        public void invokeCustomTransformation​(Element original)
        Invokes custom transformation for element. If custom transformation was already invoked, this method does nothing.
        Parameters:
        original - original element for which custom transformation is invoked.
      • processMappingResult

        protected void processMappingResult​(Element original,
                                            java.util.Collection<Element> mappedElements,
                                            java.util.Collection<Element> originalMappedElements)
      • processMappedElements

        protected void processMappedElements​(Element original,
                                             java.util.Collection<Element> mappedElements,
                                             java.util.Collection<Element> originalMappedElements)
      • setTransformationMapValue

        protected void setTransformationMapValue​(Element original,
                                                 java.util.Collection<Element> mappedElements)
      • customTransformationForElement

        protected void customTransformationForElement​(Element original,
                                                      java.util.Collection<Element> mapped)
                                               throws ReadOnlyElementException
        Custom transformations should override this method to add additional functionality.
        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 - in case of error
      • getMappedElements

        public java.util.Collection<Element> getMappedElements​(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;
      • updateTransform

        public void updateTransform​(Package transformationPackage,
                                    TypeMapProfile typeMap,
                                    PropertyManager propertyManager,
                                    boolean syncDestination)
                             throws ReadOnlyElementException
        Description copied from interface: ModelTransformation
        Updates transformation on specific set of objects
        Specified by:
        updateTransform in interface ModelTransformation
        Parameters:
        transformationPackage - package containing transformation links
        typeMap - type map profile to use for transformation, null for none
        propertyManager - transformation properties
        syncDestination - true for destination overwrite
        Throws:
        ReadOnlyElementException - in case target model elements are read-only
      • getAllMappedElements

        private java.util.Collection<Element> getAllMappedElements()
      • transformTypes

        private void transformTypes​(com.nomagic.magicdraw.commands.MacroCommand macro)
      • getOriginalElements

        protected java.util.Collection<Element> getOriginalElements()
        Returns:
        all original elements.
      • getOriginalElement

        public <T extends Element> java.util.Collection<T> getOriginalElement​(Element mapped,
                                                                              java.lang.Class<T> type)
        Returns original elements which are mapped to given mapped element.
        Parameters:
        mapped - original elements that are mapped to this element will be returned
        type - only this type of elements will be returned.
        Returns:
        collection of original elements. If there is no original elements returns empty list.
      • getOriginalElement

        protected java.util.Collection<Element> getOriginalElement​(Element mapped)
        Returns original elements which are mapped to given mapped element.
        Parameters:
        mapped - mapped element
        Returns:
        collection of original elements. If there is no original elements returns empty list.
      • changeType

        @CheckForNull
        private com.nomagic.magicdraw.commands.Command changeType​(Element me,
                                                                  com.nomagic.magicdraw.modeltransformations.impl.any_to_any.TypeMapper typeMapper)
      • reportROElement

        void reportROElement​(Element me)
      • collectDiagrams

        private java.util.List<Diagram> collectDiagrams​(java.util.Collection<Element> objects,
                                                        boolean collectMapped)
      • isContainedBy

        private boolean isContainedBy​(Element element,
                                      java.util.Collection<Element> owners)
        Checks if given element is contained by some given owner (directly or indirectly)
        Parameters:
        element - element
        owners - owners
        Returns:
        true if is contained
      • copyElements

        protected com.nomagic.magicdraw.commands.MacroCommand copyElements​(java.util.List<Element> objects)
        Copies elements
        Parameters:
        objects - objects
        Returns:
        command for copying
      • createExternalMapForCopyPasteManager

        private java.util.Map<BaseElement,​BaseElement> createExternalMapForCopyPasteManager()
      • createElementUpdater

        protected com.nomagic.magicdraw.modeltransformations.impl.any_to_any.ElementUpdater createElementUpdater()
        Returns:
        element updater.
      • getOneToOneMap

        protected java.util.Map<BaseElement,​BaseElement> getOneToOneMap()
        Returns:
        map where one key is mapped only to one element
      • getTypeMapper

        protected com.nomagic.magicdraw.modeltransformations.impl.any_to_any.TypeMapper getTypeMapper()
        Returns:
        type mapper.
      • getTarget

        @CheckForNull
        public <T extends Element> T getTarget​(Element original,
                                               java.lang.Class<T> type)
        Returns transformed element that's transformation source is 'original' element and it's type is specified in 'type'
        Parameters:
        original - source model element.
        type - type of returned element.
        Returns:
        transformed element. If no element found - null is returned.
      • updateDiagrams

        protected com.nomagic.magicdraw.commands.MacroCommand updateDiagrams()
        Updates diagram with newly added elements during transformation update phase.
        Returns:
        update macro command
      • addClonedElements

        private java.util.Map<BaseElement,​BaseElement> addClonedElements​(java.lang.Iterable<PresentationElement> originalVisiblePresentationElements)
        If originalVisiblePresentationElements
        Parameters:
        originalVisiblePresentationElements - contains path elements, that cloned ends will be returned.
        Returns:
        map of path elements cloned ends.
      • addClonedElement

        private void addClonedElement​(PresentationElement originalPE,
                                      Diagram targetDiagram,
                                      java.util.Map<BaseElement,​BaseElement> cloned)
        Adds cloned end to cloned map
        Parameters:
        originalPE - presentation element, that's clone will be added into map
        targetDiagram - diagram containing cloned end
        cloned - map where cloned end will be stored
      • getNewlyAddedElements

        private java.util.List<PresentationElement> getNewlyAddedElements​(java.util.Collection<PresentationElement> elements)
        Returns list of presentation elements from original diagram, that are newly added.
        Parameters:
        elements - list of presentation elements to filter
        Returns:
        list of newly added presentation elements.
      • isNewlyAdded

        private boolean isNewlyAdded​(@CheckForNull
                                     Element element)
        Checks if specified element is newly added element in diagram
        Parameters:
        element - to be checked
        Returns:
        true if element is newly added into diagram
      • copyDiagrams

        private com.nomagic.magicdraw.commands.MacroCommand copyDiagrams​(java.util.Collection<Diagram> diagrams)
        Copies diagrams
        Parameters:
        diagrams - diagrams
        Returns:
        command for copying diagram
      • removeUnCreatable

        private void removeUnCreatable​(java.util.Collection<PresentationElement> elements)
      • sortOriginalElements

        protected void sortOriginalElements​(java.util.List<Element> objects)
        Sorts elements before invoking custom transformation
        Parameters:
        objects - objects
      • collectInnerElements

        protected java.util.List<Element> collectInnerElements​(java.util.Collection<Element> objects,
                                                               boolean update)
      • isCopyableValueOfMetaProperty

        private boolean isCopyableValueOfMetaProperty​(Element element)
      • collectRelatedElements

        private java.util.List<Element> collectRelatedElements​(java.util.Collection<Element> objects,
                                                               boolean update)
      • isMappableElement

        protected boolean isMappableElement​(Element element)
        Parameters:
        element - element to check.
        Returns:
        true if transformation can be applied for this element.
      • getTransformationsPackage

        public Package getTransformationsPackage()
        Returns:
        package where transformation information is stored
      • isTransformationInPlace

        public boolean isTransformationInPlace()
        Returns:
        true if transformation is in place (not copying)
      • getPropertyManager

        public PropertyManager getPropertyManager()
        Returns:
        property manager for additional transformation properties
      • copyElementInto

        protected Element copyElementInto​(Element source,
                                          Element parent)
        Copies and pastes given element.
        Parameters:
        source - element to copy.
        parent - parent where place copied element.
        Returns:
        copied element.
      • setTask

        public void setTask​(Task task)
        Description copied from interface: ModelTransformation
        Sets task for transformation. Transformation can use Task for accesing progress status and etc.
        Specified by:
        setTask in interface ModelTransformation
        Parameters:
        task - transformation task
      • isElementCopied

        protected boolean isElementCopied​(Element element)
      • isTypeMapSet

        public boolean isTypeMapSet()
      • getNotSettableProperties

        public java.util.List getNotSettableProperties()
      • loadElements

        private boolean loadElements()
      • showNotLoadedElementWarning

        private static void showNotLoadedElementWarning​(java.lang.String key,
                                                        Element element)
      • getRemovedByCustomTransformation

        protected java.util.Collection<Element> getRemovedByCustomTransformation()
      • markAsAlreadyVisited

        protected void markAsAlreadyVisited​(Element element)
      • isAlreadyVisited

        protected boolean isAlreadyVisited​(Element element)