X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FCodeGen.java;h=212326087a19581198d85ed28672c97891fb3334;hb=8b6de499c9c1bad0e72631719fd165ce39d6ad56;hp=cd540eaadbf59a63c3e450999254ead404a9cefe;hpb=1f8b50d81a1aa1bbd67a77f7cbc1060f2eb805d4;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CodeGen.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CodeGen.java index cd540eaad..212326087 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CodeGen.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CodeGen.java @@ -14,8 +14,6 @@ public class CodeGen { int indent = 4; - - String[] signatureR1RelationInfo = { "int r", "r", "keyR", "long", "InternalProcedure", "entry.id" }; String[] signatureR1Bytes = { "int r", "r", "keyR", "long", "InternalProcedure", "entry.id" }; String[] signatureR1IntSet = { "int r", "r", "keyR", "long", "InternalProcedure", "entry.id" }; @@ -27,7 +25,7 @@ public class CodeGen { String[] signatureChildMap = { "int r", "r", "keyR", "long", "InternalProcedure>", "entry.id" }; String[] signatureRead = { "Read r", "r", "id", "long", "AsyncProcedure", "entry.request" }; String[] signatureAsyncRead = { "AsyncRead r", "r", "id", "long", "AsyncProcedure", "entry.request" }; - String[] signatureMultiRead = { "MultiRead r", "r", "id", "long", "AsyncMultiProcedure", "entry.request" }; + String[] signatureMultiRead = { "MultiRead r", "r", "id", "long", "SyncMultiProcedure", "entry.request" }; String[] signatureAsyncMultiRead = { "AsyncMultiRead r", "r", "id", "long", "AsyncMultiProcedure", "entry.request" }; String[] signatureExternalRead = { "ExternalRead r", "r", "id", "long", "AsyncProcedure", "entry.request" }; @@ -54,7 +52,7 @@ public class CodeGen { line(content, " return;"); line(content, " }"); } - line(content, " " + clazz + " entry = (" + clazz + ")cache.getOrCreate" + clazz + "(graph, " + signature[1] + (genAsync ? ", isSync" : "") + ");"); + line(content, " " + clazz + " entry = (" + clazz + ")cache.getOrCreate" + clazz + "(graph.processor, " + signature[1] + (genAsync ? ", isSync" : "") + ");"); if(genAsync) { line(content, " if(entry == null) {"); line(content, " graph.processor.schedule(new SessionTask(false) {"); @@ -102,7 +100,7 @@ public class CodeGen { String lower = Character.toLowerCase(clazz.charAt(0)) + clazz.substring(1); - line(content, "" + clazz + " getOrCreate" + clazz + "(ReadGraphImpl graph, " + signature[0] + (genAsync ? ", boolean isSync" : "") + ") throws DatabaseException {"); + line(content, "" + clazz + " getOrCreate" + clazz + "(QueryProcessor processor, " + signature[0] + (genAsync ? ", boolean isSync" : "") + ") throws DatabaseException {"); line(content, " " + clazz + " existing = null;"); line(content, " synchronized(" + lower + "Map) {"); line(content, " existing = (" + clazz + ")" + lower + "Map.get(" + signature[1] + ");"); @@ -121,11 +119,11 @@ public class CodeGen { line(content, " }"); if(genAsync) { line(content, " if(existing.isPending()) {"); - line(content, " if(isSync) waitPending(graph, existing);"); + line(content, " if(isSync) waitPending(processor, existing);"); line(content, " else return null;"); line(content, " }"); } else { - line(content, " if(existing.isPending()) waitPending(graph, existing);"); + line(content, " if(existing.isPending()) waitPending(processor, existing);"); } line(content, " return existing;"); line(content, "}"); @@ -159,14 +157,13 @@ public class CodeGen { content.append("import org.simantics.db.procedure.AsyncMultiProcedure;\n"); content.append("import org.simantics.db.procedure.AsyncProcedure;\n"); content.append("import org.simantics.db.procedure.ListenerBase;\n"); + content.append("import org.simantics.db.procedure.SyncMultiProcedure;\n"); content.append("import org.simantics.db.request.AsyncMultiRead;\n"); content.append("import org.simantics.db.request.AsyncRead;\n"); content.append("import org.simantics.db.request.ExternalRead;\n"); content.append("import org.simantics.db.request.MultiRead;\n"); content.append("import org.simantics.db.request.Read;\n"); content.append("\n"); - content.append("import gnu.trove.map.hash.TObjectIntHashMap;\n"); - content.append("\n"); content.append("public class QueryCache extends QueryCacheBase {\n"); content.append("\n"); @@ -188,15 +185,14 @@ public class CodeGen { generateQuery(content, "ReadEntry", signatureRead, true, true); generateQuery(content, "AsyncReadEntry", signatureAsyncRead, true, true); generateQuery(content, "Types", signatureR1IntSet, true, false); - //generateQuery(content, "NamespaceIndex", signatureID2, true); generateQuery(content, "ChildMap", signatureChildMap, true, false); + generateQuery(content, "TypeHierarchy", signatureR1IntSet, true, false); + generateQuery(content, "SuperTypes", signatureR1IntSet, true, false); + generateQuery(content, "SuperRelations", signatureR1IntSet, true, false); - generateQuery(content, "AssertedStatements", signatureR2TIP, false, false); generateQuery(content, "AssertedPredicates", signatureR1IP, false, false); + generateQuery(content, "AssertedStatements", signatureR2TIP, false, false); generateQuery(content, "DirectSuperRelations", signatureR1IP, false, false); - generateQuery(content, "SuperTypes", signatureR1IntSet, false, false); - generateQuery(content, "TypeHierarchy", signatureR1IntSet, false, false); - generateQuery(content, "SuperRelations", signatureR1IntSet, false, false); generateQuery(content, "MultiReadEntry", signatureMultiRead, false, false); generateQuery(content, "AsyncMultiReadEntry", signatureAsyncMultiRead, false, false); generateQuery(content, "ExternalReadEntry", signatureExternalRead, false, false);