From 6a92c4eff2dddb81a6999a8017b14d1a2304d1fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Mon, 21 May 2012 15:32:08 +0800 Subject: [PATCH] refactor --- .../exec/SingleTableQueryExecutePlan.java | 2 +- .../alibaba/druid/hbase/mapping/HMapping.java | 8 ++++ .../hbase/mapping/HMappingDefaultImpl.java | 42 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/alibaba/druid/hbase/mapping/HMappingDefaultImpl.java 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; + } +}