]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.graph.db;\r
2 \r
3 import java.util.HashSet;\r
4 \r
5 import org.simantics.db.Session;\r
6 import org.simantics.db.WriteOnlyGraph;\r
7 import org.simantics.db.common.request.WriteOnlyRequest;\r
8 import org.simantics.db.exception.DatabaseException;\r
9 import org.simantics.db.service.InitSupport;\r
10 import org.simantics.db.service.SerialisationSupport;\r
11 import org.simantics.graph.representation.TransferableGraph1;\r
12 import org.simantics.scl.reflection.OntologyVersions;\r
13 \r
14 public class CoreInitialization {\r
15 \r
16         static final public String LAYER0 = OntologyVersions.getInstance().currentVersion("http://www.simantics.org/Layer0-0.0/");\r
17         static final HashSet<InitSupport.Builtin> BUILTINS =\r
18                 new HashSet<InitSupport.Builtin>();\r
19         static public HashSet<InitSupport.Builtin> getBuiltins() {\r
20             return BUILTINS;\r
21         }\r
22         private static int builtinId = 0;\r
23         private static void addBuiltin(String uri) {\r
24                 BUILTINS.add(new InitSupport.Builtin(uri, ++builtinId));\r
25         }\r
26         private static void addLayer0Builtin(String name) {\r
27                 addBuiltin(LAYER0 + name);\r
28         }\r
29 \r
30         static {\r
31                 addLayer0Builtin("InstanceOf");\r
32                 addLayer0Builtin("Inherits");\r
33                 addLayer0Builtin("SubrelationOf");\r
34                 addLayer0Builtin("InverseOf");\r
35 \r
36                 addLayer0Builtin("HasName");\r
37                 addLayer0Builtin("NameOf");\r
38 \r
39                 addLayer0Builtin("ConsistsOf");\r
40                 addLayer0Builtin("PartOf");\r
41 \r
42                 addLayer0Builtin("String");\r
43                 addLayer0Builtin("Library");\r
44                 addLayer0Builtin("FunctionalRelation");\r
45                 addLayer0Builtin("SuperrelationOf");\r
46                 addLayer0Builtin("Asserts");\r
47                 addLayer0Builtin("HasInstance");\r
48                 addLayer0Builtin("HasPredicate");\r
49                 addLayer0Builtin("HasPredicateInverse");\r
50                 addLayer0Builtin("HasObject");\r
51 \r
52                 addBuiltin("http://Projects");\r
53                 addBuiltin("http:/");\r
54         }\r
55 \r
56     public static void initializeBuiltins(Session session) throws DatabaseException {\r
57         session.getService(InitSupport.class).addBuiltins(BUILTINS);\r
58     }\r
59 \r
60         public static long[] initializeGraph(final Session session, TransferableGraph1 tg) throws DatabaseException {\r
61                 final TransferableGraphImportProcess process = new TransferableGraphImportProcess(tg,\r
62                                 new ImportAdvisor());\r
63                 session.syncRequest(new WriteOnlyRequest() {\r
64                         @Override\r
65                         public void perform(WriteOnlyGraph graph) throws DatabaseException {\r
66                             graph.markUndoPoint();\r
67 \r
68 //                              // Hackety hack\r
69 //                              session.getService(XSupport.class).setImmutable(session.getRootLibrary(), true);\r
70 \r
71                                 process.initialPrepare(graph);\r
72                                 process.write(graph);\r
73                                 graph.clearUndoList(this);\r
74 \r
75                         }\r
76                 });\r
77                 return process.getResourceIds(\r
78                                 session.getService(SerialisationSupport.class)\r
79                         );\r
80         }\r
81 \r
82 }\r