diff --git a/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java b/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java index b46c6fcafc..b8df5eaa1e 100644 --- a/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java +++ b/src/main/java/com/alibaba/druid/hbase/exec/SingleTableQueryExecutePlan.java @@ -35,7 +35,7 @@ public class SingleTableQueryExecutePlan extends SingleTableExecutePlan { private HResultSetMetaData resultMetaData; - private HMappingTable mapping; + private HMappingTable mapping; public SingleTableQueryExecutePlan(){ diff --git a/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java b/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java index 86c5786e52..2d28fb39f4 100644 --- a/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java +++ b/src/main/java/com/alibaba/druid/hbase/mapping/HMapping.java @@ -1,6 +1,14 @@ package com.alibaba.druid.hbase.mapping; +import org.apache.hadoop.hbase.client.Result; public interface HMapping { + byte[] getFamily(String columnName); + + byte[] getQualifier(String columnName); + + boolean isRow(String columnName); + + Object getObject(Result result, String name); } diff --git a/src/main/java/com/alibaba/druid/hbase/mapping/HMappingDefaultImpl.java b/src/main/java/com/alibaba/druid/hbase/mapping/HMappingDefaultImpl.java new file mode 100644 index 0000000000..2277c23d49 --- /dev/null +++ b/src/main/java/com/alibaba/druid/hbase/mapping/HMappingDefaultImpl.java @@ -0,0 +1,42 @@ +package com.alibaba.druid.hbase.mapping; + +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.util.Bytes; + +public class HMappingDefaultImpl implements HMapping { + + private byte[] family = Bytes.toBytes("d"); + + @Override + public Object getObject(Result result, String columnName) { + byte[] family = this.getFamily(columnName); + + byte[] bytes; + if (isRow(columnName)) { + bytes = result.getRow(); + } else { + byte[] qualifier = Bytes.toBytes(columnName); + bytes = result.getValue(family, qualifier); + } + + return bytes; + } + + public byte[] getFamily(String columnName) { + return family; + } + + @Override + public byte[] getQualifier(String columnName) { + return Bytes.toBytes(columnName); + } + + @Override + public boolean isRow(String columnName) { + if ("id".equals(columnName)) { + return true; + } + + return false; + } +}