X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fgenericrelation%2FIndexQueries.java;h=ee6296fdd4ecb7a1fbc02e4934119f456aabf0f1;hp=2be6bf5d0e1f270655ed0828acbc07975e075b52;hb=ad0e5bf4b34705988e23c9ee3f8e4fcbb760c701;hpb=0f2d6b33db9eabe0c1b142f6d0197a5d1446c3b1 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java index 2be6bf5d0..ee6296fdd 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/IndexQueries.java @@ -1,5 +1,9 @@ package org.simantics.db.layer0.genericrelation; +import java.util.Collection; + +import org.simantics.datatypes.literal.GUID; +import org.simantics.db.Resource; /** * This class contains utilities related to queries made into Lucene indexes, @@ -183,6 +187,22 @@ public class IndexQueries { ).toString(); } + public static StringBuilder appendLongTerm(StringBuilder sb, String field, long term) { + return sb.append(field).append(':').append(term); + } + + public static String longTerm(String field, long term) { + return appendLongTerm(new StringBuilder(), field, term).toString(); + } + + public static StringBuilder appendResourceIdTerm(StringBuilder sb, String field, Resource term) { + return appendLongTerm(sb, field, term.getResourceId()); + } + + public static String resourceIdTerm(String field, Resource term) { + return appendLongTerm(new StringBuilder(), field, term.getResourceId()).toString(); + } + private static String join(String withString, String... exps) { if (exps.length == 0) return ""; @@ -210,6 +230,32 @@ public class IndexQueries { return join(" OR ", exps); } + public static String idFromGUID(GUID guid) { + return guid != null ? guid.indexString() : ""; + } + + public static String toResourceIdString(Resource r, Collection rs) { + StringBuilder sb = new StringBuilder(); + sb.append(r.getResourceId()); + for (Resource rr : rs) + sb.append(' ').append(rr.getResourceId()); + return sb.toString(); + } + + public static String toResourceIdString(Collection rs) { + if (rs.isEmpty()) + return ""; + StringBuilder sb = new StringBuilder(); + boolean first = true; + for (Resource rr : rs) { + if (!first) + sb.append(' '); + first = false; + sb.append(rr.getResourceId()); + } + return sb.toString(); + } + // public static void main(String[] args) { // System.out.println("esc: " + escape("AND01", true, true)); // System.out.println("esc: " + escape("AND 01", true, true));