1 package org.simantics.modeling.migration;
\r
3 import java.io.PrintWriter;
\r
4 import java.util.Collection;
\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
22 * {@link ModelingUtils#createMissingGUIDs(IProgressMonitor, WriteGraph, Resource)}
\r
23 * for all imported models.
\r
25 * @author Tuukka Lehtonen
\r
27 public enum GuidCreationStep implements MigrationStep {
\r
31 public static GuidCreationStep get() {
\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
40 final PrintWriter log = MigrationUtils.getProperty(state, MigrationStateKeys.MESSAGE_LOG_WRITER, NullWriter.PRINT_INSTANCE);
\r
42 session.sync(new DelayedWriteRequest() {
\r
44 public void perform(WriteGraph graph) throws DatabaseException {
\r
45 create(monitor, graph, roots, log);
\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