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);
         }