Class ModulesService

java.lang.Object
com.nomagic.magicdraw.core.modules.ModulesService

@OpenApiAll public class ModulesService extends 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.
  • Constructor Details

    • ModulesService

      public ModulesService()
  • Method Details

    • attachModule

      @CheckForNull public static com.nomagic.ci.persistence.IAttachedProject attachModule(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.spi.decomposition.AbstractProjectAttachmentConfiguration configuration, @CheckForNull ProgressStatus monitor) throws com.nomagic.ci.persistence.PersistenceException
      Mounts module into current project. Default mount path is used.
      Parameters:
      owner - owner to attach module to
      configuration - configuration
      monitor - progress status
      Returns:
      module descriptor
      Throws:
      com.nomagic.ci.persistence.PersistenceException - in case of persistence problems
    • attachModuleOnTask

      public static com.nomagic.ci.persistence.IAttachedProject attachModuleOnTask(com.nomagic.ci.persistence.IProject project, com.nomagic.ci.persistence.spi.decomposition.AbstractProjectAttachmentConfiguration configuration)
      Mounts module into current project. Default mount path is used.
      Parameters:
      project - project
      configuration - configuration
      Returns:
      module descriptor
    • reMount

      public static void reMount(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, Collection<MountedPackageInfo> mountedPackagesInfo, ProgressStatus monitor)
      Re-mount given module on different mount points.
      Parameters:
      owner - module owner
      module - module to remount
      mountedPackagesInfo - new information about mount points
      monitor - progress monitor
    • reMountOnTask

      public static void reMountOnTask(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, Collection<MountedPackageInfo> mountedPackagesInfo)
      Change mount point location
      Parameters:
      owner - project
      module - module
      mountedPackagesInfo - new mounting information
    • detachModules

      public static boolean detachModules(Collection<ModuleUsage> usages, @CheckForNull ProgressStatus monitor) throws 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 remove
      monitor - monitor
      Returns:
      true if all modules were detached, false if user cancelled operation
      Throws:
      Exception - if detach fails.
    • detachModulesAndRemoveUnreachable

      public static boolean detachModulesAndRemoveUnreachable(Collection<ModuleUsage> usages, ProgressStatus monitor) throws 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 remove
      monitor - the progress monitor for the operation
      Returns:
      true if all modules were detached, false if user cancelled operation
      Throws:
      Exception
    • detachModulesAndRemoveUnreachable

      public static boolean detachModulesAndRemoveUnreachable(Collection<ModuleUsage> usages, @CheckForNull com.nomagic.ci.persistence.decomposition.IAttachedProjectRemoverCallback removeConfirmation, ProgressStatus monitor) throws 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 remove
      removeConfirmation - remove confirmation
      monitor - the progress monitor for the operation
      Returns:
      true if all modules were detached, false if user cancelled operation
      Throws:
      Exception
    • detachModulesAndRemoveUnreachableOnTask

      public static boolean detachModulesAndRemoveUnreachableOnTask(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(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(Set<com.nomagic.ci.persistence.IAttachedProject> selectedModules, @CheckForNull com.nomagic.ci.persistence.decomposition.IAttachedProjectRemoverCallback removeConfirmation, @CheckForNull ProgressStatus progress) throws ModulesService.UsedViaReadOnlyAutomaticUsageException, com.nomagic.ci.persistence.PersistenceException
      Removes the selected modules
      Parameters:
      selectedModules - the modules to remove
      removeConfirmation - the confirmation call back that will be used to confirm the remove
      progress - the progress monitor for the operation
      Throws:
      ModulesService.UsedViaReadOnlyAutomaticUsageException
      com.nomagic.ci.persistence.PersistenceException
    • removeModulesOnTask

      public static void removeModulesOnTask(Set<com.nomagic.ci.persistence.IAttachedProject> selectedModules, @CheckForNull com.nomagic.ci.persistence.decomposition.IAttachedProjectRemoverCallback removeConfirmation)
      Removes the selected modules on task
      Parameters:
      selectedModules - the modules to remove
      removeConfirmation - the confirmation call back that will be used to confirm the remove
    • importModule

      public static void importModule(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, @CheckForNull ProgressStatus monitor) throws Exception
      Throws:
      Exception
    • importModule

      public static void importModule(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, @CheckForNull ProgressStatus monitor, boolean regenerateElementIDs) throws Exception
      Removes module descriptor and makes all its contents as it is local project content.
      Parameters:
      owner - module owner
      module - to import
      monitor - progress status
      regenerateElementIDs - if true module element id will be generated
      Throws:
      Exception - exception is something goes wrong
    • getMountPoint

      @CheckForNull public static com.nomagic.ci.persistence.mounting.IMountPoint getMountPoint(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 points
      element - package
      Returns:
      found mount point
    • importModuleOnTask

      public static void importModuleOnTask(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module)
      Removes module descriptor and makes all its contents as it is local project content.
      Parameters:
      owner - module owner
      module - to import
    • importModuleOnTask

      public static void importModuleOnTask(Project project, com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, boolean newIDs, boolean ignoreDirty, boolean checkModulePassword, @CheckForNull Map<String,Object> importOptions, @CheckForNull ProgressStatus progress) throws Exception
      Imports given module into given project using given configuration
      Parameters:
      project - the context project
      owner - the project to import to
      module - the module to import
      newIDs - true if element IDs should be changed
      ignoreDirty - true if project dirty state should be ignored
      checkModulePassword - true if module password should be checked, false if not
      importOptions - import implementation dependent options (passed to IProjectJoiningService.join(IAttachedProject, com.nomagic.ci.persistence.local.decomposition.IProjectJoiningFeatureProvider, Map, ProgressStatus))
      progress - the progress to use (optional, will report to a separate progress if not provided)
      Throws:
      Exception
    • processException

      public static boolean processException(@CheckForNull Project prj, Exception e, String failedOperationMessage)
    • setReadOnly

      public static void setReadOnly(Collection<ModuleUsage> usages, boolean readOnly, ProgressStatus monitor) throws com.nomagic.ci.persistence.PersistenceException
      Make module usage readonly
      Parameters:
      usages - module usages
      readOnly - readonly flag
      monitor - monitor
      Throws:
      com.nomagic.ci.persistence.PersistenceException - in case of some persistence problem
    • setReadOnlyOnTask

      public static void setReadOnlyOnTask(Collection<ModuleUsage> usages, boolean readOnly)
      Make module usage readonly
      Parameters:
      usages - module usages
      readOnly - readonly flag
    • setAutoLoadKind

      public static void setAutoLoadKind(com.nomagic.ci.persistence.decomposition.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(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.decomposition.ProjectAttachmentConfiguration configuration, AutoLoadKind kind, ProgressStatus monitor) throws com.nomagic.ci.persistence.PersistenceException
      Set module load kind
      Parameters:
      owner - module owner
      configuration - attachment configuration
      kind - load kind
      monitor - monitor
      Throws:
      com.nomagic.ci.persistence.PersistenceException - in case of some persistence problem
    • setAutoLoadKind

      public static void setAutoLoadKind(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.decomposition.ProjectAttachmentConfiguration configuration, AutoLoadKind kind)
      Set module load kind
      Parameters:
      owner - module owner
      configuration - attachment configuration
      kind - load kind
    • setAutoLoadKind

      public static void setAutoLoadKind(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, AutoLoadKind kind, ProgressStatus monitor) throws com.nomagic.ci.persistence.PersistenceException
      Set module load kind
      Parameters:
      owner - module owner
      module - module
      kind - load kind
      monitor - monitor
      Throws:
      com.nomagic.ci.persistence.PersistenceException - in case of some persistence problem
    • setAutoLoadKindOnTask

      public static void setAutoLoadKindOnTask(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, AutoLoadKind kind)
      Set module load kind
      Parameters:
      owner - module owner
      module - module
      kind - load kind
    • setReSharedOnTask

      public static void setReSharedOnTask(com.nomagic.ci.persistence.IProject project, com.nomagic.ci.persistence.IProject module, boolean reShared)
      Reshare given module in a given project
      Parameters:
      project - project
      module - module
      reShared - add or remove re-sharing
    • setReShared

      public static void setReShared(com.nomagic.ci.persistence.IProject project, com.nomagic.ci.persistence.IProject module, boolean reShared, @CheckForNull ProgressStatus monitor)
      Re-share given module in a given project
      Parameters:
      project - project
      module - module
      reShared - add ore remove re-sharing
      monitor - monitor
    • shareOnTask

      public static com.nomagic.ci.persistence.sharing.ISharePoint shareOnTask(com.nomagic.ci.persistence.IProject project, Package pkg, String path)
      Share given package in a given project
      Parameters:
      project - project
      pkg - package to share
      path - preferred path for mounting
      Returns:
      share point
    • share

      public static com.nomagic.ci.persistence.sharing.ISharePoint share(com.nomagic.ci.persistence.IProject project, Package pkg, String path, ProgressStatus monitor) throws com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException, com.nomagic.ci.persistence.LockAcquisitionException
      Share given package in a given project
      Parameters:
      project - project
      pkg - package to share
      path - preferred path for mounting
      monitor - 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(com.nomagic.ci.persistence.IProject project, Package pkg, String path)
      Set preferred path for mounting for given shared package
      Parameters:
      project - project
      pkg - package
      path - preferred mounting path
    • setSharePreferredPath

      public static void setSharePreferredPath(com.nomagic.ci.persistence.IProject project, Package pkg, String path, @CheckForNull ProgressStatus monitor) throws com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException
      Set preferred path for mounting for given shared package
      Parameters:
      project - project
      pkg - package
      path - preferred mounting path
      monitor - monitor
      Throws:
      com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException
    • setStandardSystemProfile

      public static void setStandardSystemProfile(com.nomagic.ci.persistence.IProject project, boolean standard)
      Mark given project as "standard system profile".
      Parameters:
      project - project
      standard - mark as standard profile
    • setInternalVersion

      public static void setInternalVersion(com.nomagic.ci.persistence.IProject project, @CheckForNull String version)
      Set internal version for a given project
      Parameters:
      project - project
      version - version
    • setCompatibleVersion

      public static void setCompatibleVersion(com.nomagic.ci.persistence.IProject project, @CheckForNull String version)
      Set compatible version for a given project
      Parameters:
      project - project
      version - version
    • setUsedVersionOnTask

      public static void setUsedVersionOnTask(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, String version)
      Set "used" version for a given module
      Parameters:
      owner - module owner
      module - module
      version - version
    • setUsedVersion

      public static void setUsedVersion(com.nomagic.ci.persistence.IProject owner, com.nomagic.ci.persistence.IAttachedProject module, String version, ProgressStatus monitor) throws com.nomagic.ci.persistence.PersistenceException
      Set "used" version for a given module.
      Parameters:
      owner - module owner
      module - module
      version - version
      monitor - monitor
      Throws:
      com.nomagic.ci.persistence.PersistenceException - if any persistence problem
    • unShare

      public static void unShare(com.nomagic.ci.persistence.IProject project, Package pkg, ProgressStatus monitor) throws com.nomagic.ci.persistence.local.spi.InvalidProjectObjectException, com.nomagic.ci.persistence.LockAcquisitionException
      Un-share given package from a given project
      Parameters:
      project - project
      pkg - package to un-share
      monitor - 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(com.nomagic.ci.persistence.IProject project, Package pkg)
      Un-share given package from a given project
      Parameters:
      project - project
      pkg - package to un-share
    • setStickyVersion

      public static void setStickyVersion(Collection<ModuleUsage> usages, @CheckForNull com.nomagic.ci.persistence.versioning.IVersionDescriptor version, ProgressStatus monitor) throws com.nomagic.ci.persistence.PersistenceException
      Set sticky version for given modules usages.
      Parameters:
      usages - usages
      version - sticky version(null if no sticky version
      monitor - progress monitor
      Throws:
      com.nomagic.ci.persistence.PersistenceException - in case of some persistence problem
    • setStickyVersionOnTask

      public static void setStickyVersionOnTask(Collection<ModuleUsage> usages, @CheckForNull com.nomagic.ci.persistence.versioning.IVersionDescriptor version)
      Set sticky version for given modules usages.
      Parameters:
      usages - usages
      version - sticky version(null if no sticky version
    • findOrLoadLocalModule

      @CheckForNull public static com.nomagic.ci.persistence.IAttachedProject findOrLoadLocalModule(Project project, String filePath, boolean allowUI)
      Attaches local module from given path into a given project. Does nothing if such module is already attached.
      Parameters:
      project - project
      filePath - full path to module file
      allowUI - allow to show error messages to user
      Returns:
      attached module
    • findOrLoadModule

      @CheckForNull public static com.nomagic.ci.persistence.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 com.nomagic.ci.persistence.IAttachedProject findOrLoadModule(Project project, @CheckForNull ProjectDescriptor moduleLocation, @CheckForNull ProgressStatus 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.