From 8225dd2077c8e844ac35e91e966dbc1c83e5bc5e Mon Sep 17 00:00:00 2001 From: ahr Date: Sat, 16 Dec 2017 17:35:16 +0100 Subject: [PATCH] update primitiveCollections to 0.1.20171216143737 Use intersection and union methods from IntList. --- data-store/build.gradle | 10 +-- .../lang/ExpressionToDocIdVisitor.java | 63 ++----------------- 2 files changed, 7 insertions(+), 66 deletions(-) diff --git a/data-store/build.gradle b/data-store/build.gradle index 87988a0..eb21266 100644 --- a/data-store/build.gradle +++ b/data-store/build.gradle @@ -6,19 +6,11 @@ dependencies { compile project(':pdb-utils') antlr "org.antlr:antlr4:4.7" - compile 'org.lucares:primitiveCollections:0.1.20171007100354' + compile 'org.lucares:primitiveCollections:0.1.20171216143737' compile 'org.apache.commons:commons-lang3:3.6' compile 'org.apache.logging.log4j:log4j-core:2.9.1' compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.9.1' } -sourceSets { - generated{ - java.srcDir "build/generated-src/antlr/main" - } -} -compileJava{ - source += sourceSets.generated.java -} diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java b/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java index 75d388d..8a4fcf6 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/lang/ExpressionToDocIdVisitor.java @@ -69,27 +69,9 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { final IntList leftFiles = left.visit(this); final IntList rightFiles = right.visit(this); - final IntList result = new IntList(Math.min(leftFiles.size(), rightFiles.size())); - - int l = 0; - int r = 0; - - while (l < leftFiles.size() && r < rightFiles.size()) { - - final int lv = leftFiles.get(l); - final int rv = rightFiles.get(r); - - if (lv < rv) { - l++; - } else if (lv > rv) { - r++; - } else { - result.add(lv); - l++; - r++; - } - } - + final IntList result = IntList.intersection(leftFiles,rightFiles); + assert result.isSorted(); + return result; } @@ -101,7 +83,8 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { final IntList leftFiles = left.visit(this); final IntList rightFiles = right.visit(this); - final IntList result = merge(leftFiles, rightFiles); + final IntList result = IntList.union(leftFiles, rightFiles); + assert result.isSorted(); return result; } @@ -202,7 +185,7 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { IntList result = new IntList(); for (final IntList intList : lists) { - result = merge(result, intList); + result = IntList.union(result, intList); } return result; @@ -211,38 +194,4 @@ public class ExpressionToDocIdVisitor extends ExpressionVisitor { private boolean isMatchAll(final String stringValue) { return Objects.equals("*", stringValue); } - - private IntList merge(final IntList leftFiles, final IntList rightFiles) { - final IntList result = new IntList(leftFiles.size() + rightFiles.size()); - - int l = 0; - int r = 0; - - while (l < leftFiles.size() && r < rightFiles.size()) { - - final int lv = leftFiles.get(l); - final int rv = rightFiles.get(r); - - if (lv < rv) { - result.add(lv); - l++; - } else if (lv > rv) { - result.add(rv); - r++; - } else { - result.add(lv); - l++; - r++; - } - } - - if (l < leftFiles.size()) { - final int length = leftFiles.size() - l; - result.addAll(leftFiles.get(l, length)); - } else if (r < rightFiles.size()) { - final int length = rightFiles.size() - r; - result.addAll(rightFiles.get(r, length)); - } - return result; - } }