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:04 UTC
[13/31] metamodel git commit: - Where missing added final qualifiers
to method parameters. - Moved static methods around to more logic locations.
From my point of view the HBaseColumn class is not a Helper class to provide
those. - Changed the signature
- Where missing added final qualifiers to method parameters.
- Moved static methods around to more logic locations. From my point of view the HBaseColumn class is not a Helper class to provide those.
- Changed the signature of the HBaseRowInsertionBuilder constructor, so it take a List of HBaseColumn object as a parameter, this makes it possible to remove a few of the Helper methods which cast List<HBaseColumn> to List<Column> and vice versa.
- Refactored the logic which looks up the id column in an array or list.
- Removed the "public" getHBaseColumnsInternal() method from HBaseTable, which essentially was only invoked in combination with a static getColumnFamilies method. Instead I added a getColumnFamilies() method to the HBaseTable class which return the column families for that HBase table.
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/5a28d73c
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/5a28d73c
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/5a28d73c
Branch: refs/heads/master
Commit: 5a28d73cdddfc8b11ca2478e390c8c94bcf34310
Parents: 54a900b
Author: Arjan Seijkens <a....@quadient.com>
Authored: Thu May 31 10:38:13 2018 +0200
Committer: Arjan Seijkens <a....@quadient.com>
Committed: Thu May 31 10:38:13 2018 +0200
----------------------------------------------------------------------
.../org/apache/metamodel/hbase/HBaseColumn.java | 108 -------------------
.../hbase/HBaseRowInsertionBuilder.java | 79 +++++++++++---
.../org/apache/metamodel/hbase/HBaseTable.java | 76 +++++++------
.../metamodel/hbase/HBaseUpdateCallback.java | 17 +--
.../apache/metamodel/hbase/CreateTableTest.java | 18 +++-
.../apache/metamodel/hbase/InsertRowTest.java | 22 ++--
6 files changed, 144 insertions(+), 176 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/5a28d73c/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java
----------------------------------------------------------------------
diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java
index d6554c4..4470e10 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseColumn.java
@@ -18,14 +18,6 @@
*/
package org.apache.metamodel.hbase;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.ColumnType;
import org.apache.metamodel.schema.ColumnTypeImpl;
import org.apache.metamodel.schema.MutableColumn;
@@ -128,104 +120,4 @@ public final class HBaseColumn extends MutableColumn {
public String getQuote() {
return null;
}
-
- /**
- * Creates a set of columnFamilies out of a list of hbaseColumns
- * @param columns
- * @return {@link LinkedHashSet}
- */
- public static Set<String> getColumnFamilies(List<HBaseColumn> columns) {
- final LinkedHashSet<String> columnFamilies = new LinkedHashSet<>();
- for (HBaseColumn column : columns) {
- columnFamilies.add(column.getColumnFamily());
- }
- return columnFamilies;
- }
-
- /**
- * Returns the index of the ID-column (see {@link HBaseDataContext#FIELD_ID}) in an array of HBaseColumns.
- * When no ID-column is found, then null is returned.
- * @param columns
- * @return {@link Integer}
- */
- public static Integer findIndexOfIdColumn(List<HBaseColumn> columns) {
- int i = 0;
- Integer indexOfIDColumn = null;
- Iterator<HBaseColumn> iterator = columns.iterator();
- while (indexOfIDColumn == null && iterator.hasNext()) {
- indexOfIDColumn = findIndexOfIdColumn(iterator.next().getColumnFamily(), i);
- if (indexOfIDColumn == null) {
- i++;
- }
- }
- return indexOfIDColumn;
- }
-
- /**
- * Returns the index of the ID-column (see {@link HBaseDataContext#FIELD_ID}) in an array of columnNames.
- * When no ID-column is found, then null is returned.
- * @param columnNames
- * @return {@link Integer}
- */
- public static Integer findIndexOfIdColumn(String[] columnNames) {
- int i = 0;
- Integer indexOfIDColumn = null;
- while (indexOfIDColumn == null && i < columnNames.length) {
- indexOfIDColumn = findIndexOfIdColumn(columnNames[i], i);
- if (indexOfIDColumn == null) {
- i++;
- }
- }
- return indexOfIDColumn;
- }
-
- /**
- * Returns the index of the ID-column (see {@link HBaseDataContext#FIELD_ID})
- * When no ID-column is found, then null is returned.
- * @param columnNames
- * @return {@link Integer}
- */
- private static Integer findIndexOfIdColumn(String columnName, int index) {
- Integer indexOfIDColumn = null;
- if (columnName.equals(HBaseDataContext.FIELD_ID)) {
- indexOfIDColumn = new Integer(index);
- }
- return indexOfIDColumn;
- }
-
- /**
- * Converts a list of {@link Column}'s to a list of {@link HBaseColumn}'s
- * @param columns
- * @return {@link List}<{@link HBaseColumn}>
- */
- public static List<HBaseColumn> convertToHBaseColumnsList(List<Column> columns) {
- return columns.stream().map(column -> (HBaseColumn) column).collect(Collectors.toList());
- }
-
- /**
- * Converts a list of {@link HBaseColumn}'s to a list of {@link Column}'s
- * @param columns
- * @return {@link List}<{@link Column}>
- */
- public static List<Column> convertToColumnsList(List<HBaseColumn> columns) {
- return columns.stream().map(column -> (Column) column).collect(Collectors.toList());
- }
-
- /**
- * Converts a list of {@link HBaseColumn}'s to an array of {@link HBaseColumn}'s
- * @param columns
- * @return Array of {@link HBaseColumn}
- */
- public static HBaseColumn[] convertToHBaseColumnsArray(List<HBaseColumn> columns) {
- return columns.stream().map(column -> column).toArray(size -> new HBaseColumn[size]);
- }
-
- /**
- * Converts a array of {@link Column}'s to an array of {@link HBaseColumn}'s
- * @param columns
- * @return Array of {@link HBaseColumn}
- */
- public static HBaseColumn[] convertToHBaseColumnsArray(Column[] columns) {
- return Arrays.stream(columns).map(column -> (HBaseColumn) column).toArray(size -> new HBaseColumn[size]);
- }
}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/5a28d73c/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java
----------------------------------------------------------------------
diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java
index 9e36a4d..9091788 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java
@@ -18,7 +18,12 @@
*/
package org.apache.metamodel.hbase;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
import org.apache.metamodel.MetaModelException;
import org.apache.metamodel.insert.AbstractRowInsertionBuilder;
@@ -30,7 +35,7 @@ import org.apache.metamodel.schema.Column;
// TODO: Possible future improvement: Make it possible to change the columns for each execute.
// Now each row will get exactly the same columns.
public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseUpdateCallback> {
- final Integer _indexOfIdColumn;
+ final int _indexOfIdColumn;
/**
* Creates a {@link HBaseRowInsertionBuilder}. The table and the column's columnFamilies are checked to exist in the schema.
@@ -41,25 +46,41 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU
* @throws MetaModelException when no ID-column is found.
*/
public HBaseRowInsertionBuilder(final HBaseUpdateCallback updateCallback, final HBaseTable table,
- final List<Column> columns) {
- super(updateCallback, table, columns);
+ final List<HBaseColumn> columns) {
+ super(updateCallback, table, columns.stream().map(column -> (Column) column).collect(Collectors.toList()));
if (columns.isEmpty()) { // TODO: Columns null will already result in a NullPointer at the super. Should the
// super get a extra check?
throw new IllegalArgumentException("The hbaseColumns list is null or empty");
}
- this._indexOfIdColumn = HBaseColumn.findIndexOfIdColumn(HBaseColumn.convertToHBaseColumnsList(columns));
- if (_indexOfIdColumn == null) {
+ this._indexOfIdColumn = getIndexOfIdColumn(columns);
+ if (_indexOfIdColumn == -1) {
throw new MetaModelException("The ID-Column was not found");
}
checkTable(updateCallback, table);
- table.checkForNotMatchingColumnFamilies(HBaseColumn.getColumnFamilies(HBaseColumn.convertToHBaseColumnsList(
- columns)));
+ checkForNotMatchingColumnFamilies(table, getColumnFamilies(columns));
+ }
+
+ /**
+ * Returns the index of the ID-column (see {@link HBaseDataContext#FIELD_ID}) in an array of HBaseColumns. When no
+ * ID-column is found, then null is returned.
+ *
+ * @param columns
+ * @return {@link Integer}
+ */
+ private static Integer getIndexOfIdColumn(final List<HBaseColumn> columns) {
+ for (int i = 0; i < columns.size(); i++) {
+ if (HBaseDataContext.FIELD_ID.equals(columns.get(i).getColumnFamily())) {
+ return i;
+ }
+ }
+ return -1;
}
/**
* Check if the table and it's columnFamilies exist in the schema
+ *
* @param updateCallback
* @param tableGettingInserts
* @throws MetaModelException If the table or the columnFamilies don't exist
@@ -71,18 +92,52 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU
throw new MetaModelException("Trying to insert data into table: " + tableGettingInserts.getName()
+ ", which doesn't exist yet");
}
- tableInSchema.checkForNotMatchingColumnFamilies(HBaseColumn.getColumnFamilies(tableGettingInserts
- .getHBaseColumnsInternal()));
+ checkForNotMatchingColumnFamilies(tableInSchema, tableGettingInserts.getColumnFamilies());
+ }
+
+ /**
+ * Check if a list of columnNames all exist in this table
+ *
+ * @param columnNamesOfCheckedTable
+ * @throws MetaModelException If a column doesn't exist
+ */
+ public void checkForNotMatchingColumnFamilies(final HBaseTable table, final Set<String> columnNamesOfCheckedTable) {
+ Set<String> columnFamilyNamesOfExistingTable = table.getColumnFamilies();
+
+ for (String columnNameOfCheckedTable : columnNamesOfCheckedTable) {
+ boolean matchingColumnFound = false;
+ Iterator<String> iterator = columnFamilyNamesOfExistingTable.iterator();
+ while (!matchingColumnFound && iterator.hasNext()) {
+ if (columnNameOfCheckedTable.equals(iterator.next())) {
+ matchingColumnFound = true;
+ }
+ }
+ if (!matchingColumnFound) {
+ throw new MetaModelException(String.format("ColumnFamily: %s doesn't exist in the schema of the table",
+ columnNameOfCheckedTable));
+ }
+ }
+ }
+
+ /**
+ * Creates a set of columnFamilies out of a list of hbaseColumns
+ *
+ * @param columns
+ * @return {@link LinkedHashSet}
+ */
+ private static Set<String> getColumnFamilies(final List<HBaseColumn> columns) {
+ return columns.stream().map(HBaseColumn::getColumnFamily).distinct().collect(Collectors.toSet());
}
@Override
public synchronized void execute() {
- getUpdateCallback().getHBaseClient().insertRow(getTable().getName(), getColumns(), getValues(), _indexOfIdColumn
- .intValue());
+ getUpdateCallback().getHBaseClient().insertRow(getTable().getName(), getColumns(), getValues(),
+ _indexOfIdColumn);
}
@Override
public HBaseColumn[] getColumns() {
- return HBaseColumn.convertToHBaseColumnsArray(super.getColumns());
+ return Arrays.stream(super.getColumns()).map(column -> (HBaseColumn) column).toArray(
+ size -> new HBaseColumn[size]);
}
}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/5a28d73c/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java
----------------------------------------------------------------------
diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java
index 9f482ac..0dd2558 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseTable.java
@@ -18,9 +18,9 @@
*/
package org.apache.metamodel.hbase;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.metamodel.MetaModelException;
@@ -45,16 +45,16 @@ final class HBaseTable extends MutableTable {
private final transient ColumnType _defaultRowKeyColumnType;
/**
- * Creates an HBaseTable. If the tableDef variable doesn't include the ID-column (see {@link HBaseDataContext#FIELD_ID}).
+ * Creates an HBaseTable. If the tableDef variable doesn't include the ID-column (see {@link HBaseDataContext#FIELD_ID}).
* Then it's first added.
* @param dataContext
* @param tableDef Table definition. The tableName, columnNames and columnTypes variables are used.
* @param schema {@link MutableSchema} where the table belongs to.
- * @param defaultRowKeyColumnType This variable determines the {@link ColumnType},
- * used when the tableDef doesn't include the ID column (see {@link HBaseDataContext#FIELD_ID}).
+ * @param defaultRowKeyColumnType This variable determines the {@link ColumnType},
+ * used when the tableDef doesn't include the ID column (see {@link HBaseDataContext#FIELD_ID}).
*/
- public HBaseTable(HBaseDataContext dataContext, SimpleTableDef tableDef, MutableSchema schema,
- ColumnType defaultRowKeyColumnType) {
+ public HBaseTable(final HBaseDataContext dataContext, final SimpleTableDef tableDef, final MutableSchema schema,
+ final ColumnType defaultRowKeyColumnType) {
super(tableDef.getName(), TableType.TABLE, schema);
_dataContext = dataContext;
_defaultRowKeyColumnType = defaultRowKeyColumnType;
@@ -66,7 +66,7 @@ final class HBaseTable extends MutableTable {
* @param tableDef
* @param defaultRowKeyColumnType
*/
- private void addColumns(SimpleTableDef tableDef, ColumnType defaultRowKeyColumnType) {
+ private void addColumns(final SimpleTableDef tableDef, final ColumnType defaultRowKeyColumnType) {
// Add the columns
final String[] columnNames = tableDef.getColumnNames();
if (columnNames == null || columnNames.length == 0) {
@@ -75,13 +75,12 @@ final class HBaseTable extends MutableTable {
final ColumnType[] columnTypes = tableDef.getColumnTypes();
// Find the ID-Column
- Integer indexOfIDColumn = HBaseColumn.findIndexOfIdColumn(columnNames);
- boolean idColumnFound = indexOfIDColumn != null;
+ int indexOfIDColumn = getIndexOfIdColumn(columnNames);
+ boolean idColumnFound = indexOfIDColumn != -1;
// ColumnNumbers start from 1
if (idColumnFound) {
- addColumn(HBaseDataContext.FIELD_ID, columnTypes[indexOfIDColumn.intValue()], indexOfIDColumn.intValue()
- + 1);
+ addColumn(HBaseDataContext.FIELD_ID, columnTypes[indexOfIDColumn], indexOfIDColumn + 1);
} else {
addColumn(HBaseDataContext.FIELD_ID, defaultRowKeyColumnType, 1);
}
@@ -100,7 +99,24 @@ final class HBaseTable extends MutableTable {
}
/**
+ * Returns the index of the ID-column (see {@link HBaseDataContext#FIELD_ID}) in an array of columnNames. When no
+ * ID-column is found, then -1 is returned.
+ *
+ * @param columnNames
+ * @return {@link Integer}
+ */
+ private static int getIndexOfIdColumn(final String[] columnNames) {
+ for (int i = 0; i < columnNames.length; i++) {
+ if (HBaseDataContext.FIELD_ID.equals(columnNames[i])) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
* Add a column to this table
+ *
* @param columnName
* @param columnType
* @param columnNumber
@@ -133,34 +149,16 @@ final class HBaseTable extends MutableTable {
}
/**
- * Check if a list of columnNames all exist in this table
- * @param columnNamesOfCheckedTable
- * @throws MetaModelException If a column doesn't exist
- */
- public void checkForNotMatchingColumnFamilies(final Set<String> columnNamesOfCheckedTable) {
- Set<String> columnFamilyNamesOfExistingTable = HBaseColumn.getColumnFamilies(getHBaseColumnsInternal());
-
- for (String columnNameOfCheckedTable : columnNamesOfCheckedTable) {
- boolean matchingColumnFound = false;
- Iterator<String> iterator = columnFamilyNamesOfExistingTable.iterator();
- while (!matchingColumnFound && iterator.hasNext()) {
- if (columnNameOfCheckedTable.equals(iterator.next())) {
- matchingColumnFound = true;
- }
- }
- if (!matchingColumnFound) {
- throw new MetaModelException(String.format("ColumnFamily: %s doesn't exist in the schema of the table",
- columnNameOfCheckedTable));
- }
- }
- }
-
- /**
- * Returns a list of {@link HBaseColumn}'s from {@link HBaseTable#getColumnsInternal()},
- * which returns a list of {@link Column}'s
- * @return {@link List}<{@link HBaseColumn}>
+ * Returns the column families for this HBase table.
+ *
+ * @return {@link Set}
*/
- public List<HBaseColumn> getHBaseColumnsInternal() {
- return HBaseColumn.convertToHBaseColumnsList(getColumnsInternal());
+ Set<String> getColumnFamilies() {
+ return getColumnsInternal()
+ .stream()
+ .map(column -> (HBaseColumn) column)
+ .map(HBaseColumn::getColumnFamily)
+ .distinct()
+ .collect(Collectors.toSet());
}
}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/5a28d73c/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java
----------------------------------------------------------------------
diff --git a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java
index b154275..9273b07 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java
@@ -37,13 +37,13 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
private final HBaseClient _hBaseClient;
- public HBaseUpdateCallback(HBaseDataContext dataContext) {
+ public HBaseUpdateCallback(final HBaseDataContext dataContext) {
super(dataContext);
_hBaseClient = new HBaseClient(dataContext.getConnection());
}
@Override
- public TableCreationBuilder createTable(Schema schema, String name) {
+ public TableCreationBuilder createTable(final Schema schema, final String name) {
return new HBaseCreateTableBuilder(this, schema, name);
}
@@ -54,7 +54,8 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
* @param columnFamilies the columnFamilies of the new table
* @return {@link HBaseCreateTableBuilder}
*/
- public HBaseCreateTableBuilder createTable(Schema schema, String name, Set<String> columnFamilies) {
+ public HBaseCreateTableBuilder createTable(final Schema schema, final String name,
+ final Set<String> columnFamilies) {
return new HBaseCreateTableBuilder(this, schema, name, columnFamilies);
}
@@ -64,7 +65,7 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
}
@Override
- public TableDropBuilder dropTable(Table table) {
+ public TableDropBuilder dropTable(final Table table) {
return new HBaseTableDropBuilder(table, this);
}
@@ -78,7 +79,7 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
}
/**
- * Initiates the building of a row insertion operation.
+ * Initiates the building of a row insertion operation.
* @param table Table to get inserts.
* @param columns List of {@link HBaseColumn} to insert on.
* @return {@link HBaseRowInsertionBuilder}
@@ -89,7 +90,7 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
throw new IllegalArgumentException("The hbaseColumns list is null or empty");
}
if (table instanceof HBaseTable) {
- return new HBaseRowInsertionBuilder(this, (HBaseTable) table, HBaseColumn.convertToColumnsList(columns));
+ return new HBaseRowInsertionBuilder(this, (HBaseTable) table, columns);
} else {
throw new IllegalArgumentException("Not an HBase table: " + table);
}
@@ -104,9 +105,9 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
* @throws IllegalArgumentException when table isn't a {@link HBaseTable}
*/
@Override
- public RowDeletionBuilder deleteFrom(Table table) {
+ public RowDeletionBuilder deleteFrom(final Table table) {
if (table instanceof HBaseTable) {
- return new HBaseRowDeletionBuilder(_hBaseClient, (HBaseTable) table);
+ return new HBaseRowDeletionBuilder(_hBaseClient, table);
} else {
throw new IllegalArgumentException("Not an HBase table: " + table);
}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/5a28d73c/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 5655e4a..9ea04df 100644
--- a/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java
+++ b/hbase/src/test/java/org/apache/metamodel/hbase/CreateTableTest.java
@@ -20,7 +20,9 @@ package org.apache.metamodel.hbase;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import org.apache.metamodel.MetaModelException;
import org.apache.metamodel.schema.ImmutableSchema;
@@ -116,7 +118,7 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
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 = HBaseColumn.getColumnFamilies(getHBaseColumnsFromMap(row));
+ final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromMap(row));
try {
final HBaseCreateTableBuilder hBaseCreateTableBuilder = (HBaseCreateTableBuilder) getUpdateCallback()
.createTable(getSchema(), TABLE_NAME);
@@ -194,7 +196,7 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
if (isConfigured()) {
final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR);
- final Set<String> columnFamilies = HBaseColumn.getColumnFamilies(getHBaseColumnsFromMap(row));
+ final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromMap(row));
try {
final HBaseCreateTableBuilder hBaseCreateTableBuilder = (HBaseCreateTableBuilder) getUpdateCallback()
.createTable(getSchema(), TABLE_NAME);
@@ -218,7 +220,7 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
if (isConfigured()) {
final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR);
- final Set<String> columnFamilies = HBaseColumn.getColumnFamilies(getHBaseColumnsFromMap(row));
+ final Set<String> columnFamilies = getColumnFamilies(getHBaseColumnsFromMap(row));
try {
getUpdateCallback().createTable(getSchema(), TABLE_NAME, columnFamilies).execute();
checkSuccesfullyInsertedTable();
@@ -230,4 +232,14 @@ public class CreateTableTest extends HBaseUpdateCallbackTest {
}.getClass().getEnclosingMethod().getName());
}
}
+
+ /**
+ * Creates a set of columnFamilies out of a list of hbaseColumns
+ *
+ * @param columns
+ * @return {@link LinkedHashSet}
+ */
+ private static Set<String> getColumnFamilies(List<HBaseColumn> columns) {
+ return columns.stream().map(HBaseColumn::getColumnFamily).distinct().collect(Collectors.toSet());
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/metamodel/blob/5a28d73c/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java
----------------------------------------------------------------------
diff --git a/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java b/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java
index 7a1705f..1a9a424 100644
--- a/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java
+++ b/hbase/src/test/java/org/apache/metamodel/hbase/InsertRowTest.java
@@ -24,7 +24,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import org.apache.metamodel.MetaModelException;
-import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.MutableTable;
public class InsertRowTest extends HBaseUpdateCallbackTest {
@@ -135,7 +134,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest {
try {
final HBaseTable existingTable = createAndInsertTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO,
CF_BAR);
- List<Column> emptyList = new ArrayList<>();
+ List<HBaseColumn> emptyList = new ArrayList<>();
new HBaseRowInsertionBuilder(getUpdateCallback(), existingTable, emptyList);
fail("Should get an exception that the columns list is empty.");
} catch (IllegalArgumentException e) {
@@ -258,7 +257,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest {
final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO,
CF_BAR);
- final HBaseColumn[] columns = HBaseColumn.convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
+ final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
final Object[] values = new String[] { "Values" };
new HBaseClient(getDataContext().getConnection()).insertRow(null, columns, values, 0);
fail("Should get an exception that tableName is null");
@@ -302,7 +301,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest {
final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO,
CF_BAR);
- final HBaseColumn[] columns = HBaseColumn.convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
+ final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
new HBaseClient(getDataContext().getConnection()).insertRow(table.getName(), columns, null, 0);
fail("Should get an exception that values is null");
} catch (IllegalArgumentException e) {
@@ -325,7 +324,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest {
final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO,
CF_BAR);
- final HBaseColumn[] columns = HBaseColumn.convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
+ final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
final Object[] values = new String[] { "Values" };
new HBaseClient(getDataContext().getConnection()).insertRow(table.getName(), columns, values, 10);
fail("Should get an exception that the indexOfIdColumn is incorrect");
@@ -349,7 +348,7 @@ public class InsertRowTest extends HBaseUpdateCallbackTest {
final HBaseTable table = createHBaseTable(TABLE_NAME, HBaseDataContext.FIELD_ID, CF_FOO, CF_BAR, null);
final LinkedHashMap<HBaseColumn, Object> row = createRow(table, HBaseDataContext.FIELD_ID, CF_FOO,
CF_BAR);
- final HBaseColumn[] columns = HBaseColumn.convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
+ final HBaseColumn[] columns = convertToHBaseColumnsArray(getHBaseColumnsFromMap(row));
final Object[] values = new String[] { null };
new HBaseClient(getDataContext().getConnection()).insertRow(table.getName(), columns, values, 0);
fail("Should get an exception that the indexOfIdColumn is incorrect");
@@ -437,4 +436,15 @@ public class InsertRowTest extends HBaseUpdateCallbackTest {
}.getClass().getEnclosingMethod().getName());
}
}
+
+ /**
+ * Converts a list of {@link HBaseColumn}'s to an array of {@link HBaseColumn}'s
+ *
+ * @param columns
+ * @return Array of {@link HBaseColumn}
+ */
+ private static HBaseColumn[] convertToHBaseColumnsArray(List<HBaseColumn> columns) {
+ return columns.toArray(new HBaseColumn[columns.size()]);
+ }
+
}