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