diff --git a/modules/api/src/main/java/org/apache/fluo/api/client/scanner/ScannerBuilder.java b/modules/api/src/main/java/org/apache/fluo/api/client/scanner/ScannerBuilder.java index 1217aa0c5..d0714cfb3 100644 --- a/modules/api/src/main/java/org/apache/fluo/api/client/scanner/ScannerBuilder.java +++ b/modules/api/src/main/java/org/apache/fluo/api/client/scanner/ScannerBuilder.java @@ -17,6 +17,7 @@ import java.util.Collection; +import org.apache.fluo.api.data.Bytes; import org.apache.fluo.api.data.Column; import org.apache.fluo.api.data.Span; @@ -30,6 +31,96 @@ public interface ScannerBuilder { */ ScannerBuilder over(Span span); + /** + * + * @since 1.2.0 + * @see org.apache.fluo.api.data.Span#exact(Bytes) + * @param row restrict the scanner to data in an exact row + * @return self + */ + default ScannerBuilder over(Bytes row) { + return over(Span.exact(row)); + } + + /** + * + * @since 1.2.0 + * @see org.apache.fluo.api.data.Span#exact(CharSequence) + * @param row restrict the scanner to data in an exact row. String parameters will be encoded as UTF-8 + * @return self + */ + default ScannerBuilder over(CharSequence row) { + return over(Span.exact(row)); + } + + /** + * + * @see org.apache.fluo.api.data.Span#exact(Bytes, Column) + * @param row restrict the scanner to data in an exact row + * @param col restrict the scanner to data in exact {@link org.apache.fluo.api.data.Column}. + * @since 1.2.0 + */ + default ScannerBuilder over(Bytes row, Column col) { + return over(Span.exact(row, col)); + } + + /** + * + * @see org.apache.fluo.api.data.Span#exact(CharSequence, Column) + * @param row restrict the scanner to data in an exact row + * @param col restrict the scanner to data in exact {@link org.apache.fluo.api.data.Column}. + * @return self + * @since 1.2.0 + */ + default ScannerBuilder over(CharSequence row, Column col) { + return over(Span.exact(row, col)); + } + + /** + * + * @see org.apache.fluo.api.data.Span#prefix(Bytes) + * @param rowPrefix restrict the scanner to data in rows that begins with a prefix + * @return self + * @since 1.2.0 + */ + default ScannerBuilder overPrefix(Bytes rowPrefix) { + return over(Span.prefix(rowPrefix)); + } + + /** + * + * @see org.apache.fluo.api.data.Span#prefix(CharSequence) + * @param rowPrefix restrict the scanner to data in rows that begins with a prefix. + * @return self + * @since 1.2.0 + */ + default ScannerBuilder overPrefix(CharSequence rowPrefix) { + return over(Span.prefix(rowPrefix)); + } + + /** + * + * @see org.apache.fluo.api.data.Span#prefix(Bytes, Column) + * @param row restrict the scanner to data in an exact row. + * @param colPrefix restrict scanner to data that begins with specifiec {@link org.apache.fluo.api.data.Column} prefix. + * @return self + * @since 1.2.0 + */ + default ScannerBuilder overPrefix(Bytes row, Column colPrefix) { + return over(Span.prefix(row, colPrefix)); + } + + /** + * + * @see org.apache.fluo.api.data.Span#prefix(CharSequence, Column) + * @param row restrict the scanner to data in an exact row. + * @param colPrefix restrict scanner to data that begins with specifiec {@link org.apache.fluo.api.data.Column} prefix. + * @return self + * @since 1.2.0 + */ + default ScannerBuilder overPrefix(CharSequence row, Column colPrefix) { + return over(Span.prefix(row, colPrefix)); + } /** * Passing in a Column with only the family set will fetch the entire column family. diff --git a/modules/integration/src/test/java/org/apache/fluo/integration/impl/FluoIT.java b/modules/integration/src/test/java/org/apache/fluo/integration/impl/FluoIT.java index b1352ee7c..bd17025b3 100644 --- a/modules/integration/src/test/java/org/apache/fluo/integration/impl/FluoIT.java +++ b/modules/integration/src/test/java/org/apache/fluo/integration/impl/FluoIT.java @@ -463,8 +463,7 @@ public void testRange() throws Exception { HashSet columns = new HashSet<>(); - CellScanner cellScanner = - tx2.scanner().over(Span.exact(Bytes.of("d00001"))).fetch(new Column("outlink")).build(); + CellScanner cellScanner = tx2.scanner().over("d00001").fetch(new Column("outlink")).build(); for (RowColumnValue rcv : cellScanner) { columns.add(rcv.getColumn()); } @@ -480,8 +479,7 @@ public void testRange() throws Exception { TestTransaction tx4 = new TestTransaction(env); columns.clear(); - cellScanner = - tx4.scanner().over(Span.exact(Bytes.of("d00001"))).fetch(new Column("outlink")).build(); + cellScanner = tx4.scanner().over("d00001").fetch(new Column("outlink")).build(); for (RowColumnValue rcv : cellScanner) { columns.add(rcv.getColumn()); } diff --git a/modules/integration/src/test/java/org/apache/fluo/integration/impl/ScannerIT.java b/modules/integration/src/test/java/org/apache/fluo/integration/impl/ScannerIT.java index e8af4c7cb..f9cb31ed2 100644 --- a/modules/integration/src/test/java/org/apache/fluo/integration/impl/ScannerIT.java +++ b/modules/integration/src/test/java/org/apache/fluo/integration/impl/ScannerIT.java @@ -67,12 +67,11 @@ public void testFiltering() { try (Snapshot snap = client.newSnapshot()) { HashSet actual = new HashSet<>(); - Iterables.addAll(actual, snap.scanner().over(Span.exact("r2")).build()); + Iterables.addAll(actual, snap.scanner().over("r2").build()); Assert.assertEquals(expectedR2, actual); actual.clear(); - Iterables.addAll(actual, - snap.scanner().over(Span.exact("r2")).fetch(new Column("f1", "q2")).build()); + Iterables.addAll(actual, snap.scanner().over("r2").fetch(new Column("f1", "q2")).build()); Assert.assertEquals(expectedR2c, actual); actual.clear(); diff --git a/modules/integration/src/test/java/org/apache/fluo/integration/impl/WeakNotificationIT.java b/modules/integration/src/test/java/org/apache/fluo/integration/impl/WeakNotificationIT.java index 52803efdc..3add9b56e 100644 --- a/modules/integration/src/test/java/org/apache/fluo/integration/impl/WeakNotificationIT.java +++ b/modules/integration/src/test/java/org/apache/fluo/integration/impl/WeakNotificationIT.java @@ -44,8 +44,7 @@ public static class SimpleObserver implements Observer { @Override public void process(TransactionBase tx, Bytes row, Column col) throws Exception { - CellScanner cellScanner = - tx.scanner().over(Span.exact(row, new Column(Bytes.of("stats")))).build(); + CellScanner cellScanner = tx.scanner().over(row, new Column(Bytes.of("stats"))).build(); int sum = 0; diff --git a/modules/integration/src/test/java/org/apache/fluo/integration/impl/WorkerIT.java b/modules/integration/src/test/java/org/apache/fluo/integration/impl/WorkerIT.java index c1ea66fad..6347a243c 100644 --- a/modules/integration/src/test/java/org/apache/fluo/integration/impl/WorkerIT.java +++ b/modules/integration/src/test/java/org/apache/fluo/integration/impl/WorkerIT.java @@ -56,8 +56,7 @@ public void process(TransactionBase tx, String row, Column col) throws Exception String degree = tx.gets(row, DEGREE); // calculate new degree - String degree2 = - "" + Iterables.size(tx.scanner().over(Span.exact(row, new Column("link"))).build()); + String degree2 = "" + Iterables.size(tx.scanner().over(row, new Column("link")).build()); if (degree == null || !degree.equals(degree2)) { tx.set(row, DEGREE, degree2); diff --git a/modules/integration/src/test/java/org/apache/fluo/integration/log/LogIT.java b/modules/integration/src/test/java/org/apache/fluo/integration/log/LogIT.java index a4749f370..cca2c2141 100644 --- a/modules/integration/src/test/java/org/apache/fluo/integration/log/LogIT.java +++ b/modules/integration/src/test/java/org/apache/fluo/integration/log/LogIT.java @@ -513,10 +513,10 @@ public void testScanLogging() { CellScanner scanner1 = snap.scanner().build(); assertEqual(scanner1, rcv1, rcv2, rcv3, rcv4); - CellScanner scanner2 = snap.scanner().over(Span.exact("r1")).build(); + CellScanner scanner2 = snap.scanner().over("r1").build(); assertEqual(scanner2, rcv1, rcv2); - CellScanner scanner3 = snap.scanner().over(Span.exact("r1")).fetch(c1).build(); + CellScanner scanner3 = snap.scanner().over("r1").fetch(c1).build(); assertEqual(scanner3, rcv1); CellScanner scanner4 = snap.scanner().fetch(c1).build(); @@ -527,10 +527,10 @@ public void testScanLogging() { RowScanner rowScanner1 = snap.scanner().byRow().build(); assertEqual(rowScanner1, "r1", c1, "v1", c2, "v2", "r2", c1, "v3", c2, "v4"); - RowScanner rowScanner2 = snap.scanner().over(Span.exact("r1")).byRow().build(); + RowScanner rowScanner2 = snap.scanner().over("r1").byRow().build(); assertEqual(rowScanner2, "r1", c1, "v1", c2, "v2"); - RowScanner rowScanner3 = snap.scanner().over(Span.exact("r1")).fetch(c1).byRow().build(); + RowScanner rowScanner3 = snap.scanner().over("r1").fetch(c1).byRow().build(); assertEqual(rowScanner3, "r1", c1, "v1"); RowScanner rowScanner4 = snap.scanner().fetch(c1).byRow().build();