]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.db/src/org/simantics/graph/db/CoreInitialization.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graph.db / src / org / simantics / graph / db / CoreInitialization.java
diff --git a/bundles/org.simantics.graph.db/src/org/simantics/graph/db/CoreInitialization.java b/bundles/org.simantics.graph.db/src/org/simantics/graph/db/CoreInitialization.java
new file mode 100644 (file)
index 0000000..c80d595
--- /dev/null
@@ -0,0 +1,82 @@
+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