mikewalch closed pull request #19: Fixes #16 - Refactored examples in client.md
URL: https://github.com/apache/accumulo-examples/pull/19
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/docs/client.md b/docs/client.md
index af02efe..836a2f8 100644
--- a/docs/client.md
+++ b/docs/client.md
@@ -18,58 +18,51 @@ limitations under the License.
 
 The following Java classes are examples of the Accumulo client API:
 
- * [Flush.java] - flushes a table
  * [RowOperations.java] - reads and writes rows
  * [ReadWriteExample.java] - creates a table, writes to it, and reads from it
 
-The Flush class will flush a table:
+[RowOperations.java] demonstrates how to read, write and delete rows using the 
BatchWriter and Scanner:
 
-    $ ./bin/runex client.Flush -c ./examples.conf -t trace
-
-The RowOperations class demonstrates how to read and write rows using the 
BatchWriter and Scanner:
-
-    $ ./bin/runex client.RowOperations -c ./examples.conf
-    2013-01-14 14:45:24,738 [client.RowOperations] INFO : This is everything
-    2013-01-14 14:45:24,744 [client.RowOperations] INFO : Key: row1 column:1 
[] 1358192724640 false Value: This is the value for this key
-    2013-01-14 14:45:24,744 [client.RowOperations] INFO : Key: row1 column:2 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,744 [client.RowOperations] INFO : Key: row1 column:3 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,744 [client.RowOperations] INFO : Key: row1 column:4 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,746 [client.RowOperations] INFO : Key: row2 column:1 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,746 [client.RowOperations] INFO : Key: row2 column:2 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,746 [client.RowOperations] INFO : Key: row2 column:3 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,746 [client.RowOperations] INFO : Key: row2 column:4 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,747 [client.RowOperations] INFO : Key: row3 column:1 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,747 [client.RowOperations] INFO : Key: row3 column:2 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,747 [client.RowOperations] INFO : Key: row3 column:3 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,747 [client.RowOperations] INFO : Key: row3 column:4 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,756 [client.RowOperations] INFO : This is row1 and row3
-    2013-01-14 14:45:24,757 [client.RowOperations] INFO : Key: row1 column:1 
[] 1358192724640 false Value: This is the value for this key
-    2013-01-14 14:45:24,757 [client.RowOperations] INFO : Key: row1 column:2 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,757 [client.RowOperations] INFO : Key: row1 column:3 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,757 [client.RowOperations] INFO : Key: row1 column:4 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,761 [client.RowOperations] INFO : Key: row3 column:1 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,761 [client.RowOperations] INFO : Key: row3 column:2 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,761 [client.RowOperations] INFO : Key: row3 column:3 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,761 [client.RowOperations] INFO : Key: row3 column:4 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,765 [client.RowOperations] INFO : This is just row3
-    2013-01-14 14:45:24,769 [client.RowOperations] INFO : Key: row3 column:1 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,770 [client.RowOperations] INFO : Key: row3 column:2 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,770 [client.RowOperations] INFO : Key: row3 column:3 
[] 1358192724642 false Value: This is the value for this key
-    2013-01-14 14:45:24,770 [client.RowOperations] INFO : Key: row3 column:4 
[] 1358192724642 false Value: This is the value for this key
+    $ ./bin/runex client.RowOperations
+    [examples.client.RowOperations] INFO : This is only row2
+    [examples.client.RowOperations] INFO : Key: row2 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row2 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row2 col:3 [] 1523301597006 
false Value: v3
+    [examples.client.RowOperations] INFO : This is everything
+    [examples.client.RowOperations] INFO : Key: row1 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row1 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row1 col:3 [] 1523301597006 
false Value: v3
+    [examples.client.RowOperations] INFO : Key: row2 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row2 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row2 col:3 [] 1523301597006 
false Value: v3
+    [examples.client.RowOperations] INFO : Key: row3 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row3 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row3 col:3 [] 1523301597006 
false Value: v3
+    [examples.client.RowOperations] INFO : This is row1 and row3
+    [examples.client.RowOperations] INFO : Key: row1 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row1 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row1 col:3 [] 1523301597006 
false Value: v3
+    [examples.client.RowOperations] INFO : Key: row3 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row3 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row3 col:3 [] 1523301597006 
false Value: v3
+    [examples.client.RowOperations] INFO : This is just row3
+    [examples.client.RowOperations] INFO : Key: row3 col:1 [] 1523301597006 
false Value: v1
+    [examples.client.RowOperations] INFO : Key: row3 col:2 [] 1523301597006 
false Value: v2
+    [examples.client.RowOperations] INFO : Key: row3 col:3 [] 1523301597006 
false Value: v3
 
 To create a table, write to it and read from it:
 
