Package siena.hbase

Source Code of siena.hbase.HBasePersistenceManager$HBaseQuery

package siena.hbase;

import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

import siena.AbstractPersistenceManager;
import siena.ClassInfo;
import siena.PersistenceManager;
import siena.Query;
import siena.QueryAggregated;
import siena.QueryFilter;
import siena.QueryFilterSearch;
import siena.QueryJoin;
import siena.QueryOrder;
import siena.QueryOwned;
import siena.SienaException;
import siena.core.Many4PM;
import siena.core.One4PM;
import siena.core.async.PersistenceManagerAsync;
import siena.core.async.QueryAsync;
import siena.core.options.QueryOption;

public class HBasePersistenceManager extends AbstractPersistenceManager {
 
  private Configuration config;
 
  public HBasePersistenceManager() {
    config = HBaseConfiguration.create();
  }

  public void beginTransaction(int isolationLevel) {
    // TODO Auto-generated method stub
   
  }
 
  public void beginTransaction() {
    // TODO Auto-generated method stub
   
  }

  public void closeConnection() {
    // TODO Auto-generated method stub
   
  }

  public void commitTransaction() {
    // TODO Auto-generated method stub
   
  }

  public <T> Query<T> createQuery(Class<T> clazz) {
    return new HBaseQuery<T>(clazz);
  }

  public void delete(Object obj) {
    Class<?> clazz = obj.getClass();
    ClassInfo info = ClassInfo.getClassInfo(clazz);
    try {
      HTable table = new HTable(config, info.tableName);
      Field id = ClassInfo.getIdField(clazz);
      id.setAccessible(true);
      Delete d = new Delete(Bytes.toBytes(id.get(obj).toString()));
      table.delete(d);
    } catch(Exception e) {
      throw new SienaException(e);
    }
  }

  public void get(Object obj) {
    Class<?> clazz = obj.getClass();
    ClassInfo info = ClassInfo.getClassInfo(clazz);
    try {
      HTable table = new HTable(config, info.tableName);
      Field id = ClassInfo.getIdField(clazz);
      id.setAccessible(true);
     
      Get g = new Get(Bytes.toBytes(id.get(obj).toString()));     
      Result rowResult = table.get(g);
      if(rowResult.isEmpty()) throw new SienaException("No such object");
      mapObject(clazz, obj, rowResult);
    } catch(Exception e) {
      throw new SienaException(e);
    }
  }

  public void init(Properties p) {
  }

  public void insert(Object obj) {
    Class<?> clazz = obj.getClass();
    ClassInfo info = ClassInfo.getClassInfo(clazz);
   
    try {
      HTable table = new HTable(config, info.tableName);
      Field id = ClassInfo.getIdField(clazz);
      id.setAccessible(true);
     
      Put p = new Put(Bytes.toBytes(id.get(obj).toString()));
     
      List<Field> fields = info.insertFields;
      for (Field field : fields) {
        p.add(Bytes.toBytes("string"),
            Bytes.toBytes(ClassInfo.getColumnNames(field)[0]),
            Bytes.toBytes(field.get(obj).toString()));
      }
      table.put(p);
    } catch(Exception e) {
      throw new SienaException(e);
    }
  }

  public void rollbackTransaction() {
    // TODO Auto-generated method stub
   
  }

  public void update(Object obj) {
    insert(obj);
  }
 
  private <T> void mapObject(Class<T> clazz, Object obj, Result result) {
    try {
      String id = Bytes.toString(result.getRow());
      ClassInfo info = ClassInfo.getClassInfo(clazz);
      for (Field field : info.insertFields) {
        String column = "string:"+ClassInfo.getColumnNames(field)[0];
        String value =
          Bytes.toString(
              result.getValue(
                  Bytes.toBytes("string"),
                  Bytes.toBytes(ClassInfo.getColumnNames(field)[0])));
        field.setAccessible(true);
        field.set(obj, value);
      }
      ClassInfo.getIdField(clazz).set(obj, id);
    } catch(Exception e) {
      throw new SienaException(e);
    }
  }
 
  private <T> T mapObject(Class<T> clazz, Result rowResult) {
    try {
      T obj = clazz.newInstance();
      mapObject(clazz, obj, rowResult);
      return obj;
    } catch(SienaException e) {
      throw e;
    } catch(Exception e) {
      throw new SienaException(e);
    }
  }
 
  class HBaseQuery<T> implements Query<T> {
   
    private Class<T> clazz;
    private ClassInfo info;
   
    public HBaseQuery(Class<T> clazz) {
      this.clazz = clazz;
      info = ClassInfo.getClassInfo(clazz);
    }

