You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2018/06/21 05:51:07 UTC
[16/31] metamodel git commit: HBase improvements (when creating a
HBase table, the ID-column is not a required parameter,
because that's always created).
HBase improvements (when creating a HBase table, the ID-column is not a required parameter, because that's always created).
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/f4d2c97a
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/f4d2c97a
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/f4d2c97a
Branch: refs/heads/master
Commit: f4d2c97ad3a7fa41934251e6fd727639ed1bd300
Parents: cd755a1
Author: Gerard Dellemann <g....@quadient.com>
Authored: Thu May 31 16:30:20 2018 +0200
Committer: Gerard Dellemann <g....@quadient.com>
Committed: Thu May 31 16:30:20 2018 +0200
----------------------------------------------------------------------
.../hbase/HBaseCreateTableBuilder.java | 26 ++--------
.../apache/metamodel/hbase/CreateTableTest.java | 52 ++++++++++----------
.../hbase/HBaseUpdateCallbackTest.java | 13 +++--
3 files changed, 40 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f4d2c97a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java
----------------------------------------------------------------------
diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java
index 138e32b..db4463b 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseCreateTableBuilder.java
@@ -18,7 +18,6 @@
*/
package org.apache.metamodel.hbase;
-import java.util.Iterator;
import java.util.Set;
import org.apache.metamodel.MetaModelException;
@@ -58,7 +57,9 @@ public class HBaseCreateTableBuilder extends AbstractTableCreationBuilder<HBaseU
@Override
public Table execute() {
- checkColumnFamilies(_columnFamilies);
+ if (_columnFamilies == null || _columnFamilies.size() == 0) {
+ throw new MetaModelException("Creating a table without columnFamilies");
+ }
final Table table = getTable();
@@ -71,27 +72,6 @@ public class HBaseCreateTableBuilder extends AbstractTableCreationBuilder<HBaseU
}
/**
- * Check if the new table has columnFamilies and if the ID-column is included.
- * Throws a {@link MetaModelException} if a check fails.
- * @param columnFamilies
- */
- private void checkColumnFamilies(Set<String> columnFamilies) {
- if (columnFamilies == null || columnFamilies.size() == 0) {
- throw new MetaModelException("Creating a table without columnFamilies");
- }
- boolean idColumnFound = false;
- final Iterator<String> iterator = columnFamilies.iterator();
- while (!idColumnFound && iterator.hasNext()) {
- if (iterator.next().equals(HBaseDataContext.FIELD_ID)) {
- idColumnFound = true;
- }
- }
- if (!idColumnFound) {
- throw new MetaModelException("ColumnFamily: " + HBaseDataContext.FIELD_ID + " not found");
- }
- }
-
- /**
* Set the columnFamilies
* @param columnFamilies
*/
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f4d2c97a/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java
----------------------------------------------------------------------
diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java
index 789b4bd..6c39acd 100644
--- a/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java
+++ b/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.metamodel.hbase;
+import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -32,7 +33,7 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
/**
* Check if creating table is supported
*/
- public void testDropTableSupported() {
+ public void testCreateTableSupported() {
if (isConfigured()) {
assertTrue(getUpdateCallback().isCreateTableSupported());
} else {
@@ -112,30 +113,6 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
}
/**
- * Create a table without the ID-Column, should throw a MetaModelException
- */
- public void testCreateTableWithoutIDColumn() {
- if (isConfigured()) {
- final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
- final LinkedHashMap<HBaseColumn, Object> row = createRow(table, null, CF_FOO, CF_BAR);
- final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromRow(row));
- try {
- final HBaseCreateTableBuilder hBaseCreateTableBuilder = (HBaseCreateTableBuilder) getUpdateCallback()
- .createTable(getSchema(), TABLE_NAME);
-
- hBaseCreateTableBuilder.setColumnFamilies(columnFamilies);
- hBaseCreateTableBuilder.execute();
- fail("Should get an exception that the ID-colum is missing");
- } catch (MetaModelException e) {
- assertEquals("ColumnFamily: " + HBaseDataContext.FIELD_ID + " not found", e.getMessage());
- }
- } else {
- warnAboutANotExecutedTest(getClass().getName(), new Object() {
- }.getClass().getEnclosingMethod().getName());
- }
- }
-
- /**
* Creating a HBaseClient with the tableName null, should throw a exception
*/
public void testCreatingTheHBaseClientWithTableNameNull() {
@@ -190,6 +167,31 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
}
/**
+ * Goodflow. Create a table without the ID-Column, should work
+ * @throws IOException
+ */
+ public void testCreateTableWithoutIDColumn() throws IOException {
+ if (isConfigured()) {
+ final HBaseTable table = createHBaseTable(TABLE_NAME, null, CF_FOO, CF_BAR, null);
+ final LinkedHashMap<HBaseColumn, Object> row = createRow(table, null, CF_FOO, CF_BAR);
+ final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromRow(row));
+ try {
+ final HBaseCreateTableBuilder hBaseCreateTableBuilder = (HBaseCreateTableBuilder) getUpdateCallback()
+ .createTable(getSchema(), TABLE_NAME);
+
+ hBaseCreateTableBuilder.setColumnFamilies(columnFamilies);
+ hBaseCreateTableBuilder.execute();
+ checkSuccesfullyInsertedTable();
+ } catch (Exception e) {
+ fail("Should not get an exception (that the ID-column is missing)");
+ }
+ } else {
+ warnAboutANotExecutedTest(getClass().getName(), new Object() {
+ }.getClass().getEnclosingMethod().getName());
+ }
+ }
+
+ /**
* Goodflow. Create a table including the ID-Column (columnFamilies not in constructor), should work
*/
public void testSettingColumnFamiliesAfterConstrutor() {
http://git-wip-us.apache.org/repos/asf/metamodel/blob/f4d2c97a/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java
----------------------------------------------------------------------
diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java
index 5085689..a30b7f2 100644
--- a/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java
+++ b/hbase/src/test/java/org/apache/metamodel/hbase/HBaseUpdateCallbackTest.java
@@ -126,7 +126,7 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase {
/**
* Create a test HBase table
* @param tableName name of the table
- * @param idColumn required ID-column
+ * @param idColumn ID-column, can be set to null to create a table without this column
* @param columnFamily1 required columnFamily 1
* @param columnFamily2 required columnFamily 2
* @param columnFamily3 columnFamily 3 is not required and can be used to test errors
@@ -136,9 +136,16 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase {
final String columnFamily2, final String columnFamily3) {
String[] columnNames;
ColumnType[] columnTypes;
- if (columnFamily3 == null) {
+
+ if (idColumn == null && columnFamily3 == null) {
+ columnNames = new String[] { columnFamily1, columnFamily2 };
+ columnTypes = new ColumnType[] { ColumnType.STRING, ColumnType.STRING };
+ } else if (idColumn != null && columnFamily3 == null) {
columnNames = new String[] { idColumn, columnFamily1, columnFamily2 };
columnTypes = new ColumnType[] { ColumnType.STRING, ColumnType.STRING, ColumnType.STRING };
+ } else if (idColumn == null && columnFamily3 != null) {
+ columnNames = new String[] { columnFamily1, columnFamily2, columnFamily3 };
+ columnTypes = new ColumnType[] { ColumnType.STRING, ColumnType.STRING, ColumnType.STRING };
} else {
columnNames = new String[] { idColumn, columnFamily1, columnFamily2, columnFamily3 };
columnTypes = new ColumnType[] { ColumnType.STRING, ColumnType.STRING, ColumnType.STRING,
@@ -151,7 +158,7 @@ public abstract class HBaseUpdateCallbackTest extends HBaseTestCase {
/**
* Creates a map that represents a row
* @param table HBaseTable
- * @param idColumn required ID-column
+ * @param idColumn ID-column, can be set to null to create a row without this column
* @param columnFamily1 required columnFamily 1
* @param columnFamily2 required columnFamily 1
* @return {@link LinkedHashMap}<{@link HBaseColumn}, {@link Object}>