-    $ ./bin/runex client.ReadWriteExample -c ./examples.conf --createtable 
--create --read
-    hello%00; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%01; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%02; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%03; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%04; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%05; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%06; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%07; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%08; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
-    hello%09; datatypes:xml [LEVEL1|GROUP1] 1358192329450 false -> world
+    $ ./bin/runex client.ReadWriteExample
+    [examples.client.ReadWriteExample] INFO : hello0 cf:cq [] 1523306675130 
false -> world0
+    [examples.client.ReadWriteExample] INFO : hello1 cf:cq [] 1523306675130 
false -> world1
+    [examples.client.ReadWriteExample] INFO : hello2 cf:cq [] 1523306675130 
false -> world2
+    [examples.client.ReadWriteExample] INFO : hello3 cf:cq [] 1523306675130 
false -> world3
+    [examples.client.ReadWriteExample] INFO : hello4 cf:cq [] 1523306675130 
false -> world4
+    [examples.client.ReadWriteExample] INFO : hello5 cf:cq [] 1523306675130 
false -> world5
+    [examples.client.ReadWriteExample] INFO : hello6 cf:cq [] 1523306675130 
false -> world6
+    [examples.client.ReadWriteExample] INFO : hello7 cf:cq [] 1523306675130 
false -> world7
+    [examples.client.ReadWriteExample] INFO : hello8 cf:cq [] 1523306675130 
false -> world8
+    [examples.client.ReadWriteExample] INFO : hello9 cf:cq [] 1523306675130 
false -> world9
 
 [Flush.java]: ../src/main/java/org/apache/accumulo/examples/client/Flush.java
 [RowOperations.java]: 
../src/main/java/org/apache/accumulo/examples/client/RowOperations.java
diff --git 
a/src/main/java/org/apache/accumulo/examples/client/ReadWriteExample.java 
b/src/main/java/org/apache/accumulo/examples/client/ReadWriteExample.java
index d4cfe19..0fcb4ce 100644
--- a/src/main/java/org/apache/accumulo/examples/client/ReadWriteExample.java
+++ b/src/main/java/org/apache/accumulo/examples/client/ReadWriteExample.java
@@ -17,135 +17,57 @@
 package org.apache.accumulo.examples.client;
 
 import java.util.Map.Entry;
-import java.util.SortedSet;
-import java.util.TreeSet;
 
 import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.BatchWriterConfig;
 import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Durability;
+import org.apache.accumulo.core.client.NamespaceExistsException;
 import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.impl.DurabilityImpl;
