Used project management
com.nomagic.magicdraw.core.project.ProjectsManager provides the used project management (project usage, export, import, reload, and package sharing) methods.
Example #1. Exporting a used local project
The collection of project packages can be exported as a used project.
ProjectsManager projectsManager = Application.getInstance().getProjectsManager();
File file =
new
File(moduleFilePath);
ProjectDescriptor projectDescriptor = ProjectDescriptorsFactory.createProjectDescriptor(file.toURI());
// Export a collection of packages as a used project
projectsManager.exportModule(project, packages,
"My used local project"
, projectDescriptor);
Example #3. Using a project
The local and server project usage is similar - an appropriate project descriptor must be used, but module directories project option should be updated before using local project:
ProjectsManager projectsManager = Application.getInstance().getProjectsManager();
File file =
new
File(moduleFilePath);
// update project options only when using local project
String moduleDir = file.getParent();
ProjectOptions projectOptions = project.getOptions();
List<String> directories = projectOptions.getModulesDirectories(
true
);
if
(!directories.contains(moduleDir))
{
projectOptions.addModuleDirectory(moduleDir);
}
ProjectDescriptor projectDescriptor = ProjectDescriptorsFactory.createProjectDescriptor(file.toURI());
// Use a project
projectsManager.useModule(project, projectDescriptor);
Example #6. The package sharing
ProjectsManager projectsManager = Application.getInstance().getProjectsManager();
SessionManager.getInstance().createSession(
"Create shared package"
);
// Create a package to share
Package aPackage = project.getElementsFactory().createPackageInstance();
aPackage.setOwner(project.getModel());
aPackage.setName(
"myShare"
);
SessionManager.getInstance().closeSession();
// Share a package
projectsManager.sharePackage(project, Arrays.asList(aPackage),
"my used project"
);
// Save a project
ProjectDescriptor projectDescriptor = ProjectDescriptorsFactory.getDescriptorForProject(project);
projectsManager.saveProject(projectDescriptor,
true
);
Example #7. Editing a used project within the project
final
String moduleFileName =
new
File(moduleFilePath).getName();
// Find a used project directly used by the project (the primary project)
final
IAttachedProject attachedProject = ProjectUtilities.findAttachedProjectByName(project, moduleFileName,
false
);
if
(attachedProject !=
null
)
{
final
ModuleUsage moduleUsage =
new
ModuleUsage(project.getPrimaryProject(), attachedProject);
final
Set<ModuleUsage> moduleUsages = Collections.singleton(moduleUsage);
final
boolean
readOnly = attachedProject.isReadOnly();
if
(readOnly)
{
// Make the used project editable (the read-write accessibility mode)
ModulesService.setReadOnlyOnTask(moduleUsages,
false
);
}
// Get the first shared package of the used project
final
Collection<Package> sharedPackages = ProjectUtilities.getSharedPackages(attachedProject);
final
Package aPackage = sharedPackages.iterator().next();
// Create a class in the used project
SessionManager.getInstance().createSession(
"Create use case in used project"
);
final
Class aCase = project.getElementsFactory().createClassInstance();
aCase.setOwner(aPackage);
aCase.setName(
"myClass"
);
SessionManager.getInstance().closeSession();
// save the used project
Application.getInstance().getProjectsManager().saveModule(project, attachedProject,
true
,
false
);
if
(readOnly)
{
// Make a used project not editable (the read-only accessibility mode)
ModulesService.setReadOnlyOnTask(moduleUsages,
true
);
}
}
Advanced management
Use the com.nomagic.magicdraw.core.ProjectUtilities utility class for retrieving more project decomposition related information.
Use the com.nomagic.magicdraw.core.modules.ModulesService or ProjectsManager classes for managing attached projects.
Related pages