-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
+package org.simantics.graph.db;
+
+import java.util.HashSet;
+
+import org.simantics.db.Session;
+import org.simantics.db.WriteOnlyGraph;
+import org.simantics.db.common.request.WriteOnlyRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.service.InitSupport;
+import org.simantics.db.service.SerialisationSupport;
+import org.simantics.graph.representation.TransferableGraph1;
+import org.simantics.scl.reflection.OntologyVersions;
+
+public class CoreInitialization {
+
+ static final public String LAYER0 = OntologyVersions.getInstance().currentVersion("http://www.simantics.org/Layer0-0.0/");
+ static final HashSet<InitSupport.Builtin> BUILTINS =
+ new HashSet<InitSupport.Builtin>();
+ static public HashSet<InitSupport.Builtin> getBuiltins() {
+ return BUILTINS;
+ }
+ private static int builtinId = 0;
+ private static void addBuiltin(String uri) {
+ BUILTINS.add(new InitSupport.Builtin(uri, ++builtinId));
+ }
+ private static void addLayer0Builtin(String name) {
+ addBuiltin(LAYER0 + name);
+ }
+
+ static {
+ // IMPORTANT NOTICE:
+ // DO NOT alter the order of these definitions in any way
+ // unless you deliberately want to make the system incompatible
+ // with databases that have been created before changing these.
+ addLayer0Builtin("InstanceOf");
+ addLayer0Builtin("Inherits");
+ addLayer0Builtin("SubrelationOf");
+ addLayer0Builtin("InverseOf");
+
+ addLayer0Builtin("HasName");
+ addLayer0Builtin("NameOf");
+
+ addLayer0Builtin("ConsistsOf");
+ addLayer0Builtin("PartOf");
+
+ addLayer0Builtin("String");
+ addLayer0Builtin("Library");
+ addLayer0Builtin("FunctionalRelation");
+ addLayer0Builtin("SuperrelationOf");
+ addLayer0Builtin("Asserts");
+ addLayer0Builtin("HasInstance");
+ addLayer0Builtin("HasPredicate");
+ addLayer0Builtin("HasPredicateInverse");
+ addLayer0Builtin("HasObject");
+
+ // #7016: This bogus URI replaces the builtin entry
+ // that was originally http://Projects.
+ //
+ // addBuiltin("http://Projects") was removed because its existence
+ // resulted in a non-functioning URI space because:
+ //
+ // 1. http://Projects was added as a "built-in resource" when the database
+ // is first initialized which means that ReadGraph.getResource("http://Projects")
+ // would succeed even when the resource was not yet properly imported
+ // from the project ontology.
+ //
+ // 2. When the project ontology is imported, a new resource is
+ // created to represent http://Projects instead of using the existing
+ // uninitialized "built-in resource". The L0.ExternalEntity changes made
+ // to the standard transferable graph import in this patch caused the
+ // code to find the built-in resource for "http://Projects" and think
+ // that it has to be a resource that's already properly initialized.
+ // This led to the TG import not initializing the resource at all.
+ // Previously there was a bug here as well but it was hidden by the fact
+ // that the system would import the actual/new "http://Projects"
+ // resource from the ontology anyway. This effectively left the
+ // uninitialized built-in resource just hanging in the database as
+ // trash.
+ //addBuiltin("http://Projects");
+ addBuiltin("75e23fb39121b4b37cf2e6a26ccb34c52f77522d-do-not-remove");
+ addBuiltin("http:/");
+ addLayer0Builtin("ExternalEntity");
+ }
+
+ public static void initializeBuiltins(Session session) throws DatabaseException {
+ session.getService(InitSupport.class).addBuiltins(BUILTINS);
+ }
+
+ public static long[] initializeGraph(final Session session, TransferableGraph1 tg) throws DatabaseException {
+ final TransferableGraphImportProcess process = new TransferableGraphImportProcess(tg,
+ new ImportAdvisor());
+ session.syncRequest(new WriteOnlyRequest() {
+ @Override
+ public void perform(WriteOnlyGraph graph) throws DatabaseException {
+ graph.markUndoPoint();
+
+// // Hackety hack
+// session.getService(XSupport.class).setImmutable(session.getRootLibrary(), true);
+
+ process.initialPrepare(graph);
+ process.write(graph);
+ graph.clearUndoList(this);
+
+ }
+ });
+ return process.getResourceIds(
+ session.getService(SerialisationSupport.class)
+ );
+ }
+
+}