@Override public Iterator<RowColumnValue> iterator() { Iterator<RowColumnValue> iter = Iterators.transform(scanner.iterator(), entry -> { Notification n = Notification.from(entry.getKey()); return new RowColumnValue(n.getRow(), n.getColumn(), Bytes.of(entry.getValue().get())); }); return Iterators.filter(iter, rcv -> filter.test(rcv)); } }
/** * A helper method for parsing test data. Each string passed in is split using the specified * splitter into four fields for row, family, qualifier, and value. */ public static List<RowColumnValue> parse(Splitter splitter, String... data) { ArrayList<RowColumnValue> ret = new ArrayList<>(); for (String line : data) { Iterable<String> cols = splitter.split(line); if (Iterables.size(cols) != 4) { throw new IllegalArgumentException("Bad input " + line); } Iterator<String> iter = cols.iterator(); RowColumnValue rcv = new RowColumnValue(Bytes.of(iter.next()), new Column(iter.next(), iter.next()), Bytes.of(iter.next())); ret.add(rcv); } return ret; } }
private RowColumnValue entry2rcv(Entry<Key, Value> entry) { ByteSequence rowBS = entry.getKey().getRowData(); Bytes row; if (prevRowBs.equals(rowBS)) { row = prevRowBytes; } else { prevRowBs = rowBS; prevRowBytes = row = ByteUtil.toBytes(rowBS); } Column col = columnConverter.apply(entry.getKey()); Bytes val = Bytes.of(entry.getValue().get()); return new RowColumnValue(row, col, val); }
private RowColumnValue entry2rcv(Entry<Key, Value> entry) { ByteSequence rowBS = entry.getKey().getRowData(); Bytes row; if (prevRowBs.equals(rowBS)) { row = prevRowBytes; } else { prevRowBs = rowBS; prevRowBytes = row = ByteUtil.toBytes(rowBS); } Column col = columnConverter.apply(entry.getKey()); Bytes val = Bytes.of(entry.getValue().get()); return new RowColumnValue(row, col, val); }
private Set<RowColumnValue> genData() { Set<RowColumnValue> expected = new HashSet<>(); expected.add(new RowColumnValue("r1", new Column("f1", "q1"), "v1")); expected.add(new RowColumnValue("r1", new Column("f2", "q3"), "v2")); expected.add(new RowColumnValue("r2", new Column("f1", "q1"), "v3")); expected.add(new RowColumnValue("r2", new Column("f1", "q2"), "v4")); expected.add(new RowColumnValue("r4", new Column("f2", "q5"), "v5")); Assert.assertEquals(5, expected.size()); try (Transaction tx = client.newTransaction()) { for (RowColumnValue rcv : expected) { tx.set(rcv.getRow(), rcv.getColumn(), rcv.getValue()); } tx.commit(); } return expected; } }
@Test public void testMultipleIteratorsFromSameRowScanner() { Set<RowColumnValue> expected = genData(); try (Snapshot snap = client.newSnapshot()) { RowScanner rowScanner = snap.scanner().byRow().build(); Iterator<ColumnScanner> iter1 = rowScanner.iterator(); Iterator<ColumnScanner> iter2 = rowScanner.iterator(); HashSet<RowColumnValue> actual1 = new HashSet<>(); HashSet<RowColumnValue> actual2 = new HashSet<>(); while (iter1.hasNext()) { ColumnScanner cs1 = iter1.next(); Assert.assertTrue(iter2.hasNext()); ColumnScanner cs2 = iter2.next(); for (ColumnValue cv : cs1) { actual1.add(new RowColumnValue(cs1.getRow(), cv.getColumn(), cv.getValue())); } for (ColumnValue cv : cs2) { actual2.add(new RowColumnValue(cs2.getRow(), cv.getColumn(), cv.getValue())); } } Assert.assertFalse(iter2.hasNext()); Assert.assertEquals(expected, actual1); Assert.assertEquals(expected, actual2); } }
public RowColumnValue convert(K key, V val) { byte[] k = serializer.serialize(key); int hash = Hashing.murmur3_32().hashBytes(k).asInt(); String bucketId = CombineQueueImpl.genBucketId(Math.abs(hash % numBuckets), numBuckets); BytesBuilder bb = Bytes.builder(dataPrefix.length() + bucketId.length() + 1 + k.length); Bytes row = bb.append(dataPrefix).append(bucketId).append(':').append(k).toBytes(); byte[] v = serializer.serialize(val); return new RowColumnValue(row, CombineQueueImpl.DATA_COLUMN, Bytes.of(v)); } }
RowColumnValue rcv1 = new RowColumnValue("r1", c1, "v1"); RowColumnValue rcv2 = new RowColumnValue("r1", c2, "v2"); RowColumnValue rcv3 = new RowColumnValue("r2", c1, "v3"); RowColumnValue rcv4 = new RowColumnValue("r2", c2, "v4");