1 package org.simantics.graph.db;
3 import java.util.HashSet;
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;
14 public class CoreInitialization {
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() {
22 private static int builtinId = 0;
23 private static void addBuiltin(String uri) {
24 BUILTINS.add(new InitSupport.Builtin(uri, ++builtinId));
26 private static void addLayer0Builtin(String name) {
27 addBuiltin(LAYER0 + name);
31 addLayer0Builtin("InstanceOf");
32 addLayer0Builtin("Inherits");
33 addLayer0Builtin("SubrelationOf");
34 addLayer0Builtin("InverseOf");
36 addLayer0Builtin("HasName");
37 addLayer0Builtin("NameOf");
39 addLayer0Builtin("ConsistsOf");
40 addLayer0Builtin("PartOf");
42 addLayer0Builtin("String");
43 addLayer0Builtin("Library");
44 addLayer0Builtin("FunctionalRelation");
45 addLayer0Builtin("SuperrelationOf");
46 addLayer0Builtin("Asserts");
47 addLayer0Builtin("HasInstance");
48 addLayer0Builtin("HasPredicate");
49 addLayer0Builtin("HasPredicateInverse");
50 addLayer0Builtin("HasObject");
52 addBuiltin("http://Projects");
56 public static void initializeBuiltins(Session session) throws DatabaseException {
57 session.getService(InitSupport.class).addBuiltins(BUILTINS);
60 public static long[] initializeGraph(final Session session, TransferableGraph1 tg) throws DatabaseException {
61 final TransferableGraphImportProcess process = new TransferableGraphImportProcess(tg,
63 session.syncRequest(new WriteOnlyRequest() {
65 public void perform(WriteOnlyGraph graph) throws DatabaseException {
66 graph.markUndoPoint();
69 // session.getService(XSupport.class).setImmutable(session.getRootLibrary(), true);
71 process.initialPrepare(graph);
73 graph.clearUndoList(this);
77 return process.getResourceIds(
78 session.getService(SerialisationSupport.class)