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:50:59 UTC
[08/31] metamodel git commit: Refactored HBaseRowInsertionBuilder,
so it uses the _columns of the AbstractRowBuilder instead of its own,
to make sure the model stays consistent.
Refactored HBaseRowInsertionBuilder, so it uses the _columns of the AbstractRowBuilder instead of its own, to make sure the model stays consistent.
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/ea7356a4
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/ea7356a4
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/ea7356a4
Branch: refs/heads/master
Commit: ea7356a4228f700b1b8f7115762cfc42ca6c92fc
Parents: 3ada7eb
Author: arjansh <Ar...@humaninference.com>
Authored: Fri May 25 12:08:05 2018 +0200
Committer: arjansh <Ar...@humaninference.com>
Committed: Fri May 25 12:08:05 2018 +0200
----------------------------------------------------------------------
.../insert/AbstractRowInsertionBuilder.java | 6 +++
.../hbase/HBaseRowInsertionBuilder.java | 39 +++++++-------------
.../metamodel/hbase/HBaseUpdateCallback.java | 16 +++++++-
3 files changed, 34 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/ea7356a4/core/src/main/java/org/apache/metamodel/insert/AbstractRowInsertionBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/insert/AbstractRowInsertionBuilder.java b/core/src/main/java/org/apache/metamodel/insert/AbstractRowInsertionBuilder.java
index 58c0da8..bf6dcd9 100644
--- a/core/src/main/java/org/apache/metamodel/insert/AbstractRowInsertionBuilder.java
+++ b/core/src/main/java/org/apache/metamodel/insert/AbstractRowInsertionBuilder.java
@@ -44,6 +44,12 @@ public abstract class AbstractRowInsertionBuilder<U extends UpdateCallback> exte
_table = table;
}
+ public AbstractRowInsertionBuilder(final U updateCallback, final Table table, final List<Column> columns) {
+ super(columns);
+ _updateCallback = updateCallback;
+ _table = table;
+ }
+
@Override
public Table getTable() {
return _table;
http://git-wip-us.apache.org/repos/asf/metamodel/blob/ea7356a4/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 1c633f7..7272f76 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseRowInsertionBuilder.java
@@ -19,21 +19,20 @@
package org.apache.metamodel.hbase;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Set;
+import java.util.Arrays;
+import java.util.List;
import org.apache.metamodel.MetaModelException;
import org.apache.metamodel.insert.AbstractRowInsertionBuilder;
+import org.apache.metamodel.schema.Column;
/**
* A builder-class to insert rows in a HBase datastore
*/
public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseUpdateCallback> {
-
- private HBaseColumn[] _hbaseColumns;
-
- public HBaseRowInsertionBuilder(final HBaseUpdateCallback updateCallback, final HBaseTable table) {
- super(updateCallback, table);
+ public HBaseRowInsertionBuilder(final HBaseUpdateCallback updateCallback, final HBaseTable table,
+ final List<Column> columns) {
+ super(updateCallback, table, columns);
checkTable(updateCallback, table);
}
@@ -53,25 +52,9 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU
tableInSchema.checkForNotMatchingColumns(tableGettingInserts.getColumnNames());
}
- /**
- * Set the hbaseColumns. Checks if the columnFamilies exist in the table.
- * @param hbaseColumns a {@link IllegalArgumentException} is thrown when this parameter is null or empty
- */
- public void setHbaseColumns(HBaseColumn[] hbaseColumns) {
- if (hbaseColumns == null || hbaseColumns.length == 0) {
- throw new IllegalArgumentException("List of hbaseColumns is null or empty");
- }
- final Set<String> columnFamilies = HBaseColumn.getColumnFamilies(hbaseColumns);
- final HBaseTable tableInSchema = (HBaseTable) getTable();
- final ArrayList<String> columnFamiliesAsList = new ArrayList<String>();
- columnFamiliesAsList.addAll(columnFamilies);
- tableInSchema.checkForNotMatchingColumns(columnFamiliesAsList);
- this._hbaseColumns = hbaseColumns;
- }
-
@Override
public synchronized void execute() {
- if (_hbaseColumns == null || _hbaseColumns.length == 0) {
+ if (getColumns() == null || getColumns().length == 0) {
throw new MetaModelException("The hbaseColumns-array is null or empty");
}
if (getValues() == null || getValues().length == 0) {
@@ -79,9 +62,15 @@ public class HBaseRowInsertionBuilder extends AbstractRowInsertionBuilder<HBaseU
}
try {
final HBaseClient hBaseClient = getUpdateCallback().getHBaseClient();
- hBaseClient.writeRow((HBaseTable) getTable(), _hbaseColumns, getValues());
+ hBaseClient.writeRow((HBaseTable) getTable(), getColumns(), getValues());
} catch (IOException e) {
throw new MetaModelException(e);
}
}
+
+ @Override
+ public HBaseColumn[] 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/ea7356a4/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 e548229..6d35508 100644
--- a/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java
+++ b/hbase/src/main/java/org/apache/metamodel/hbase/HBaseUpdateCallback.java
@@ -18,7 +18,9 @@
*/
package org.apache.metamodel.hbase;
+import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
import org.apache.metamodel.AbstractUpdateCallback;
import org.apache.metamodel.UpdateCallback;
@@ -26,6 +28,7 @@ import org.apache.metamodel.create.TableCreationBuilder;
import org.apache.metamodel.delete.RowDeletionBuilder;
import org.apache.metamodel.drop.TableDropBuilder;
import org.apache.metamodel.insert.RowInsertionBuilder;
+import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.Schema;
import org.apache.metamodel.schema.Table;
@@ -68,9 +71,18 @@ public class HBaseUpdateCallback extends AbstractUpdateCallback implements Updat
}
@Override
- public RowInsertionBuilder insertInto(Table table) {
+ public RowInsertionBuilder insertInto(final Table table) {
+ throw new UnsupportedOperationException(
+ "We need an explicit list of columns when inserting into an HBase table.");
+ }
+
+ public RowInsertionBuilder insertInto(final Table table, final List<HBaseColumn> columns) {
if (table instanceof HBaseTable) {
- return new HBaseRowInsertionBuilder(this, (HBaseTable) table);
+ return new HBaseRowInsertionBuilder(this, (HBaseTable) table, columns
+ .stream()
+ .map(obj -> (Column) obj)
+ .collect(
+ Collectors.toList()));
} else {
throw new IllegalArgumentException("Not an HBase table: " + table);
}