Class ModulesService
- java.lang.Object
-
- com.nomagic.magicdraw.core.modules.ModulesService
-
@OpenApiAll public class ModulesService extends java.lang.Object
An utility class to work with modules (attached projects). This class provides set of utility methods to change decomposition state of project - attach, detach, load, unload or changed attachment properties of modules.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ModulesService.ModuleHasElementWithSameIDAsInPrimaryException
An exception that indicates that module cannot be imported because there is an element with same Local ID in the primary projectstatic class
ModulesService.ModuleHasOrphanProxiesException
static class
ModulesService.UsedViaReadOnlyAutomaticUsageException
Thrown when module(s) can not be removed due to all paths from primary project to it contains a read onlyautomatic
usage
-
Constructor Summary
Constructors Constructor Description ModulesService()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static IAttachedProject
attachModule(IProject owner, AbstractProjectAttachmentConfiguration configuration, org.eclipse.core.runtime.IProgressMonitor monitor)
Mounts module into current project.static IAttachedProject
attachModuleOnTask(IProject project, AbstractProjectAttachmentConfiguration configuration)
Mounts module into current project.static boolean
detachModules(java.util.Collection<ModuleUsage> usages, org.eclipse.core.runtime.IProgressMonitor monitor)
Removes all given modules usages.static boolean
detachModulesAndRemoveUnreachable(java.util.Collection<ModuleUsage> usages, IAttachedProjectRemoverCallback removeConfirmation, org.eclipse.core.runtime.IProgressMonitor monitor)
Removes all given module usages.static boolean
detachModulesAndRemoveUnreachable(java.util.Collection<ModuleUsage> usages, org.eclipse.core.runtime.IProgressMonitor monitor)
Removes all given module usages.static boolean
detachModulesAndRemoveUnreachableOnTask(java.util.Collection<ModuleUsage> usages)
Removes all given module usages.static boolean
detachModulesOnTask(java.util.Collection<ModuleUsage> usages)
Removes all given modules usages.static IAttachedProject
findOrLoadLocalModule(Project project, java.lang.String filePath, boolean allowUI)
Attaches local module from given path into a given project.static IAttachedProject
findOrLoadModule(Project project, ProjectDescriptor moduleLocation, boolean allowUI)
Looks for existing module in a given project.static IAttachedProject
findOrLoadModule(Project project, ProjectDescriptor moduleLocation, org.eclipse.core.runtime.IProgressMonitor monitor, boolean allowUI)
Looks for already attached module in a given project.static com.nomagic.ci.persistence.mounting.IMountPoint
getMountPoint(java.util.Collection<com.nomagic.ci.persistence.mounting.IMountPoint> points, Package element)
Find mount point in a given collection which mounts a given package.static void
importModule(IProject owner, IAttachedProject module, org.eclipse.core.runtime.IProgressMonitor monitor)
static void
importModule(IProject owner, IAttachedProject module, org.eclipse.core.runtime.IProgressMonitor monitor, boolean regenerateElementIDs)
Removes module descriptor and makes all its contents as it is local project content.static void
importModuleOnTask(IProject owner, IAttachedProject module)
Removes module descriptor and makes all its contents as it is local project content.static void
importModuleOnTask(Project project, IProject owner, IAttachedProject module, boolean newIDs, boolean ignoreDirty, boolean checkModulePassword, java.util.Map<java.lang.String,java.lang.Object> importOptions, ProgressStatus progress)
Imports given module into given project using given configurationstatic boolean
processException(Project prj, java.lang.Exception e, java.lang.String failedOperationMessage)
static void
reMount(IProject owner, IAttachedProject module, java.util.Collection<MountedPackageInfo> mountedPackagesInfo, org.eclipse.core.runtime.IProgressMonitor monitor)
Re-mount given module on different mount points.static void
reMountOnTask(IProject owner, IAttachedProject module, java.util.Collection<MountedPackageInfo> mountedPackagesInfo)
Change mount point locationstatic void
removeModules(java.util.Set<IAttachedProject> selectedModules, IAttachedProjectRemoverCallback removeConfirmation, org.eclipse.core.runtime.IProgressMonitor progress)
Removes the selected modulesstatic void
removeModulesOnTask(java.util.Set<IAttachedProject> selectedModules, IAttachedProjectRemoverCallback removeConfirmation)
Removes the selected modules on taskstatic void
setAutoLoadKind(ProjectAttachmentConfiguration configuration, AutoLoadKind autoLoadKind)
Set auto load kind for a given configuration.static void
setAutoLoadKind(IProject owner, ProjectAttachmentConfiguration configuration, AutoLoadKind kind)
Set module load kindstatic void
setAutoLoadKind(IProject owner, ProjectAttachmentConfiguration configuration, AutoLoadKind kind, org.eclipse.core.runtime.IProgressMonitor monitor)
Set module load kindstatic void
setAutoLoadKind(IProject owner, IAttachedProject module, AutoLoadKind kind, org.eclipse.core.runtime.IProgressMonitor monitor)
Set module load kindstatic void
setAutoLoadKindOnTask(IProject owner, IAttachedProject module, AutoLoadKind kind)
Set module load kindstatic void
setCompatibleVersion(IProject project, java.lang.String version)
Set compatible version for a given projectstatic void
setInternalVersion(IProject project, java.lang.String version)
Set internal version for a given projectstatic void
setReadOnly(java.util.Collection<ModuleUsage> usages, boolean readOnly, org.eclipse.core.runtime.IProgressMonitor monitor)
Make module usage readonlystatic void
setReadOnlyOnTask(java.util.Collection<ModuleUsage> usages, boolean readOnly)
Make module usage readonlystatic void
setReShared(IProject project, IProject module, boolean reShared, org.eclipse.core.runtime.IProgressMonitor monitor)
Re-share given module in a given projectstatic void
setReSharedOnTask(IProject project, IProject module, boolean reShared)
Reshare given module in a given projectstatic void
setSharePreferredPath(IProject project, Package pkg, java.lang.String path, org.eclipse.core.runtime.IProgressMonitor monitor)
Set preferred path for mounting for given shared packagestatic void
setSharePreferredPathOnTask(IProject project, Package pkg, java.lang.String path)
Set preferred path for mounting for given shared packagestatic void
setStandardSystemProfile(IProject project, boolean standard)
Mark given project as "standard system profile".static void
setStickyVersion(java.util.Collection<ModuleUsage> usages, IVersionDescriptor version, org.eclipse.core.runtime.IProgressMonitor monitor)
Set sticky version for given modules usages.static void
setStickyVersionOnTask(java.util.Collection<ModuleUsage> usages, IVersionDescriptor version)
Set sticky version for given modules usages.static void
setUsedVersion(IProject owner, IAttachedProject module, java.lang.String version, org.eclipse.core.runtime.IProgressMonitor monitor)
Set "used" version for a given module.static void
setUsedVersionOnTask(IProject owner, IAttachedProject module, java.lang.String version)
Set "used" version for a given modulestatic com.nomagic.ci.persistence.sharing.ISharePoint
share(IProject project, Package pkg, java.lang.String path, org.eclipse.core.runtime.IProgressMonitor monitor)
Share given package in a given projectstatic com.nomagic.ci.persistence.sharing.ISharePoint
shareOnTask(IProject project, Package pkg, java.lang.String path)
Share given package in a given projectstatic void
unShare(IProject project, Package pkg, org.eclipse.core.runtime.IProgressMonitor monitor)
Un-share given package from a given projectstatic void
unShareOnTask(IProject project, Package pkg)
Un-share given package from a given project
-
-
-
Method Detail
-
attachModule
@CheckForNull public static IAttachedProject attachModule(IProject owner, AbstractProjectAttachmentConfiguration configuration, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.PersistenceException
Mounts module into current project. Default mount path is used.- Parameters:
owner
- owner to attach module toconfiguration
- configurationmonitor
- progress status- Returns:
- module descriptor
- Throws:
com.nomagic.ci.persistence.PersistenceException
- in case of persistence problems
-
attachModuleOnTask
public static IAttachedProject attachModuleOnTask(IProject project, AbstractProjectAttachmentConfiguration configuration)
Mounts module into current project. Default mount path is used.- Parameters:
project
- projectconfiguration
- configuration- Returns:
- module descriptor
-
reMount
public static void reMount(IProject owner, IAttachedProject module, java.util.Collection<MountedPackageInfo> mountedPackagesInfo, org.eclipse.core.runtime.IProgressMonitor monitor)
Re-mount given module on different mount points.- Parameters:
owner
- module ownermodule
- module to remountmountedPackagesInfo
- new information about mount pointsmonitor
- progress monitor
-
reMountOnTask
public static void reMountOnTask(IProject owner, IAttachedProject module, java.util.Collection<MountedPackageInfo> mountedPackagesInfo)
Change mount point location- Parameters:
owner
- projectmodule
- modulemountedPackagesInfo
- new mounting information
-
detachModules
public static boolean detachModules(java.util.Collection<ModuleUsage> usages, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor) throws java.lang.Exception
Removes all given modules usages. If module is used more than one time only remove usage, in other case module data will be disposed.- Parameters:
usages
- modules to removemonitor
- monitor- Returns:
- true if all modules were detached, false if user cancelled operation
- Throws:
java.lang.Exception
- if detach fails.
-
detachModulesAndRemoveUnreachable
public static boolean detachModulesAndRemoveUnreachable(java.util.Collection<ModuleUsage> usages, org.eclipse.core.runtime.IProgressMonitor monitor) throws java.lang.Exception
Removes all given module usages. If new modules become manually unreachable during the operation - they will be removed too if possible- Parameters:
usages
- the usages to removemonitor
- the progress monitor for the operation- Returns:
- true if all modules were detached, false if user cancelled operation
- Throws:
java.lang.Exception
-
detachModulesAndRemoveUnreachable
public static boolean detachModulesAndRemoveUnreachable(java.util.Collection<ModuleUsage> usages, @CheckForNull IAttachedProjectRemoverCallback removeConfirmation, org.eclipse.core.runtime.IProgressMonitor monitor) throws java.lang.Exception
Removes all given module usages. If new modules become manually unreachable during the operation - they will be removed too if possible- Parameters:
usages
- the usages to removeremoveConfirmation
- remove confirmationmonitor
- the progress monitor for the operation- Returns:
- true if all modules were detached, false if user cancelled operation
- Throws:
java.lang.Exception
-
detachModulesAndRemoveUnreachableOnTask
public static boolean detachModulesAndRemoveUnreachableOnTask(java.util.Collection<ModuleUsage> usages)
Removes all given module usages. If new modules become manually unreachable during the operation - they will be removed too if possible- Parameters:
usages
- the usages to remove- Returns:
- true if all modules were detached, false if user cancelled operation
-
detachModulesOnTask
public static boolean detachModulesOnTask(java.util.Collection<ModuleUsage> usages)
Removes all given modules usages. If module is used more than one time only remove usage, in other case module data will be disposed.- Parameters:
usages
- module usages to remove- Returns:
- true if all modules were detached, false if user cancelled operation
-
removeModules
public static void removeModules(java.util.Set<IAttachedProject> selectedModules, @CheckForNull IAttachedProjectRemoverCallback removeConfirmation, @CheckForNull org.eclipse.core.runtime.IProgressMonitor progress) throws ModulesService.UsedViaReadOnlyAutomaticUsageException, com.nomagic.ci.persistence.PersistenceException
Removes the selected modules- Parameters:
selectedModules
- the modules to removeremoveConfirmation
- the confirmation call back that will be used to confirm the removeprogress
- the progress monitor for the operation- Throws:
ModulesService.UsedViaReadOnlyAutomaticUsageException
com.nomagic.ci.persistence.PersistenceException
-
removeModulesOnTask
public static void removeModulesOnTask(java.util.Set<IAttachedProject> selectedModules, @CheckForNull IAttachedProjectRemoverCallback removeConfirmation)
Removes the selected modules on task- Parameters:
selectedModules
- the modules to removeremoveConfirmation
- the confirmation call back that will be used to confirm the remove
-
importModule
public static void importModule(IProject owner, IAttachedProject module, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor) throws java.lang.Exception
- Throws:
java.lang.Exception
-
importModule
public static void importModule(IProject owner, IAttachedProject module, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor, boolean regenerateElementIDs) throws java.lang.Exception
Removes module descriptor and makes all its contents as it is local project content.- Parameters:
owner
- module ownermodule
- to importmonitor
- progress statusregenerateElementIDs
- if true module element id will be generated- Throws:
java.lang.Exception
- exception is something goes wrong
-
getMountPoint
@CheckForNull public static com.nomagic.ci.persistence.mounting.IMountPoint getMountPoint(java.util.Collection<com.nomagic.ci.persistence.mounting.IMountPoint> points, Package element)
Find mount point in a given collection which mounts a given package.- Parameters:
points
- mount pointselement
- package- Returns:
- found mount point
-
importModuleOnTask
public static void importModuleOnTask(IProject owner, IAttachedProject module)
Removes module descriptor and makes all its contents as it is local project content.- Parameters:
owner
- module ownermodule
- to import
-
importModuleOnTask
public static void importModuleOnTask(Project project, IProject owner, IAttachedProject module, boolean newIDs, boolean ignoreDirty, boolean checkModulePassword, @CheckForNull java.util.Map<java.lang.String,java.lang.Object> importOptions, @CheckForNull ProgressStatus progress) throws java.lang.Exception
Imports given module into given project using given configuration- Parameters:
project
- the context projectowner
- the project to import tomodule
- the module to importnewIDs
-true
if element IDs should be changedignoreDirty
-true
if project dirty state should be ignoredcheckModulePassword
-true
if module password should be checked,false
if notimportOptions
- import implementation dependent options (passed toIProjectJoiningService.join(IAttachedProject, com.nomagic.ci.persistence.local.decomposition.IProjectJoiningFeatureProvider, Map, IProgressMonitor)
)progress
- the progress to use (optional, will report to a separate progress if not provided)- Throws:
java.lang.Exception
-
processException
public static boolean processException(@CheckForNull Project prj, java.lang.Exception e, java.lang.String failedOperationMessage)
-
setReadOnly
public static void setReadOnly(java.util.Collection<ModuleUsage> usages, boolean readOnly, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.PersistenceException
Make module usage readonly- Parameters:
usages
- module usagesreadOnly
- readonly flagmonitor
- monitor- Throws:
com.nomagic.ci.persistence.PersistenceException
- in case of some persistence problem
-
setReadOnlyOnTask
public static void setReadOnlyOnTask(java.util.Collection<ModuleUsage> usages, boolean readOnly)
Make module usage readonly- Parameters:
usages
- module usagesreadOnly
- readonly flag
-
setAutoLoadKind
public static void setAutoLoadKind(ProjectAttachmentConfiguration configuration, AutoLoadKind autoLoadKind)
Set auto load kind for a given configuration.- Parameters:
configuration
- configuration to change auto load.autoLoadKind
- auto load kind
-
setAutoLoadKind
public static void setAutoLoadKind(IProject owner, ProjectAttachmentConfiguration configuration, AutoLoadKind kind, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.PersistenceException
Set module load kind- Parameters:
owner
- module ownerconfiguration
- attachment configurationkind
- load kindmonitor
- monitor- Throws:
com.nomagic.ci.persistence.PersistenceException
- in case of some persistence problem
-
setAutoLoadKind
public static void setAutoLoadKind(IProject owner, ProjectAttachmentConfiguration configuration, AutoLoadKind kind)
Set module load kind- Parameters:
owner
- module ownerconfiguration
- attachment configurationkind
- load kind
-
setAutoLoadKind
public static void setAutoLoadKind(IProject owner, IAttachedProject module, AutoLoadKind kind, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.PersistenceException
Set module load kind- Parameters:
owner
- module ownermodule
- modulekind
- load kindmonitor
- monitor- Throws:
com.nomagic.ci.persistence.PersistenceException
- in case of some persistence problem
-
setAutoLoadKindOnTask
public static void setAutoLoadKindOnTask(IProject owner, IAttachedProject module, AutoLoadKind kind)
Set module load kind- Parameters:
owner
- module ownermodule
- modulekind
- load kind
-
setReSharedOnTask
public static void setReSharedOnTask(IProject project, IProject module, boolean reShared)
Reshare given module in a given project- Parameters:
project
- projectmodule
- modulereShared
- add or remove re-sharing
-
setReShared
public static void setReShared(IProject project, IProject module, boolean reShared, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor)
Re-share given module in a given project- Parameters:
project
- projectmodule
- modulereShared
- add ore remove re-sharingmonitor
- monitor
-
shareOnTask
public static com.nomagic.ci.persistence.sharing.ISharePoint shareOnTask(IProject project, Package pkg, java.lang.String path)
Share given package in a given project- Parameters:
project
- projectpkg
- package to sharepath
- preferred path for mounting- Returns:
- share point
-
share
public static com.nomagic.ci.persistence.sharing.ISharePoint share(IProject project, Package pkg, java.lang.String path, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException, com.nomagic.ci.persistence.LockAcquisitionException
Share given package in a given project- Parameters:
project
- projectpkg
- package to sharepath
- preferred path for mountingmonitor
- monitor- Returns:
- share point
- Throws:
com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException
com.nomagic.ci.persistence.LockAcquisitionException
- if locking required elements fails during the operation
-
setSharePreferredPathOnTask
public static void setSharePreferredPathOnTask(IProject project, Package pkg, java.lang.String path)
Set preferred path for mounting for given shared package- Parameters:
project
- projectpkg
- packagepath
- preferred mounting path
-
setSharePreferredPath
public static void setSharePreferredPath(IProject project, Package pkg, java.lang.String path, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException
Set preferred path for mounting for given shared package- Parameters:
project
- projectpkg
- packagepath
- preferred mounting pathmonitor
- monitor- Throws:
com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException
-
setStandardSystemProfile
public static void setStandardSystemProfile(IProject project, boolean standard)
Mark given project as "standard system profile".- Parameters:
project
- projectstandard
- mark as standard profile
-
setInternalVersion
public static void setInternalVersion(IProject project, java.lang.String version)
Set internal version for a given project- Parameters:
project
- projectversion
- version
-
setCompatibleVersion
public static void setCompatibleVersion(IProject project, java.lang.String version)
Set compatible version for a given project- Parameters:
project
- projectversion
- version
-
setUsedVersionOnTask
public static void setUsedVersionOnTask(IProject owner, IAttachedProject module, java.lang.String version)
Set "used" version for a given module- Parameters:
owner
- module ownermodule
- moduleversion
- version
-
setUsedVersion
public static void setUsedVersion(IProject owner, IAttachedProject module, java.lang.String version, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.PersistenceException
Set "used" version for a given module.- Parameters:
owner
- module ownermodule
- moduleversion
- versionmonitor
- monitor- Throws:
com.nomagic.ci.persistence.PersistenceException
- if any persistence problem
-
unShare
public static void unShare(IProject project, Package pkg, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException, com.nomagic.ci.persistence.LockAcquisitionException
Un-share given package from a given project- Parameters:
project
- projectpkg
- package to un-sharemonitor
- monitor- Throws:
com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException
com.nomagic.ci.persistence.LockAcquisitionException
- if locking required elements fails during the operation
-
unShareOnTask
public static void unShareOnTask(IProject project, Package pkg)
Un-share given package from a given project- Parameters:
project
- projectpkg
- package to un-share
-
setStickyVersion
public static void setStickyVersion(java.util.Collection<ModuleUsage> usages, @CheckForNull IVersionDescriptor version, org.eclipse.core.runtime.IProgressMonitor monitor) throws com.nomagic.ci.persistence.PersistenceException
Set sticky version for given modules usages.- Parameters:
usages
- usagesversion
- sticky version(null if no sticky versionmonitor
- progress monitor- Throws:
com.nomagic.ci.persistence.PersistenceException
- in case of some persistence problem
-
setStickyVersionOnTask
public static void setStickyVersionOnTask(java.util.Collection<ModuleUsage> usages, @CheckForNull IVersionDescriptor version)
Set sticky version for given modules usages.- Parameters:
usages
- usagesversion
- sticky version(null if no sticky version
-
findOrLoadLocalModule
@CheckForNull public static IAttachedProject findOrLoadLocalModule(Project project, java.lang.String filePath, boolean allowUI)
Attaches local module from given path into a given project. Does nothing if such module is already attached.- Parameters:
project
- projectfilePath
- full path to module fileallowUI
- allow to show error messages to user- Returns:
- attached module
-
findOrLoadModule
@CheckForNull public static IAttachedProject findOrLoadModule(Project project, ProjectDescriptor moduleLocation, boolean allowUI)
Looks for existing module in a given project. If found, attaches it directly in project. If module is not found, attaches and loads it.- Parameters:
project
- project where module is searched of loaded.moduleLocation
- module descriptor to load.allowUI
- allow to show error messages to user- Returns:
- found or loaded module. Null if failure.
-
findOrLoadModule
@CheckForNull public static IAttachedProject findOrLoadModule(Project project, @CheckForNull ProjectDescriptor moduleLocation, @CheckForNull org.eclipse.core.runtime.IProgressMonitor monitor, boolean allowUI)
Looks for already attached module in a given project. or attaches a new one. If such module is already attached not directly, attaches it directly in a given project. Activates given project if it is not active yet. If module is not found, attaches and loads it.- Parameters:
project
- project where module is searched of loaded.moduleLocation
- module descriptor to load.monitor
- monitor where display status, if null new progress bar is shown.allowUI
- allow to show error messages to user- Returns:
- found or newly attached module. Null if failure.
-
-