+import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.core.security.ColumnVisibility;
-import org.apache.accumulo.core.util.ByteArraySet;
-import org.apache.accumulo.examples.cli.ClientOnDefaultTable;
-import org.apache.accumulo.examples.cli.ScannerOpts;
-import org.apache.hadoop.io.Text;
-
-import com.beust.jcommander.IStringConverter;
-import com.beust.jcommander.Parameter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ReadWriteExample {
-  // defaults
-  private static final String DEFAULT_AUTHS = "LEVEL1,GROUP1";
-  private static final String DEFAULT_TABLE_NAME = "test";
-
-  private Connector conn;
-
-  static class DurabilityConverter implements IStringConverter<Durability> {
-    @Override
-    public Durability convert(String value) {
-      return DurabilityImpl.fromString(value);
-    }
-  }
-
-  static class Opts extends ClientOnDefaultTable {
-    @Parameter(names = {"--createtable"}, description = "create table before 
doing anything")
-    boolean createtable = false;
-    @Parameter(names = {"--deletetable"}, description = "delete table when 
finished")
-    boolean deletetable = false;
-    @Parameter(names = {"--create"}, description = "create entries before any 
deletes")
-    boolean createEntries = false;
-    @Parameter(names = {"--read"}, description = "read entries after any 
creates/deletes")
-    boolean readEntries = false;
-    @Parameter(names = {"--delete"}, description = "delete entries after any 
creates")
-    boolean deleteEntries = false;
-    @Parameter(names = {"--durability"}, description = "durability used for 
writes (none, log, flush or sync)", converter = DurabilityConverter.class)
-    Durability durability = Durability.DEFAULT;
 
-    public Opts() {
-      super(DEFAULT_TABLE_NAME);
-      auths = new Authorizations(DEFAULT_AUTHS.split(","));
-    }
-  }
-
-  // hidden constructor
-  private ReadWriteExample() {}
+  private static final Logger log = 
LoggerFactory.getLogger(ReadWriteExample.class);
+  private static final String namespace = "examples";
+  private static final String table = namespace + ".readwrite";
 
-  private void execute(Opts opts, ScannerOpts scanOpts) throws Exception {
-    conn = opts.getConnector();
+  public static void main(String[] args) throws Exception {
 
-    // add the authorizations to the user
-    Authorizations userAuthorizations = 
conn.securityOperations().getUserAuthorizations(opts.getPrincipal());
-    ByteArraySet auths = new 
ByteArraySet(userAuthorizations.getAuthorizations());
-    auths.addAll(opts.auths.getAuthorizations());
-    if (!auths.isEmpty())
-      conn.securityOperations().changeUserAuthorizations(opts.getPrincipal(), 
new Authorizations(auths));
+    Connector connector = 
Connector.builder().usingProperties("conf/accumulo-client.properties").build();
 
-    // create table
-    if (opts.createtable) {
-      SortedSet<Text> partitionKeys = new TreeSet<>();
-      for (int i = Byte.MIN_VALUE; i < Byte.MAX_VALUE; i++)
-        partitionKeys.add(new Text(new byte[] {(byte) i}));
-      conn.tableOperations().create(opts.getTableName());
-      conn.tableOperations().addSplits(opts.getTableName(), partitionKeys);
+    try {
+      connector.namespaceOperations().create(namespace);
+    } catch (NamespaceExistsException e) {
+      // ignore
     }
-
-    // send mutations
-    createEntries(opts);
-
-    // read entries
-    if (opts.readEntries) {
-      // Note that the user needs to have the authorizations for the specified 
scan authorizations
-      // by an administrator first
-      Scanner scanner = conn.createScanner(opts.getTableName(), opts.auths);
-      scanner.setBatchSize(scanOpts.scanBatchSize);
-      for (Entry<Key,Value> entry : scanner)
-        System.out.println(entry.getKey().toString() + " -> " + 
entry.getValue().toString());
+    try {
+      connector.tableOperations().create(table);
+    } catch (TableExistsException e) {
+      // ignore
     }
 
-    // delete table
-    if (opts.deletetable)
-      conn.tableOperations().delete(opts.getTableName());
-  }
-
-  private void createEntries(Opts opts) throws Exception {
-    if (opts.createEntries || opts.deleteEntries) {
-      BatchWriterConfig cfg = new BatchWriterConfig();
-      cfg.setDurability(opts.durability);
-      BatchWriter writer = conn.createBatchWriter(opts.getTableName(), cfg);
-      ColumnVisibility cv = new 
ColumnVisibility(opts.auths.toString().replace(',', '|'));
-
-      Text cf = new Text("datatypes");
-      Text cq = new Text("xml");
-      byte[] row = {'h', 'e', 'l', 'l', 'o', '\0'};
-      byte[] value = {'w', 'o', 'r', 'l', 'd', '\0'};
-
+    // write data
+    try (BatchWriter writer = connector.createBatchWriter(table)) {
       for (int i = 0; i < 10; i++) {
-        row[row.length - 1] = (byte) i;
-        Mutation m = new Mutation(new Text(row));
-        if (opts.deleteEntries) {
-          m.putDelete(cf, cq, cv);
-        }
-        if (opts.createEntries) {
-          value[value.length - 1] = (byte) i;
-          m.put(cf, cq, cv, new Value(value));
-        }
+        Mutation m = new Mutation("hello" + i);
+        m.put("cf", "cq", new Value("world" + i));
         writer.addMutation(m);
       }
-      writer.close();
     }
-  }
 
-  public static void main(String[] args) throws Exception {
-    ReadWriteExample rwe = new ReadWriteExample();
-    Opts opts = new Opts();
-    ScannerOpts scanOpts = new ScannerOpts();
-    opts.parseArgs(ReadWriteExample.class.getName(), args, scanOpts);
-    rwe.execute(opts, scanOpts);
+    // read data
+    try (Scanner scanner = connector.createScanner(table, 
Authorizations.EMPTY)) {
+      for (Entry<Key, Value> entry : scanner) {
+        log.info(entry.getKey().toString() + " -> " + 
entry.getValue().toString());
+      }
+    }
+
+    // delete table
+    connector.tableOperations().delete(table);
   }
 }
diff --git 
a/src/main/java/org/apache/accumulo/examples/client/RowOperations.java 
b/src/main/java/org/apache/accumulo/examples/client/RowOperations.java
index b535d4c..7787c13 100644
--- a/src/main/java/org/apache/accumulo/examples/client/RowOperations.java
+++ b/src/main/java/org/apache/accumulo/examples/client/RowOperations.java
@@ -16,8 +16,6 @@
  */
 package org.apache.accumulo.examples.client;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 import java.util.Map.Entry;
 
 import org.apache.accumulo.core.client.AccumuloException;
@@ -25,6 +23,7 @@
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.MutationsRejectedException;
+import org.apache.accumulo.core.client.NamespaceExistsException;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
@@ -33,10 +32,6 @@
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.examples.cli.BatchWriterOpts;
-import org.apache.accumulo.examples.cli.ClientOpts;
-import org.apache.accumulo.examples.cli.ScannerOpts;
-import org.apache.hadoop.io.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,170 +41,96 @@
 public class RowOperations {
 
   private static final Logger log = 
LoggerFactory.getLogger(RowOperations.class);
+  private static final String namespace = "examples";
+  private static final String table = namespace + ".rowops";
+
+  private static void printAll(Connector connector) throws 
TableNotFoundException {
+    try (Scanner scanner = connector.createScanner("rowops", 
Authorizations.EMPTY)) {
+      for (Entry<Key,Value> entry : scanner) {
+        log.info("Key: " + entry.getKey().toString() + " Value: " + 
entry.getValue().toString());
+      }
+    }
+  }
 
-  private static Connector connector;
-  private static String tableName = "example";
-  private static BatchWriter bw;
-
-  public static void main(String[] args) throws AccumuloException, 
AccumuloSecurityException, TableExistsException, TableNotFoundException,
-      MutationsRejectedException {
-
-    ClientOpts opts = new ClientOpts();
-    ScannerOpts scanOpts = new ScannerOpts();
-    BatchWriterOpts bwOpts = new BatchWriterOpts();
-    opts.parseArgs(RowOperations.class.getName(), args, scanOpts, bwOpts);
+  private static void printRow(String row, Connector connector) throws 
TableNotFoundException {
+    try (Scanner scanner = connector.createScanner("rowops", 
Authorizations.EMPTY)) {
+      scanner.setRange(Range.exact(row));
+      for (Entry<Key,Value> entry : scanner) {
+        log.info("Key: " + entry.getKey().toString() + " Value: " + 
entry.getValue().toString());
+      }
+    }
+  }
 
-    // First the setup work
-    connector = opts.getConnector();
+  private static void deleteRow(String row, Connector connector, BatchWriter 
bw) throws MutationsRejectedException, TableNotFoundException {
+    Mutation mut = new Mutation(row);
+    try (Scanner scanner = connector.createScanner("rowops", 
Authorizations.EMPTY)) {
+      scanner.setRange(Range.exact(row));
+      for (Entry<Key,Value> entry : scanner) {
+        mut.putDelete(entry.getKey().getColumnFamily(), 
entry.getKey().getColumnQualifier());
+      }
+    }
+    bw.addMutation(mut);
+    bw.flush();
+  }
 
-    // lets create an example table
-    connector.tableOperations().create(tableName);
+  public static void main(String[] args) throws AccumuloException, 
AccumuloSecurityException, TableNotFoundException {
+    Connector connector = 
Connector.builder().usingProperties("conf/accumulo-client.properties").build();
+    try {
+      connector.namespaceOperations().create(namespace);
+    } catch (NamespaceExistsException e) {
+      // ignore
+    }
+    try {
+      connector.tableOperations().create(table);
+    } catch (TableExistsException e) {
+      // ignore
+    }
 
     // lets create 3 rows of information
-    Text row1 = new Text("row1");
-    Text row2 = new Text("row2");
-    Text row3 = new Text("row3");
-
-    // Which means 3 different mutations
-    Mutation mut1 = new Mutation(row1);
-    Mutation mut2 = new Mutation(row2);
-    Mutation mut3 = new Mutation(row3);
-
-    // And we'll put 4 columns in each row
-    Text col1 = new Text("1");
-    Text col2 = new Text("2");
-    Text col3 = new Text("3");
-    Text col4 = new Text("4");
-
-    // Now we'll add them to the mutations
-    mut1.put(new Text("column"), col1, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut1.put(new Text("column"), col2, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut1.put(new Text("column"), col3, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut1.put(new Text("column"), col4, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-
-    mut2.put(new Text("column"), col1, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut2.put(new Text("column"), col2, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut2.put(new Text("column"), col3, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut2.put(new Text("column"), col4, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-
-    mut3.put(new Text("column"), col1, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut3.put(new Text("column"), col2, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut3.put(new Text("column"), col3, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
-    mut3.put(new Text("column"), col4, System.currentTimeMillis(), new 
Value("This is the value for this key".getBytes(UTF_8)));
+    Mutation mut1 = new Mutation("row1");
+    Mutation mut2 = new Mutation("row2");
+    Mutation mut3 = new Mutation("row3");
 
-    // Now we'll make a Batch Writer
-    bw = connector.createBatchWriter(tableName, bwOpts.getBatchWriterConfig());
+    mut1.put("col", "1", "v1");
+    mut1.put("col", "2", "v2");
+    mut1.put("col", "3", "v3");
 
-    // And add the mutations
-    bw.addMutation(mut1);
-    bw.addMutation(mut2);
-    bw.addMutation(mut3);
+    mut2.put("col", "1", "v1");
+    mut2.put("col", "2", "v2");
+    mut2.put("col", "3", "v3");
 
-    // Force a send
-    bw.flush();
-
-    // Now lets look at the rows
-    Scanner rowThree = getRow(scanOpts, new Text("row3"));
-    Scanner rowTwo = getRow(scanOpts, new Text("row2"));
-    Scanner rowOne = getRow(scanOpts, new Text("row1"));
-
-    // And print them
-    log.info("This is everything");
-    printRow(rowOne);
-    printRow(rowTwo);
-    printRow(rowThree);
-    System.out.flush();
-
-    // Now lets delete rowTwo with the iterator
-    rowTwo = getRow(scanOpts, new Text("row2"));
-    deleteRow(rowTwo);
-
-    // Now lets look at the rows again
-    rowThree = getRow(scanOpts, new Text("row3"));
-    rowTwo = getRow(scanOpts, new Text("row2"));
-    rowOne = getRow(scanOpts, new Text("row1"));
-
-    // And print them
-    log.info("This is row1 and row3");
-    printRow(rowOne);
-    printRow(rowTwo);
-    printRow(rowThree);
-    System.out.flush();
-
-    // Should only see the two rows
-    // Now lets delete rowOne without passing in the iterator
-
-    deleteRow(scanOpts, row1);
-
-    // Now lets look at the rows one last time
-    rowThree = getRow(scanOpts, new Text("row3"));
-    rowTwo = getRow(scanOpts, new Text("row2"));
-    rowOne = getRow(scanOpts, new Text("row1"));
-
-    // And print them
-    log.info("This is just row3");
-    printRow(rowOne);
-    printRow(rowTwo);
-    printRow(rowThree);
-    System.out.flush();
+    mut3.put("col", "1", "v1");
+    mut3.put("col", "2", "v2");
+    mut3.put("col", "3", "v3");
 
-    // Should only see rowThree
+    // Now we'll make a Batch Writer
+    try (BatchWriter bw = connector.createBatchWriter(table)) {
 
-    // Always close your batchwriter
+      // And add the mutations
+      bw.addMutation(mut1);
+      bw.addMutation(mut2);
+      bw.addMutation(mut3);
 
-    bw.close();
+      // Force a send
+      bw.flush();
 
-    // and lets clean up our mess
-    connector.tableOperations().delete(tableName);
+      log.info("This is only row2");
+      printRow("row2", connector);
 
-    // fin~
+      log.info("This is everything");
+      printAll(connector);
 
-  }
+      deleteRow("row2", connector, bw);
 
-  /**
-   * Deletes a row given a text object
-   */
-  private static void deleteRow(ScannerOpts scanOpts, Text row) throws 
AccumuloException, AccumuloSecurityException, TableNotFoundException {
-    deleteRow(getRow(scanOpts, row));
-  }
+      log.info("This is row1 and row3");
+      printAll(connector);
 
-  /**
-   * Deletes a row, given a Scanner of JUST that row
-   */
-  private static void deleteRow(Scanner scanner) throws 
MutationsRejectedException {
-    Mutation deleter = null;
-    // iterate through the keys
-    for (Entry<Key,Value> entry : scanner) {
-      // create a mutation for the row
-      if (deleter == null)
-        deleter = new Mutation(entry.getKey().getRow());
-      // the remove function adds the key with the delete flag set to true
-      deleter.putDelete(entry.getKey().getColumnFamily(), 
entry.getKey().getColumnQualifier());
-    }
-    bw.addMutation(deleter);
-    bw.flush();
-  }
+      deleteRow("row1", connector, bw);
+   }
 
-  /**
-   * Just a generic print function given an iterator. Not necessarily just for 
printing a single row
-   */
-  private static void printRow(Scanner scanner) {
-    // iterates through and prints
-    for (Entry<Key,Value> entry : scanner)
-      log.info("Key: " + entry.getKey().toString() + " Value: " + 
entry.getValue().toString());
-  }
+    log.info("This is just row3");
+    printAll(connector);
 
-  /**
-   * Gets a scanner over one row
-   */
-  private static Scanner getRow(ScannerOpts scanOpts, Text row) throws 
AccumuloException, AccumuloSecurityException, TableNotFoundException {
-    // Create a scanner
-    Scanner scanner = connector.createScanner(tableName, Authorizations.EMPTY);
-    scanner.setBatchSize(scanOpts.scanBatchSize);
-    // Say start key is the one with key of row
-    // and end key is the one that immediately follows the row
-    scanner.setRange(new Range(row));
-    return scanner;
+    connector.tableOperations().delete(table);
   }
-
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to