@Override public ArtifactManagerState getState() { final ArtifactManagerState state = new ArtifactManagerState(); for (Artifact artifact : getAllArtifactsIncludingInvalid()) { final ArtifactState artifactState; if (artifact instanceof InvalidArtifact) { artifactState = ((InvalidArtifact) artifact).getState(); } else { artifactState = new ArtifactState(); artifactState.setBuildOnMake(artifact.isBuildOnMake()); artifactState.setName(artifact.getName()); artifactState.setOutputPath(artifact.getOutputPath()); artifactState.setRootElement(serializePackagingElement(artifact.getRootElement())); artifactState.setArtifactType(artifact.getArtifactType().getId()); for (ArtifactPropertiesProvider provider : artifact.getPropertiesProviders()) { final ArtifactPropertiesState propertiesState = serializeProperties(provider, artifact.getProperties(provider)); if (propertiesState != null) { artifactState.getPropertiesList().add(propertiesState); } } Collections.sort( artifactState.getPropertiesList(), new Comparator<ArtifactPropertiesState>() { @Override public int compare( @NotNull ArtifactPropertiesState o1, @NotNull ArtifactPropertiesState o2) { return o1.getId().compareTo(o2.getId()); } }); } state.getArtifacts().add(artifactState); } return state; }
@Override public void loadState(ArtifactManagerState managerState) { final List<ArtifactImpl> artifacts = new ArrayList<ArtifactImpl>(); for (ArtifactState state : managerState.getArtifacts()) { artifacts.add(loadArtifact(state)); } if (myLoaded) { final ArtifactModelImpl model = new ArtifactModelImpl(this, artifacts); doCommit(model); } else { myModel.setArtifactsList(artifacts); myLoaded = true; } }