Skip to content

Commit

Permalink
docs: Expand hello world snippet to show how to access specific cells (
Browse files Browse the repository at this point in the history
…#516)

* samples: Expand hello world snippet to show how to access specific cells by family & qualifier

* samples: Expand hello world snippet to show how to access specific cells by family & qualifier
  • Loading branch information
dmitry-fa committed Dec 21, 2020
1 parent 4dd7638 commit a9001a8
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 16 deletions.
Expand Up @@ -12,7 +12,7 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
*/

package com.m.examples.bigtable;

Expand All @@ -29,6 +29,8 @@
import com.google.cloud.bigtable.data.v2.models.RowCell;
import com.google.cloud.bigtable.data.v2.models.RowMutation;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

// [END bigtable_hw_imports_veneer]

Expand All @@ -48,7 +50,8 @@
public class HelloWorld {

private static final String COLUMN_FAMILY = "cf1";
private static final String COLUMN_QUALIFIER = "greeting";
private static final String COLUMN_QUALIFIER_GREETING = "greeting";
private static final String COLUMN_QUALIFIER_NAME = "name";
private static final String ROW_KEY_PREFIX = "rowKey";
private final String tableId;
private final BigtableDataClient dataClient;
Expand Down Expand Up @@ -94,8 +97,13 @@ public void run() throws Exception {
createTable();
writeToTable();
readSingleRow();
readSpecificCells();
readTable();
deleteTable();
close();
}

public void close() {
dataClient.close();
adminClient.close();
}
Expand All @@ -119,13 +127,15 @@ public void writeToTable() {
// [START bigtable_hw_write_rows_veneer]
try {
System.out.println("\nWriting some greetings to the table");
String[] greetings = {"Hello World!", "Hello Bigtable!", "Hello Java!"};
for (int i = 0; i < greetings.length; i++) {
String[] names = {"World", "Bigtable", "Java"};
for (int i = 0; i < names.length; i++) {
String greeting = "Hello " + names[i] + "!";
RowMutation rowMutation =
RowMutation.create(tableId, ROW_KEY_PREFIX + i)
.setCell(COLUMN_FAMILY, COLUMN_QUALIFIER, greetings[i]);
.setCell(COLUMN_FAMILY, COLUMN_QUALIFIER_NAME, names[i])
.setCell(COLUMN_FAMILY, COLUMN_QUALIFIER_GREETING, greeting);
dataClient.mutateRow(rowMutation);
System.out.println(greetings[i]);
System.out.println(greeting);
}
} catch (NotFoundException e) {
System.err.println("Failed to write to non-existent table: " + e.getMessage());
Expand All @@ -134,7 +144,7 @@ public void writeToTable() {
}

/** Demonstrates how to read a single row from a table. */
public void readSingleRow() {
public Row readSingleRow() {
// [START bigtable_hw_get_by_key_veneer]
try {
System.out.println("\nReading a single row by row key");
Expand All @@ -145,29 +155,56 @@ public void readSingleRow() {
"Family: %s Qualifier: %s Value: %s%n",
cell.getFamily(), cell.getQualifier().toStringUtf8(), cell.getValue().toStringUtf8());
}
return row;
} catch (NotFoundException e) {
System.err.println("Failed to read from a non-existent table: " + e.getMessage());
return null;
}
// [END bigtable_hw_get_by_key_veneer]
}

/** Demonstrates how to access specific cells by family and qualifier. */
public List<RowCell> readSpecificCells() {
// [START bigtable_hw_get_by_key_veneer]
try {
System.out.println("\nReading specific cells by family and qualifier");
Row row = dataClient.readRow(tableId, ROW_KEY_PREFIX + 0);
System.out.println("Row: " + row.getKey().toStringUtf8());
List<RowCell> cells = row.getCells(COLUMN_FAMILY, COLUMN_QUALIFIER_NAME);
for (RowCell cell : cells) {
System.out.printf(
"Family: %s Qualifier: %s Value: %s%n",
cell.getFamily(), cell.getQualifier().toStringUtf8(), cell.getValue().toStringUtf8());
}
return cells;
} catch (NotFoundException e) {
System.err.println("Failed to read from a non-existent table: " + e.getMessage());
return null;
}
// [END bigtable_hw_get_by_key_veneer]
}

/** Demonstrates how to read an entire table. */
public void readTable() {
public List<Row> readTable() {
// [START bigtable_hw_scan_all_veneer]
try {
System.out.println("\nReading the entire table");
Query query = Query.create(tableId);
ServerStream<Row> rowStream = dataClient.readRows(query);
List<Row> tableRows = new ArrayList<>();
for (Row r : rowStream) {
System.out.println("Row Key: " + r.getKey().toStringUtf8());
tableRows.add(r);
for (RowCell cell : r.getCells()) {
System.out.printf(
"Family: %s Qualifier: %s Value: %s%n",
cell.getFamily(), cell.getQualifier().toStringUtf8(), cell.getValue().toStringUtf8());
}
}
return tableRows;
} catch (NotFoundException e) {
System.err.println("Failed to read a non-existent table: " + e.getMessage());
return null;
}
// [END bigtable_hw_scan_all_veneer]
}
Expand Down
Expand Up @@ -12,27 +12,27 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
*/

package com.m.examples.bigtable;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient;
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings;
import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest;
import com.google.cloud.bigtable.data.v2.BigtableDataClient;
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
import com.google.cloud.bigtable.data.v2.models.Row;
import java.io.IOException;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.AssumptionViolatedException;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
Expand Down Expand Up @@ -86,10 +86,11 @@ public void setup() throws IOException {
}

@After
public void after() {
public void teardown() {
if (adminClient.exists(tableId)) {
adminClient.deleteTable(tableId);
}
helloWorld.close();
}

@Test
Expand All @@ -103,18 +104,26 @@ public void testCreateAndDeleteTable() throws IOException {
// Deletes a table.
testHelloWorld.deleteTable();
assertTrue(!adminClient.exists(testTable));
testHelloWorld.close();
}

@Test
public void testWriteToTable() {
// Writes to a table.
assertNull(dataClient.readRow(tableId, "rowKey0"));
helloWorld.writeToTable();
Row row = dataClient.readRow(tableId, "rowKey0");
assertNotNull(row);
assertNotNull(dataClient.readRow(tableId, "rowKey0"));
}

// TODO: add test for helloWorld.readSingleRow()
// TODO: add test for helloWorld.readTable()
@Test
public void testReads() {
assertEquals(0, helloWorld.readTable().size());
helloWorld.writeToTable();

assertEquals(2, helloWorld.readSingleRow().getCells().size());
assertEquals(1, helloWorld.readSpecificCells().size());
assertEquals(3, helloWorld.readTable().size());
}

@Test
public void testRunDoesNotFail() throws Exception {
Expand Down

0 comments on commit a9001a8

Please sign in to comment.