public static String encNonAscii(RowColumnValue rcv, String sep) { StringBuilder sb = new StringBuilder(); encNonAscii(sb, rcv.getRow()); sb.append(sep); encNonAscii(sb, rcv.getColumn(), sep); sb.append(sep); encNonAscii(sb, rcv.getValue()); return sb.toString(); }
protected void printSnapshot(Consumer<String> out) throws Exception { try (Snapshot s = client.newSnapshot()) { out.accept("== snapshot start =="); for (RowColumnValue rcv : s.scanner().build()) { out.accept(rcv.getRow() + " " + rcv.getColumn() + "\t" + rcv.getValue()); } out.accept("=== snapshot end ==="); } }
private static HashMap<String, String> toMap(TestTransaction tx) throws Exception { HashMap<String, String> map = new HashMap<>(); for (RowColumnValue rcv : tx.scanner().build()) { map.put(rcv.getRow().toString(), rcv.getValue().toString()); } return map; } }
private static void scan(ScanOpts options, PrintStream out, CellScanner cellScanner) { Function<Bytes, String> encoder = getEncoder(options); if (options.exportAsJson) { generateJson(cellScanner, encoder, out); } else { for (RowColumnValue rcv : cellScanner) { out.print(encoder.apply(rcv.getRow())); out.print(' '); out.print(encoder.apply(rcv.getColumn().getFamily())); out.print(' '); out.print(encoder.apply(rcv.getColumn().getQualifier())); out.print(' '); out.print(encoder.apply(rcv.getColumn().getVisibility())); out.print("\t"); out.print(encoder.apply(rcv.getValue())); out.println(); if (out.checkError()) { break; } } } }
public FluoMutationGenerator(RowColumnValue rcv) { this(rcv.getRow()); put(rcv.getColumn(), rcv.getValue()); }
@Override public RowColumnValue next() { RowColumnValue rcv = iter.next(); txLog.filteredAdd(LogEntry.newGet(rcv.getRow(), rcv.getColumn(), rcv.getValue()), filter); return rcv; }
public FluoMutationGenerator(RowColumnValue rcv) { this(rcv.getRow()); put(rcv.getColumn(), rcv.getValue()); }
/** * Prints Fluo table accessible using provided client * * @param client Fluo client to table */ public static void printFluoTable(FluoClient client) { try (Snapshot s = client.newSnapshot()) { System.out.println("== fluo start =="); for (RowColumnValue rcv : s.scanner().build()) { StringBuilder sb = new StringBuilder(); Hex.encNonAscii(sb, rcv.getRow()); sb.append(" "); Hex.encNonAscii(sb, rcv.getColumn(), " "); sb.append("\t"); Hex.encNonAscii(sb, rcv.getValue()); System.out.println(sb.toString()); } System.out.println("=== fluo end ==="); } }
/** * Generate JSON format as result of the scan. * * @since 1.2 */ private static void generateJson(CellScanner cellScanner, Function<Bytes, String> encoder, PrintStream out) throws JsonIOException { Gson gson = new GsonBuilder().serializeNulls().setDateFormat(DateFormat.LONG) .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).setVersion(1.0) .create(); Map<String, String> json = new LinkedHashMap<>(); for (RowColumnValue rcv : cellScanner) { json.put(FLUO_ROW, encoder.apply(rcv.getRow())); json.put(FLUO_COLUMN_FAMILY, encoder.apply(rcv.getColumn().getFamily())); json.put(FLUO_COLUMN_QUALIFIER, encoder.apply(rcv.getColumn().getQualifier())); json.put(FLUO_COLUMN_VISIBILITY, encoder.apply(rcv.getColumn().getVisibility())); json.put(FLUO_VALUE, encoder.apply(rcv.getValue())); gson.toJson(json, out); out.append("\n"); if (out.checkError()) { break; } } out.flush(); }
if (options.hexEncNonAscii) { sb.setLength(0); Hex.encNonAscii(sb, rcv.getRow()); sb.append(" "); Hex.encNonAscii(sb, rcv.getColumn(), " ");
/** * Set the row, column, and value * * @return this */ public FluoKeyValueGenerator set(RowColumnValue rcv) { setRow(rcv.getRow()); setColumn(rcv.getColumn()); setValue(rcv.getValue()); return this; }
/** * Set the row, column, and value * * @return this */ public FluoKeyValueGenerator set(RowColumnValue rcv) { setRow(rcv.getRow()); setColumn(rcv.getColumn()); setValue(rcv.getValue()); return this; }
/** * Print all rows in the Fluo table for diagnostics. * </p> * Consider using {@code FluoITHelper.printFluoTable(FluoClient client)} instead. */ @Deprecated public static void printAll(final SnapshotBase sx) { final String FORMAT = "%-30s | %-10s | %-10s | %-40s\n"; System.out.println("Printing all tables. Showing unprintable bytes and braces as {ff} and {{} and {}} where ff is the value in hexadecimal."); System.out.format(FORMAT, "--Row--", "--Column Family--", "--Column Qual--", "--Value--"); final CellScanner cscanner = sx.scanner().build(); for (final RowColumnValue rcv : cscanner) { System.out.format(FORMAT, to_String(rcv.getRow()), to_String(rcv.getColumn().getFamily()), to_String(rcv.getColumn().getQualifier()), to_String(rcv.getValue())); } }
/** * Print all rows in the Fluo table for diagnostics. * </p> * Consider using {@code FluoITHelper.printFluoTable(FluoClient client)} instead. */ @Deprecated public static void printAll(final SnapshotBase sx) { final String FORMAT = "%-30s | %-10s | %-10s | %-40s\n"; System.out.println("Printing all tables. Showing unprintable bytes and braces as {ff} and {{} and {}} where ff is the value in hexadecimal."); System.out.format(FORMAT, "--Row--", "--Column Family--", "--Column Qual--", "--Value--"); final CellScanner cscanner = sx.scanner().build(); for (final RowColumnValue rcv : cscanner) { System.out.format(FORMAT, to_String(rcv.getRow()), to_String(rcv.getColumn().getFamily()), to_String(rcv.getColumn().getQualifier()), to_String(rcv.getValue())); } }
@Test public void testSame() { Set<RowColumnValue> expected = genData(); Column col1 = new Column("f1", "q1"); Column col2 = new Column("f2", "q3"); HashSet<RowColumnValue> expectedC = new HashSet<>(); Iterables.addAll(expectedC, Iterables.filter(expected, rcv -> rcv.getColumn().equals(col1) || rcv.getColumn().equals(col2))); Assert.assertEquals(3, expectedC.size()); try (Snapshot snap = client.newSnapshot()) { CellScanner scanner = snap.scanner().fetch(col1, col2).build(); HashSet<RowColumnValue> actual = new HashSet<>(); Bytes prevRow = null; for (RowColumnValue rcv : scanner) { actual.add(rcv); Column c = rcv.getColumn(); Assert.assertTrue((col1.equals(c) && col1 == c) || (col2.equals(c) && col2 == c)); if (col2.equals(c)) { Assert.assertEquals(Bytes.of("r1"), rcv.getRow()); Assert.assertSame(rcv.getRow(), prevRow); } prevRow = rcv.getRow(); } Assert.assertEquals(expectedC, actual); } }
Column col = rcv.getColumn(); boolean retval = diff("row", rcv.getRow().toString(), key.getRow().toString()); retval |= diff("fam", col.getFamily().toString(), key.getColumnFamily().toString()); retval |= diff("qual", col.getQualifier().toString(), key.getColumnQualifier().toString()); log.error("Difference found - row {} cf {} cq {} val {}", rcv.getRow().toString(), col.getFamily().toString(), col.getQualifier().toString(), rcv.getValue().toString()); return false; log.debug("Verified row {} cf {} cq {} val {}", rcv.getRow().toString(), col.getFamily().toString(), col.getQualifier().toString(), rcv.getValue().toString());
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; } }
@Override public ExportEntry next() { RowColumnValue rowColVal = rowIter.next(); Bytes row = rowColVal.getRow(); Bytes keyBytes = row.subSequence(bucketRow.length() + 1, row.length() - 8); Bytes seqBytes = row.subSequence(row.length() - 8, row.length()); ExportEntry ee = new ExportEntry(); ee.key = keyBytes.toArray(); ee.seq = decodeSeq(seqBytes); // TODO maybe leave as Bytes? ee.value = rowColVal.getValue().toArray(); lastRow = row; return ee; }