    @Override
    public int count() {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public int count(int limit) {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public int count(int limit, Object offset) {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public List<T> fetch() {
      ResultScanner scanner = null;
      try {
        HTable table = new HTable(config, info.tableName);
        List<Field> fields = info.insertFields;
        List<String> names = new ArrayList<String>();
       
        Scan s = new Scan();
        for (Field field : fields) {
          s.addColumn(
              Bytes.toBytes("string"),
              Bytes.toBytes(ClassInfo.getColumnNames(field)[0]));
        }
               
        scanner = table.getScanner(s);
        List<T> results = new ArrayList<T>();
        for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
          // print out the row we found and the columns we were looking for
          results.add(mapObject(clazz, rr));
        }

        return results;
      } catch(SienaException e) {
        throw e;
      } catch(Exception e) {
        throw new SienaException(e);
      } finally {
        scanner.close();
      }
    }


    @Override
    public List<T> fetch(int limit) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<T> fetch(int limit, Object offset) {
      // TODO Auto-generated method stub    @Override

      return null;
    }

    @Override
    public Query<T> filter(String fieldName, Object value) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public T get() {
      List<T> list = fetch();
      if(list.isEmpty()) return null;
      return list.get(0);
    }

    @Override
    public Iterable<T> iter() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Iterable<T> iter(int limit) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Iterable<T> iter(int limit, Object offset) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> order(String fieldName) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> search(String match, boolean inBooleanMode,
        String index) {
      // TODO Auto-generated method stub
      return null;
    }
   
    public HBaseQuery<T> clone() {
      return null;
    }
   
    @Override
    public Object nextOffset() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public int delete() {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public List<T> fetchKeys() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<T> fetchKeys(int limit) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<T> fetchKeys(int limit, Object offset) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<QueryFilter> getFilters() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<QueryOrder> getOrders() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<QueryFilterSearch> getSearches() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public void setNextOffset(Object nextOffset) {
      // TODO Auto-generated method stub
     
    }

    @Override
    public Class<T> getQueriedClass() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<QueryJoin> getJoins() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> join(String field, String... sortFields) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> paginate(int size) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> customize(QueryOption... options) {
      // TODO Auto-generated method stub
      return null;
    }



    @Override
    public Map<Integer, QueryOption> options() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> search(String match, String... fields) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> search(String match, QueryOption opt, String... fields) {
      // TODO Auto-generated method stub
      return null;
    }


    @Override
    public QueryOption option(int option) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> stateful() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> release() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public int update(Map<String, ?> fieldValues) {
      // TODO Auto-generated method stub
      return 0;
    }

    @Override
    public Query<T> nextPage() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> previousPage() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> stateless() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> resetData() {
      // TODO Auto-generated method stub
      return null;
    }

   

    @Override
    public String dump(QueryOption... options) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public void dump(OutputStream os, QueryOption... options) {
      // TODO Auto-generated method stub
     
    }

    @Override
    public Query<T> restore(String dump, QueryOption... options) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> restore(InputStream dump, QueryOption... options) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public QueryAsync<T> async() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public PersistenceManager getPersistenceManager() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> limit(int limit) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> offset(Object offset) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Iterable<T> iterPerPage(int limit) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public T getByKey(Object key) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> copy() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<QueryAggregated> getAggregatees() {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> aggregated(Object aggregator, String fieldName) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public Query<T> owned(Object owner, String fieldName) {
      // TODO Auto-generated method stub
      return null;
    }

    @Override
    public List<QueryOwned> getOwnees() {
      // TODO Auto-generated method stub
      return null;
    }



  }

  @Override
  public void save(Object obj) {
    // TODO Auto-generated method stub
   
  }

  @Override
  public int save(Object... objects) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public int save(Iterable<?> objects) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public int insert(Object... objects) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public int insert(Iterable<?> objects) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public int delete(Object... models) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public int delete(Iterable<?> models) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> int deleteByKeys(Class<T> clazz, Object... keys) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> int deleteByKeys(Class<T> clazz, Iterable<?> keys) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public int get(Object... models) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> int get(Iterable<T> models) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> T getByKey(Class<T> clazz, Object key) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> getByKeys(Class<T> clazz, Object... keys) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> getByKeys(Class<T> clazz, Iterable<?> keys) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> int update(Object... models) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> int update(Iterable<T> models) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> int delete(Query<T> query) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> int update(Query<T> query, Map<String, ?> fieldValues) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> Many4PM<T> createMany(Class<T> clazz) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> One4PM<T> createOne(Class<T> clazz) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> int count(Query<T> query) {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public <T> List<T> fetch(Query<T> query) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> fetch(Query<T> query, int limit) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> fetch(Query<T> query, int limit, Object offset) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> fetchKeys(Query<T> query) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> fetchKeys(Query<T> query, int limit) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> List<T> fetchKeys(Query<T> query, int limit, Object offset) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> Iterable<T> iter(Query<T> query) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> Iterable<T> iter(Query<T> query, int limit) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> Iterable<T> iter(Query<T> query, int limit, Object offset) {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public <T> void paginate(Query<T> query) {
    // TODO Auto-generated method stub
   
  }

  @Override
  public <T> void nextPage(Query<T> query) {
    // TODO Auto-generated method stub
   
  }

  @Override
  public <T> void previousPage(Query<T> query) {
    // TODO Auto-generated method stub
   
  }

  @Override
  public <T> PersistenceManagerAsync async() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public String[] supportedOperators() {
    // TODO Auto-generated method stub
    return null;
  }




}
TOP

Related Classes of siena.hbase.HBasePersistenceManager$HBaseQuery

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.