]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/migration/GuidCreationStep.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / migration / GuidCreationStep.java
1 package org.simantics.modeling.migration;
2
3  import java.io.PrintWriter;
4 import java.util.Collection;
5
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.simantics.db.Resource;
8 import org.simantics.db.Session;
9 import org.simantics.db.WriteGraph;
10 import org.simantics.db.common.request.DelayedWriteRequest;
11 import org.simantics.db.exception.DatabaseException;
12 import org.simantics.db.layer0.migration.MigrationState;
13 import org.simantics.db.layer0.migration.MigrationStateKeys;
14 import org.simantics.db.layer0.migration.MigrationStep;
15 import org.simantics.db.layer0.migration.MigrationUtils;
16 import org.simantics.db.layer0.migration.NullWriter;
17 import org.simantics.db.layer0.util.Layer0Utils;
18 import org.simantics.modeling.ModelingUtils;
19
20 /**
21  * Runs
22  * {@link ModelingUtils#createMissingGUIDs(IProgressMonitor, WriteGraph, Resource)}
23  * for all imported models.
24  * 
25  * @author Tuukka Lehtonen
26  */
27 public enum GuidCreationStep implements MigrationStep {
28
29     INSTANCE;
30
31     public static GuidCreationStep get() {
32         return INSTANCE;
33     }
34
35     @Override
36     public void applyTo(final IProgressMonitor monitor, Session session, MigrationState state) throws DatabaseException {
37         final Collection<Resource> roots = state.getProperty(MigrationStateKeys.CURRENT_ROOT_RESOURCES);
38         if (roots.isEmpty())
39             return;
40         final PrintWriter log = MigrationUtils.getProperty(state, MigrationStateKeys.MESSAGE_LOG_WRITER, NullWriter.PRINT_INSTANCE);
41
42         session.sync(new DelayedWriteRequest() {
43             @Override
44             public void perform(WriteGraph graph) throws DatabaseException {
45                 create(monitor, graph, roots, log);
46             }
47         });
48     }
49
50     private static void create(IProgressMonitor monitor, WriteGraph graph, Collection<Resource> roots, PrintWriter log) throws DatabaseException {
51         log.println("## Creating missing GUID identifiers ##");
52         Layer0Utils.setDependenciesIndexingDisabled(graph, true);
53         ModelingUtils.createMissingGUIDs(monitor, graph, roots);
54     }
55
56 }