--- /dev/null
+package org.simantics.modeling.migration;\r
+\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.DelayedWriteRequest;\r
+import org.simantics.db.common.utils.NameUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.migration.MigrationState;\r
+import org.simantics.db.layer0.migration.MigrationStep;\r
+import org.simantics.db.layer0.migration.MigrationUtils;\r
+import org.simantics.db.layer0.util.Layer0Utils;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.modeling.ModelingUtils;\r
+import org.simantics.simulation.ontology.SimulationResource;\r
+import org.simantics.utils.logging.TimeLogger;\r
+\r
+/**\r
+ * Runs\r
+ * {@link ModelingUtils#attachCreationInformation(IProgressMonitor, WriteGraph, Resource)}\r
+ * for all imported models.\r
+ * \r
+ * @author Tuukka Lehtonen\r
+ */\r
+public enum AttachCreationInformationStep implements MigrationStep {\r
+\r
+ INSTANCE;\r
+\r
+ public static AttachCreationInformationStep get() {\r
+ return INSTANCE;\r
+ }\r
+\r
+ @Override\r
+ public void applyTo(final IProgressMonitor monitor, Session session, MigrationState state) throws DatabaseException {\r
+ final Resource indexRoot = MigrationUtils.getResource(monitor, session, state);\r
+ if (indexRoot == null)\r
+ return;\r
+\r
+ session.sync(new DelayedWriteRequest() {\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ attach(monitor, graph, indexRoot);\r
+ }\r
+ });\r
+ }\r
+\r
+ private static void attach(IProgressMonitor monitor, WriteGraph graph, Resource indexRoot) throws DatabaseException {\r
+ Layer0Utils.setDependenciesIndexingDisabled(graph, true);\r
+ Layer0 L0 = Layer0.getInstance(graph);\r
+ SimulationResource SIMU = SimulationResource.getInstance(graph);\r
+ for (Resource model : graph.getObjects(indexRoot, L0.ConsistsOf)) {\r
+ if (graph.isInstanceOf(model, SIMU.Model)) {\r
+ TimeLogger.log(AttachCreationInformationStep.class, "attaching creation information to model " + NameUtils.getSafeName(graph, model));\r
+ ModelingUtils.attachCreationInformation(monitor, graph, model);\r
+ }\r
+ }\r
+ }\r
+\r
+}
\ No newline at end of file