Projects are saved and loaded by using two methods in the com.nomagic.magicdraw.core.project.ProjectsManager class.

“Save” means “Commit” for the server project.

A project cannot be saved using a descriptor, if the project isn’t specified, and a project cannot be loaded, if the file isn’t specified. In such cases java.lang.IllegalStateException is thrown.

The silent mode means that during the saving or load process no GUI interruptions for a user input is used, for example, there is no the Commit Project dialog box while committing a server project or there is no the Save dialog box while saving a new project (a project is saved into the last used directory).

Save participant

Use com.nomagic.magicdraw.core.SaveParticipant to plugin into a save/commit operation. 

Register it using com.nomagic.magicdraw.core.Application.addSaveParticipant(SaveParticipant)

Implementing SaveParticipant.isReadyForSave(Project, ProjectDescriptor) you can "disable" the save/commit operation until some conditions are met.

Example #1. Saving an active project

    ProjectsManager projectsManager = Application.getInstance().getProjectsManager();
    // An active project
    Project project = projectsManager.getActiveProject();
 
    // Get a project descriptor
    ProjectDescriptor projectDescriptor = ProjectDescriptorsFactory.getDescriptorForProject(project);
    
    // Save a project 
    projectsManager.saveProject(projectDescriptor, true);

Example #2. Loading a project from the file

The project can be loaded, if the project’s file name is known:

    ProjectsManager projectsManager = Application.getInstance().getProjectsManager(); 
    File file = new File(projectFilePath);
    // Create a project descriptor 
    ProjectDescriptor projectDescriptor = ProjectDescriptorsFactory.createProjectDescriptor(file.toURI()); 
    projectsManager.loadProject(projectDescriptor, true);

Example #3. Importing another project file

The project can be imported, if the project's file name is known:

    ProjectsManager projectsManager = Application.getInstance().getProjectsManager(); 
    File file = new File(projectFilePath);
    // Create a project descriptor 
    ProjectDescriptor projectDescriptor = ProjectDescriptorsFactory.createProjectDescriptor(file.toURI()); 
    projectsManager.importProject(projectDescriptor);

Example #4. Loading a server project

The project can be loaded, if the project’s qualified name is known:

    ProjectsManager projectsManager = Application.getInstance().getProjectsManager();
    // Create a project descriptor
    ProjectDescriptor projectDescriptor = TeamworkUtils.getRemoteProjectDescriptorByQualifiedName(remoteProjectQualifiedName);
    if (projectDescriptor != null)
    {
        projectsManager.loadProject(projectDescriptor, true);
    }
Related pages