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