Class Project

    • Field Detail

      • sortKeys

        private com.nomagic.magicdraw.uml.SortKeys sortKeys
        Holds sorting keys. The element has predefined set of sort keys(for example name, stereotype name, visibility and etc)
      • id

        private java.lang.String id
        The ID of the element.
      • listeners

        @CheckForNull
        private com.nomagic.utils.AList<java.beans.PropertyChangeListener> listeners
        The element can registry a property change listeners and fire property change events on some property value change. This member keeps a reference to the PropertyChangeSupport.
      • FEATURES

        private static final java.util.Set<java.lang.String> FEATURES
        A set of ci features available in runtime
      • closed

        private volatile boolean closed
        Is project disposed
      • frozen

        private volatile boolean frozen
        Is project frozen - some project data may not be accessible if project is frozen
      • closing

        private volatile boolean closing
        Is project closing
      • relocatingIn

        private volatile boolean relocatingIn
        Is project relocating
      • COMMAND_EXECUTED

        @OpenApi
        public static final java.lang.String COMMAND_EXECUTED
        The any command (adding object, deleting object, changing specifications) executing event type and naming.
        See Also:
        Constant Field Values
      • DIAGRAM_OPENED

        @OpenApi
        public static final java.lang.String DIAGRAM_OPENED
        The diagram window opening event type and naming.
        See Also:
        Constant Field Values
      • DIAGRAM_CLOSED

        @OpenApi
        public static final java.lang.String DIAGRAM_CLOSED
        The diagram window closing event type and naming.
        See Also:
        Constant Field Values
      • DIAGRAM_EDITED

        @OpenApi
        public static final java.lang.String DIAGRAM_EDITED
        The any diagram properties editing event type and naming.
        See Also:
        Constant Field Values
      • DIAGRAM_ACTIVATED

        @OpenApi
        public static final java.lang.String DIAGRAM_ACTIVATED
        The diagram focus on event type and naming.
        See Also:
        Constant Field Values
      • DIAGRAM_WINDOW_ACTIVATED

        @OpenApi
        public static final java.lang.String DIAGRAM_WINDOW_ACTIVATED
        The diagram window focus on event type and naming.
        See Also:
        Constant Field Values
      • MANY_CLASSES_UPDATED

        public static final java.lang.String MANY_CLASSES_UPDATED
        Event type when many elements in project are changed (for example after project update,massive source reverse operation and etc)
        See Also:
        Constant Field Values
      • FILE_NAME_PROPERTY

        public static final java.lang.String FILE_NAME_PROPERTY
        Project file name property
        See Also:
        Constant Field Values
      • DIRTY_PROPERTY

        public static final java.lang.String DIRTY_PROPERTY
        Project "dirty" flag change
        See Also:
        Constant Field Values
      • counter

        private com.nomagic.magicdraw.core.MDCounter counter
        Counter for ID
      • needLocallySave

        private boolean needLocallySave
      • createBrowser

        private static boolean createBrowser
        Create project with or without browser.
      • windows

        private final java.util.Map<java.lang.String,​ProjectWindow> windows
      • commandHistory

        private final com.nomagic.magicdraw.commands.CommandHistory commandHistory
        Command history of project instance. It performs command executing, storing, undoing.
      • symbolUpdater

        @CheckForNull
        private com.nomagic.magicdraw.commands.SymbolUpdater symbolUpdater
        Explicitly set symbol updater. By default command history is used.
      • diagramWindowsManager

        private final com.nomagic.magicdraw.ui.ProjectDiagramWindowsManager diagramWindowsManager
        The window manager
      • objectsByID

        private final java.util.Map<java.lang.String,​java.lang.Object> objectsByID
        The map of all objects registered by id.
      • stateChangeHandler

        private StateChangeHandler stateChangeHandler
        State changes handler.
      • stereotypesStyleChangeManager

        private final com.nomagic.magicdraw.uml.symbols.StereotypesStyleChangeManager stereotypesStyleChangeManager
      • rootPackage

        private Package rootPackage
      • proxyManager

        private final ProxyManager proxyManager
        Proxy manager
      • dslManager

        private com.nomagic.magicdraw.ui.dsl.DSLManager dslManager
        Project customization manager
      • loaded

        private boolean loaded
      • file

        private com.nomagic.magicdraw.utils.ExtendedFile file
      • elementByIDFetcher

        private final com.nomagic.magicdraw.core.Project.ElementByIDFetcher elementByIDFetcher
      • binaryStreamAtticCleaner

        private final com.nomagic.magicdraw.core.BinaryStreamAtticCleaner binaryStreamAtticCleaner
      • primaryProject

        private IPrimaryProject primaryProject
        Storage where project is loaded from or saved to.
      • queryFactory

        private com.nomagic.ci.persistence.local.query.IQueryFactory queryFactory
      • hasUnloadedManuallyReachableModules

        @CheckForNull
        private java.lang.Boolean hasUnloadedManuallyReachableModules
        Determines whether there are manually reachable modules that are unloaded currently in this project
      • projectTitle

        private java.lang.String projectTitle
        Preset project title
      • intensiveActionExecuted

        private volatile boolean intensiveActionExecuted
      • serviceProvider

        private final com.nomagic.uml2.project.service.ProjectServiceProvider serviceProvider
      • queryChangeRegistry

        private final java.util.concurrent.atomic.AtomicReference<com.nomagic.ci.persistence.local.query.IQueryChangeRegistry> queryChangeRegistry
      • lockProjectService

        private com.nomagic.magicdraw.teamwork2.esi.EsiLockProjectService lockProjectService
      • diagramContentListeners

        private final com.nomagic.utils.ExtendedPropertyChangeSupport diagramContentListeners
    • Constructor Detail

      • Project

        public Project()
        Constructor creates project.
    • Method Detail

      • isCreateBrowser

        public static boolean isCreateBrowser()
      • setCreateBrowser

        public static void setCreateBrowser​(boolean createBrowser)
      • getElementsIDs

        public static java.util.Collection<java.lang.String> getElementsIDs​(java.util.Collection<? extends BaseElement> elements)
        Retrieves the elements ids from DTObjects collection.
        Parameters:
        elements - collection of elements to get ID's for
        Returns:
        the collection of elements ids from the DTObjects collection.
      • executeIntensiveAction

        public boolean executeIntensiveAction​(java.lang.String reason)
        Executes time-intensive action if user agrees to.
        Parameters:
        reason - reason why the action might take a long time
        Returns:
        true if execute action
      • getProxyManager

        @OpenApi
        public ProxyManager getProxyManager()
        Returns:
        proxy manager of the project
      • getDSLManager

        public com.nomagic.magicdraw.ui.dsl.DSLManager getDSLManager()
        Returns project customization manager.
        Returns:
        the manager.
      • getBrowser

        @OpenApi
        public Browser getBrowser()
        Get browser.
        Returns:
        browser.
      • getOptions

        @OpenApi
        public ProjectOptions getOptions()
        Getter for project options.
        Returns:
        project options
      • getCommandHistory

        public com.nomagic.magicdraw.commands.CommandHistory getCommandHistory()
        Returns:
        project command history.
      • setSpecificSymbolUpdater

        public void setSpecificSymbolUpdater​(@CheckForNull
                                             com.nomagic.magicdraw.commands.SymbolUpdater symbolUpdater)
      • getSymbolUpdater

        public com.nomagic.magicdraw.commands.SymbolUpdater getSymbolUpdater()
      • getElementByIDQuerier

        public com.nomagic.magicdraw.core.Project.ElementByIDFetcher getElementByIDQuerier()
      • getDiagrams

        @OpenApi
        public java.util.Collection<DiagramPresentationElement> getDiagrams()
        Returns all existing diagrams stored in this Project.
        Returns:
        all existing DiagramPresentationElements. The collection is unmodifiable.
        See Also:
        DiagramPresentationElement
      • getDiagrams

        @OpenApi
        public java.util.Collection<DiagramPresentationElement> getDiagrams​(@CheckForNull
                                                                            java.lang.String type)
        Returns existing diagrams of given type stored in Project.

        Parameters:
        type - the given diagrams type. Returns all diagrams if type is null.
        Returns:
        collection of all diagram views.

        See Also:
        DiagramPresentationElement
      • getDiagram

        @CheckForNull
        @OpenApi
        public DiagramPresentationElement getDiagram​(Diagram diagramElement)
        Returns diagram presentation element for specified diagram model element.
        Parameters:
        diagramElement - diagram model element
        Returns:
        diagram presentation element.
      • setModel

        public void setModel​(Package p)
      • getTitle

        @CheckForNull
        public java.lang.String getTitle()
        Returns:
        project title
      • setTitle

        public void setTitle​(java.lang.String title)
      • getFileName

        @CheckForNull
        @OpenApi
        public java.lang.String getFileName()
        Method returns file name of this project. If file name is undefined returns project name.
        Returns:
        file name of this project.
      • getDirectory

        @Deprecated
        public java.lang.String getDirectory()
        Deprecated.
        use #getFile.getParent
        Returns project directory.

        Returns:
        project location directory.
      • setDirectory

        @Deprecated
        public void setDirectory​(java.lang.String dir)
        Deprecated.
        Sets the project directory.

        Parameters:
        dir - the new project directory.
      • setName

        @Deprecated
        public void setName​(java.lang.String name)
        Deprecated.
        Sets the project name.

        Parameters:
        name - the new project name.
      • getFile

        public com.nomagic.magicdraw.utils.ExtendedFile getFile()
        Method returns file of this project.
        Returns:
        file of this project
      • setFileName

        public void setFileName​(java.lang.String fileName)
        Set the name of file as location of this project. Only local projects or locally saved remote projects can have file name.
        Parameters:
        fileName - absolute file path
      • getCounter

        public com.nomagic.magicdraw.core.MDCounter getCounter()
        Returns:
        id counter
      • getStyleManager

        @CheckForNull
        public StyleManager getStyleManager()
        Returns style manager
        Returns:
        style manager
      • getProjectDiagramWindowsManager

        public com.nomagic.magicdraw.ui.ProjectDiagramWindowsManager getProjectDiagramWindowsManager()
        Returns:
        diagrams windows manager
      • isRemote

        @OpenApi
        public boolean isRemote()
        Returns the remote or not remote state of the project.
        Returns:
        true if project is a remote project, false otherwise.
      • isEsiProject

        @OpenApi
        public boolean isEsiProject()
        Determines whether this is an ESI project
        Returns:
        true if ESI project, false otherwise
      • isDirty

        @OpenApi
        public boolean isDirty()
        Returns true if this project was modified after last save/load.
        Returns:
        true if this project was modified after last save/load.
      • setDirty

        @OpenApi
        public void setDirty​(boolean dirty,
                             StateChangeHandler.DirtyType dirtyType)
        Marks this project modified and sets modification type depending on previous type.
        Parameters:
        dirty - new dirty flag.
        dirtyType - specifies how much dirty is project.
        If dirtyType == null, then default dirtyType value (DirtyType.HARD_DIRTY) is set.
        If dirty == true && dirtyType == DirtyType.SOFT_DIRTY and project is already in state
        dirty == true && dirtyType == DirtyType.HARD_DIRTY, then project's state is not going to be changed.
      • getDirtyType

        @CheckForNull
        @OpenApi
        public StateChangeHandler.DirtyType getDirtyType()
        Returns project dirty type if project is dirty, otherwise - null.
        Returns:
        project dirty type
      • reSetDirty

        @OpenApi
        public void reSetDirty​(boolean dirty,
                               @CheckForNull
                               StateChangeHandler.DirtyType dirtyType)
        Marks this project modified and sets modification type without checking previous project's dirty type.
        Parameters:
        dirty - new dirty flag.
        dirtyType - specifies how much dirty is project. If dirtyType == null, then default dirtyType value (DirtyType.HARD_DIRTY) is set.
      • setCounter

        public void setCounter​(com.nomagic.magicdraw.core.MDCounter c)
        Sets the counter for the project.
        Parameters:
        c - the new counter;
      • addElementByID

        public void addElementByID​(BaseElement obj,
                                   @CheckForNull
                                   java.lang.String oldID)
        Register the object by id. The record about this object and its old id is removed.
        Specified by:
        addElementByID in interface ElementRegistry
        Parameters:
        obj - the object to register.
        oldID - the old id of the object.
      • getEsiLockProjectService

        private com.nomagic.magicdraw.teamwork2.esi.EsiLockProjectService getEsiLockProjectService()
      • updateElementLockState

        private void updateElementLockState​(BaseElement obj)
      • addToProjectRepository

        @OpenApi
        public void addToProjectRepository​(Element element)
        Adds element into this project repository and removes it from previous project repository. If element does not have an ID then it will be created.
        After this operation element can be retrieved from project by getElementByID(String).
        Parameters:
        element - any element
      • ensureLocalIDSet

        private void ensureLocalIDSet​(BaseElement obj)
      • checkDuplicates

        private void checkDuplicates​(BaseElement obj,
                                     java.lang.String newID)
      • removeElementByID

        private void removeElementByID​(BaseElement obj,
                                       java.lang.String oldID)
        Remove object from map by id
        Parameters:
        obj - object
        oldID - old object id
      • removeElementByID

        public void removeElementByID​(BaseElement obj)
        Unregister the object by id. The record about this object and is removed.
        Specified by:
        removeElementByID in interface ElementRegistry
        Parameters:
        obj - the object.
      • getQueryService

        private com.nomagic.ci.persistence.local.query.IQueryService getQueryService()
      • getQueryChangeRegistry

        private com.nomagic.ci.persistence.local.query.IQueryChangeRegistry getQueryChangeRegistry()
      • getElementByID

        @OpenApi
        @CheckForNull
        public BaseElement getElementByID​(@CheckForNull
                                          java.lang.String id)
        Return the element with given id.
        Specified by:
        getElementByID in interface ElementRegistry
        Parameters:
        id - the id of the element.
        Returns:
        the element with given id or null if element with such id is not registered in the project.
      • getPresentationElementByID

        @CheckForNull
        public BaseElement getPresentationElementByID​(java.lang.String elementID)
        Return the presentation element with given id from currently registered elements.
        Parameters:
        elementID - the id of the element, cannot be null
        Returns:
        the element with given id or null if element with such id is not registered in the project.
      • queryElementByID

        private BaseElement queryElementByID​(java.lang.String id)
      • isElementDisposed

        @OpenApi
        public static boolean isElementDisposed​(@CheckForNull
                                                Element element)
        Check if given element is unregistered from project.
        Parameters:
        element - element
        Returns:
        true if element is disposed
      • isDisposed

        @OpenApi
        public boolean isDisposed​(BaseElement element)
        Check if given element is unregistered from project.
        Specified by:
        isDisposed in interface ElementRegistry
        Parameters:
        element - element
        Returns:
        true if element is disposed
      • getElementsByIDs

        public java.util.Collection<? extends BaseElement> getElementsByIDs​(java.util.Collection<java.lang.String> ids)
        Return the objects by given ids.
        Parameters:
        ids - the collection of the ids of the objects.
        Returns:
        the collection of objects with given ids.
      • getElementsByIDs

        public java.util.Collection<? extends BaseElement> getElementsByIDs​(java.util.Collection<java.lang.String> ids,
                                                                            java.util.function.Supplier<java.util.Collection<BaseElement>> collectionFactory)
        Return the objects by given ids.
        Parameters:
        ids - the collection of the ids of the objects.
        Returns:
        the collection of objects with given ids.
      • resetElementsByID

        private void resetElementsByID()
        Resets all records about objects and theirs ids.
      • getAllIDS

        public java.util.Collection<java.lang.String> getAllIDS()
        Returns the collection of all ids in the project.
        Returns:
        the collection of all ids in the project.
      • getAllElements

        public java.util.Collection<BaseElement> getAllElements()
        Gets collection of all model elements in the project
        Specified by:
        getAllElements in interface ElementRegistry
        Returns:
        collection of elements
      • isProjectClosed

        public boolean isProjectClosed()
        Checks if this project was already disposed(closed). Such project cannot be activated any more.
        Returns:
        true if project was disposed (closed)
      • isProjectDisposed

        @Deprecated
        public boolean isProjectDisposed()
        Deprecated.
        use #isProjectClosed
        Checks if this project was already disposed(closed). Such project cannot be activated any more.
        Returns:
        true if project was disposed (closed)
      • isClosing

        public boolean isClosing()
        Returns:
        true if project is closing (preCloseFinal event is fired)
      • setClosing

        public void setClosing​(boolean closing)
        Set closing project state
        Parameters:
        closing - true if project is closing
      • getStateChangeHandler

        public StateChangeHandler getStateChangeHandler()
        Returns:
        StateChangeHandler for this project.
      • elementAdded

        public void elementAdded​(BaseElement element)
        Marks element as added, if it was previously removed its id is removed from id collection.
        Parameters:
        element - element id which was added.
      • elementRemoved

        public void elementRemoved​(BaseElement obj)
        Marks element removed, its id added to mDeletedObjectIDS.
        Parameters:
        obj - element which was removed.
      • isElementInProject

        public boolean isElementInProject​(java.lang.String id)
        Check if element with a given id is in this project.
        Parameters:
        id - element id
        Returns:
        true if element with given id is registered in project and is not removed.
      • removeWindow

        public void removeWindow​(ProjectWindow window)
      • getWindows

        public java.util.Collection<ProjectWindow> getWindows()
      • hasWindow

        public boolean hasWindow​(java.lang.String id)
      • getWindow

        public ProjectWindow getWindow​(java.lang.String id)
      • getStereotypesStyleChangeHandler

        public com.nomagic.magicdraw.uml.symbols.StereotypesStyleChangeManager getStereotypesStyleChangeHandler()
      • getRepository

        @OpenApi
        public AbstractRepository getRepository()
        Get project repository.
        Specified by:
        getRepository in interface RepositoryProvider
        Overrides:
        getRepository in class com.nomagic.uml2.project.ElementProjectImpl
        Returns:
        repository.
      • resetDynamicRepository

        public void resetDynamicRepository()
        Removes current dynamic repository if such exist and installs a new dynamic repository.
      • getElementsFactory

        @OpenApi
        public ElementsFactory getElementsFactory()
        Specified by:
        getElementsFactory in interface com.nomagic.uml2.project.ElementProject
        Returns:
        Class for creating uml model elements.
      • getSmartEventSupport

        @OpenApi
        public SmartEventSupport getSmartEventSupport()
        Returns registry that allows to register smart listener configurations by element type.
        Returns:
        smart listener registry.
      • isModel

        public boolean isModel​(@CheckForNull
                               BaseElement element)
        Checks if the given element is a one of the models in this project.
        Parameters:
        element - element to check.
        Returns:
        true if given element is a one of the models in this project.
      • isModel

        public boolean isModel​(Package element)
        Specified by:
        isModel in interface com.nomagic.uml2.project.ElementProject
      • getModel

        @OpenApi
        @Deprecated
        @CheckForNull
        public Model getModel()
        Deprecated.
        deprecated because of ambiguity with historical API evolution
        Returns root primary model - root container of all model structure. This method should not be called anymore for TWC projects, because the returned model does not include the root models of modules (attached projects). getModels() or getPrimaryModel() should be used instead as needed.
        Returns:
        root model element
        Throws:
        java.lang.IllegalStateException - in case root element is not a Model, but a Package
      • getPrimaryModel

        @OpenApi
        public Package getPrimaryModel()
        Specified by:
        getPrimaryModel in interface com.nomagic.uml2.project.ElementProject
      • getModels

        @OpenApi
        public java.util.List<Package> getModels()
        Specified by:
        getModels in interface com.nomagic.uml2.project.ElementProject
      • getSymbolElementMap

        @OpenApi
        public SymbolElementMap getSymbolElementMap()
        Get element symbol map.
        Returns:
        symbol element map
      • getRepositoryListenerRegistry

        @OpenApi
        public RepositoryListenerRegistry getRepositoryListenerRegistry()
        Return listener registry for repository.
        Returns:
        listener registry for repository.
      • getRemoteID

        @CheckForNull
        public java.lang.String getRemoteID()
      • isLoaded

        public boolean isLoaded()
        Return value of "loaded" flag
        Returns:
        true if this project was loaded from some location or is saved to some location (is not just created from template)
      • getLoadedFrom

        public ProjectDescriptor getLoadedFrom()
        Return location from were project was loaded. For Teamwork project returns local file if project was saved into file (or was loaded from file).
        Returns:
        location of project
      • setLoaded

        public void setLoaded​(boolean loaded)
        Set "Loaded" flag for project. Project created from template is not "loaded"
        Parameters:
        loaded - loaded flag
      • getProject

        @OpenApi
        public static Project getProject​(@CheckForNull
                                         BaseElement element)
        Returns Project for given element
        Parameters:
        element - project element.
        Returns:
        project in which given element exists.
      • getTransactionsManager

        public TransactionManager getTransactionsManager()
        Return transaction manager.
        Returns:
        transaction manager
      • isNeedLocallySave

        public boolean isNeedLocallySave()
        Teamwork projects after commit can be saved locally, using flag to hold state about teamwork projects were saved locally.
        Returns:
        true if project was not locally saved. Should be used only for teamwork projects.
      • setNeedLocallySave

        public void setNeedLocallySave​(boolean locallySaved)
      • setPrimaryProject

        public void setPrimaryProject​(IProject primaryProject)
      • setPrimaryProject

        public void setPrimaryProject​(IProject primaryProject,
                                      boolean closeOldProject,
                                      boolean changeModel)
        Set primary project.
        Parameters:
        primaryProject - project to set.
        closeOldProject - close old project (do not close project when adding to teamwork).
        changeModel - dispose old model (do not dispose UML model when adding to teamwork)
      • getPrimaryProject

        @OpenApi
        public IPrimaryProject getPrimaryProject()
        Primary project of MagicDraw project.
        Returns:
        primary project.
      • addFeature

        public static void addFeature​(java.lang.String feature)
        Register a feature for a new project.
        Parameters:
        feature - feature name
      • removeFeature

        public static void removeFeature​(java.lang.String feature)
        Unregister a feature for a new project.
        Parameters:
        feature - name
      • getFeatures

        public static java.util.Set<java.lang.String> getFeatures()
        Return registered features for a new project.
        Returns:
        registered features for a new project.
      • getUMLModelStorageFeature

        public com.nomagic.magicdraw.uml.UMLModelProjectFeature getUMLModelStorageFeature()
      • getDiagramContentListeners

        public com.nomagic.utils.ExtendedPropertyChangeSupport getDiagramContentListeners()
        Returns listeners of all diagrams content.
        Returns:
        diagrams content listeners
      • isNew

        public boolean isNew()
        Returns:
        true if project is new and was never saved
      • getLocationUri

        public org.eclipse.emf.common.util.URI getLocationUri()
        Get URI location according the primary project.
        Returns:
        URI.
      • isFrozen

        public boolean isFrozen()
        Returns:
        true if project is frozen
      • setFrozen

        public void setFrozen​(boolean frozen)
        Set frozen flag. Frozen projects do not provide some data.
        Parameters:
        frozen - frozen flag
      • isReady

        public boolean isReady()
        Returns:
        true if project is ready to use. It has primary project, it is not closed.
      • isRelocatedIn

        public boolean isRelocatedIn()
        Returns:
        true if project is in relocating state
      • setRelocatingIn

        public void setRelocatingIn​(boolean relocating)
        Set project state to relocating. Project is relocating if project content is coming from other project. This other project is in "relocated" state.
        Parameters:
        relocating - relocating state
      • refAddInstance

        public void refAddInstance​(javax.jmi.reflect.RefBaseObject instance)
        Specified by:
        refAddInstance in interface ElementRegistry
      • refRemoveInstance

        public void refRemoveInstance​(javax.jmi.reflect.RefBaseObject instance)
        Specified by:
        refRemoveInstance in interface ElementRegistry
      • getBinaryStreamAtticCleaner

        public com.nomagic.magicdraw.core.BinaryStreamAtticCleaner getBinaryStreamAtticCleaner()
      • getHasUnloadedManuallyReachableModules

        public boolean getHasUnloadedManuallyReachableModules()
        Returns:
        the hasUnloadedManuallyReachableModules
      • isReloadRecommended

        public boolean isReloadRecommended()
        Indicates whether project reload is recommended to see the full effects of some user action. This is set when certain conditions are detected during, for example, project save. So that code that controls the save can check the flag after the save and reload if possible
        Returns:
        true if project reload is recommended, false otherwise
      • setReloadRecommended

        public void setReloadRecommended​(boolean reloadRecommended)
        Sets new value for isReloadRecommended()
        Parameters:
        reloadRecommended - the new value
      • getCookieSet

        public CookieSet getCookieSet()
      • getOptionalService

        @CheckForNull
        public <T> T getOptionalService​(java.lang.Class<T> type)
        Returns project service of the specified type.
        Specified by:
        getOptionalService in interface com.nomagic.uml2.project.ElementProject
        Overrides:
        getOptionalService in class com.nomagic.uml2.project.ElementProjectImpl
        Type Parameters:
        T - type.
        Parameters:
        type - class of a service.
        Returns:
        service.
      • getService

        public <T> T getService​(java.lang.Class<T> type)
        Returns project service of the specified type.
        Specified by:
        getService in interface com.nomagic.uml2.project.ElementProject
        Overrides:
        getService in class com.nomagic.uml2.project.ElementProjectImpl
        Type Parameters:
        T - type.
        Parameters:
        type - class of a service.
        Returns:
        service.
        Throws:
        java.lang.IllegalArgumentException - if the requested service is not registered.
      • register

        public <T> void register​(java.lang.Class<T> type,
                                 T service)
        Registers the specified service.
        Type Parameters:
        T - type of the service.
        Parameters:
        type - service type.
        service - the service.
      • getServiceProvider

        public com.nomagic.uml2.project.service.ProjectServiceProvider getServiceProvider()
        Specified by:
        getServiceProvider in interface com.nomagic.uml2.project.ElementProject
        Overrides:
        getServiceProvider in class com.nomagic.uml2.project.ElementProjectImpl
      • isEMFProxiesSupported

        public boolean isEMFProxiesSupported()
        Description copied from interface: ElementRegistry
        Returns whether the registry supports EMF proxies.
        Specified by:
        isEMFProxiesSupported in interface ElementRegistry
        Returns:
        true if the element registry supports EMF proxies, otherwise - false.
      • generateID

        public java.lang.String generateID()
        Generate ID.
      • getID

        public java.lang.String getID()
        Description copied from interface: BaseElement
        Returns the ID of the Element. If the ID is null, new id for element is generated. Element id is persistence and do not changes during project save/load.
        Specified by:
        getID in interface BaseElement
        Returns:
        the ID of the Element.
      • sGetID

        public final java.lang.String sGetID()
        Description copied from interface: BaseElement
        Returns the actual ID of the Element. May return null if ID was not generated or set for this element.
        Specified by:
        sGetID in interface BaseElement
        Returns:
        the ID of the Element.
        See Also:
        BaseElement.getID()
      • setID

        public void setID​(java.lang.String id)
        Description copied from interface: BaseElement
        Sets the specified ID to the Element.
        Specified by:
        setID in interface BaseElement
        Parameters:
        id - the id to be set.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Specified by:
        clone in interface BaseElement
        Overrides:
        clone in class java.lang.Object
        Throws:
        java.lang.CloneNotSupportedException
      • addPropertyChangeListener

        public void addPropertyChangeListener​(java.beans.PropertyChangeListener listener)
        Description copied from interface: BaseElement
        Registers the listener to the element. The given listener will get notifications about property changes in this element.
        Specified by:
        addPropertyChangeListener in interface BaseElement
        Parameters:
        listener - the PropertyChangeListener to be added.
        See Also:
        PropertyChangeSupport
      • hasListeners

        public boolean hasListeners()
      • removePropertyChangeListener

        public void removePropertyChangeListener​(java.beans.PropertyChangeListener listener)
        Description copied from interface: BaseElement
        Unregisters the given listener from the element. The given listener will not get any notifications about property changes in this element.
        Specified by:
        removePropertyChangeListener in interface BaseElement
        Parameters:
        listener - the PropertyChangeListener to be removed.
        See Also:
        PropertyChangeSupport
      • firePropertyChange

        public void firePropertyChange​(java.lang.String propertyName,
                                       @CheckForNull
                                       java.lang.Object oldValue,
                                       @CheckForNull
                                       java.lang.Object newValue)
        Description copied from interface: BaseElement
        Delegates firePropertyChange to the PropertyChangeSupport, the member of this class, which reports a bound property update to any registered listeners. No event is fired if old and new values are equal or null.
        Specified by:
        firePropertyChange in interface BaseElement
        Parameters:
        propertyName - the programmatic name of the property that was changed.
        oldValue - the old value of the property
        newValue - the new value of the property
        See Also:
        PropertyChangeSupport
      • atInsert

        public void atInsert()
        Description copied from interface: BaseElement
        This method is called then this element is added into the project.
        Specified by:
        atInsert in interface BaseElement
      • dispose

        public void dispose()
        Destroys the project. After this method call project can not be used any more.
        Specified by:
        dispose in interface BaseElement
      • accept

        public void accept​(Visitor visitor)
                    throws java.lang.Exception
        Description copied from interface: MDElement
        Method accepts visitor, and calls method visit<class name>(this) of visitor . See Visitor pattern for more details.
        Specified by:
        accept in interface MDElement
        Parameters:
        visitor - which visits this element.
        Throws:
        java.lang.Exception
      • accept

        public void accept​(AbstractVisitor visitor)
                    throws java.lang.Exception
        Description copied from interface: BaseElement
        Method accepts visitor, and calls method visit < class name > ( this ) of visitor . (see Visitor pattern for more details).
        Specified by:
        accept in interface BaseElement
        Parameters:
        visitor - which visits this element.
        Throws:
        java.lang.Exception
      • getName

        @OpenApi
        public java.lang.String getName()
        Returns project name.
        Specified by:
        getName in interface MDElement
        Returns:
        project name.
      • getHumanName

        public java.lang.String getHumanName()
        Description copied from interface: BaseElement
        Returns human representation of the element. Usually human name is constructed from element class type and name.
        Specified by:
        getHumanName in interface BaseElement
        Returns:
        the human name of the element.
      • getSortKeys

        public final com.nomagic.magicdraw.uml.SortKeys getSortKeys()
        Description copied from interface: MDElement
        Implementation of getSortKeys() from Sortable interface.
        Specified by:
        getSortKeys in interface MDElement
        Returns:
        the array of predefined sort keys.
      • createSortKeys

        public com.nomagic.magicdraw.uml.ElementSortKeys createSortKeys()
        Specified by:
        createSortKeys in interface MDElement
      • getHumanType

        public java.lang.String getHumanType()
        Description copied from interface: BaseElement
        Returns human representation of the element type. Contains only element type without element name.
        Specified by:
        getHumanType in interface BaseElement
        Returns:
        the human type of the element.
      • getResourceID

        public java.lang.String getResourceID()
        Specified by:
        getResourceID in interface MDElement
      • getCommandForAppending

        @CheckForNull
        public com.nomagic.magicdraw.commands.MacroCommand getCommandForAppending()
        Specified by:
        getCommandForAppending in interface MDElement
      • canAdd

        public final boolean canAdd​(BaseElement element,
                                    boolean checkPermissions)
        Description copied from interface: BaseElement
        Checks if this element can add given element.
        Following rules must be true in order to have result true:
        1.if checkTeamworkLock == true, this element must be locked for edit.
        2.element can add given element as instance (class types are checked).
        3.element can add given element as child (given element is not a parent of current element and etc).
        Specified by:
        canAdd in interface BaseElement
        Parameters:
        element - the element to add.
        checkPermissions - check or not permissions.
        Returns:
        true if element can add given element as child.
      • canDeleteChild

        public boolean canDeleteChild​(BaseElement child)
        Description copied from interface: BaseElement
        Checks if given element can be deleted from this element. Follofing rules must be true in order to have result true: 1.this element must be editable. 2.project must be editable. 3.the type of given child must be valid for teamwork lock for edit operation (for example class, package and etc, not Attribute).
        Specified by:
        canDeleteChild in interface BaseElement
        Parameters:
        child - a given child
        Returns:
        true, if given element can be deleted from current element.
      • canBeDeleted

        public boolean canBeDeleted()
        Description copied from interface: BaseElement
        Checks if element can be deleted from project. Element cannot be deleted if it is not isEditable(), parent is not set or parent does not allow to remove this element.
        Specified by:
        canBeDeleted in interface BaseElement
        Returns:
        true, if element can be deleted from project.
        See Also:
        BaseElement.isEditable()
      • canAddInstance

        public boolean canAddInstance​(BaseElement o)
        Description copied from interface: BaseElement
        Checks if this object can add element of given type. Current implementation returns false.
        Specified by:
        canAddInstance in interface BaseElement
        Returns:
        true if this object can elements of given type.
      • isEditable

        public boolean isEditable()
        Description copied from interface: BaseElement
        Checks if element can be edited. Element can not be edited in teamwork project, or it is used "by reference" from module.
        Specified by:
        isEditable in interface BaseElement
        Returns:
        true, if element can be edited.
      • canAddChild

        public boolean canAddChild()
        Description copied from interface: BaseElement
        Checks if new elements can be added to this element
        Specified by:
        canAddChild in interface BaseElement
        Returns:
        true, if new sub elements can be added.
      • getObjectParent

        @CheckForNull
        public BaseElement getObjectParent()
        Description copied from interface: BaseElement
        Returns the element parent. This implementation returns null. Should be overridden in subclasses.
        Specified by:
        getObjectParent in interface BaseElement
        Returns:
        the parent of the element.
      • compareTo

        public int compareTo​(@Nonnull
                             java.lang.Object o)
        Compares sort key at index 1 with given element's sort key at index 1.
        Specified by:
        compareTo in interface java.lang.Comparable
        Parameters:
        o - the given object to compare to.
        Returns:
        key's comparison result(String.compareTo()).
      • isParentOf

        public boolean isParentOf​(BaseElement obj)
        Description copied from interface: BaseElement
        Returns true, if current element is parent of given element. Return false in this implementation.
        Specified by:
        isParentOf in interface BaseElement
        Parameters:
        obj - the given element(possible child).
        Returns:
        true if obj is parent of this object.
      • getClassType

        public java.lang.Class getClassType()
        Description copied from interface: BaseElement
        Gets the type of the element class. Every element has its own ClassType. Usually this class type is class of element or class interface of element. All types are registered in ClassTypes.
        Specified by:
        getClassType in interface BaseElement
        Returns:
        the type of the element.
      • toString

        public java.lang.String toString()
        Returns string representation of this element. Useful for debugging purposes.
        Overrides:
        toString in class java.lang.Object
      • canChangeParent

        public boolean canChangeParent​(java.util.Collection elements,
                                       BaseElement newParent)
        Description copied from interface: BaseElement
        Returns true, if element can change parent.
        Specified by:
        canChangeParent in interface BaseElement
        Parameters:
        elements - collection of the elements, whose will change the parent together with this.
        newParent - new parent object.
        Returns:
        true if element can change parent.