--- /dev/null
+package org.simantics.graph.db;\r
+\r
+import java.util.HashSet;\r
+\r
+import org.simantics.db.Session;\r
+import org.simantics.db.WriteOnlyGraph;\r
+import org.simantics.db.common.request.WriteOnlyRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.service.InitSupport;\r
+import org.simantics.db.service.SerialisationSupport;\r
+import org.simantics.graph.representation.TransferableGraph1;\r
+import org.simantics.scl.reflection.OntologyVersions;\r
+\r
+public class CoreInitialization {\r
+\r
+ static final public String LAYER0 = OntologyVersions.getInstance().currentVersion("http://www.simantics.org/Layer0-0.0/");\r
+ static final HashSet<InitSupport.Builtin> BUILTINS =\r
+ new HashSet<InitSupport.Builtin>();\r
+ static public HashSet<InitSupport.Builtin> getBuiltins() {\r
+ return BUILTINS;\r
+ }\r
+ private static int builtinId = 0;\r
+ private static void addBuiltin(String uri) {\r
+ BUILTINS.add(new InitSupport.Builtin(uri, ++builtinId));\r
+ }\r
+ private static void addLayer0Builtin(String name) {\r
+ addBuiltin(LAYER0 + name);\r
+ }\r
+\r
+ static {\r
+ addLayer0Builtin("InstanceOf");\r
+ addLayer0Builtin("Inherits");\r
+ addLayer0Builtin("SubrelationOf");\r
+ addLayer0Builtin("InverseOf");\r
+\r
+ addLayer0Builtin("HasName");\r
+ addLayer0Builtin("NameOf");\r
+\r
+ addLayer0Builtin("ConsistsOf");\r
+ addLayer0Builtin("PartOf");\r
+\r
+ addLayer0Builtin("String");\r
+ addLayer0Builtin("Library");\r
+ addLayer0Builtin("FunctionalRelation");\r
+ addLayer0Builtin("SuperrelationOf");\r
+ addLayer0Builtin("Asserts");\r
+ addLayer0Builtin("HasInstance");\r
+ addLayer0Builtin("HasPredicate");\r
+ addLayer0Builtin("HasPredicateInverse");\r
+ addLayer0Builtin("HasObject");\r
+\r
+ addBuiltin("http://Projects");\r
+ addBuiltin("http:/");\r
+ }\r
+\r
+ public static void initializeBuiltins(Session session) throws DatabaseException {\r
+ session.getService(InitSupport.class).addBuiltins(BUILTINS);\r
+ }\r
+\r
+ public static long[] initializeGraph(final Session session, TransferableGraph1 tg) throws DatabaseException {\r
+ final TransferableGraphImportProcess process = new TransferableGraphImportProcess(tg,\r
+ new ImportAdvisor());\r
+ session.syncRequest(new WriteOnlyRequest() {\r
+ @Override\r
+ public void perform(WriteOnlyGraph graph) throws DatabaseException {\r
+ graph.markUndoPoint();\r
+\r
+// // Hackety hack\r
+// session.getService(XSupport.class).setImmutable(session.getRootLibrary(), true);\r
+\r
+ process.initialPrepare(graph);\r
+ process.write(graph);\r
+ graph.clearUndoList(this);\r
+\r
+ }\r
+ });\r
+ return process.getResourceIds(\r
+ session.getService(SerialisationSupport.class)\r
+ );\r
+ }\r
+\r
+}\r