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