/* * Copyright 2010 Impetus Infotech. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.impetus.kundera.db.accessor; import java.util.Arrays; import java.util.List; import org.apache.cassandra.thrift.Column; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.impetus.kundera.ejb.EntityManagerImpl; import com.impetus.kundera.metadata.EntityMetadata; import com.impetus.kundera.proxy.EnhancedEntity; /** * DataAccessor implementation for Cassandra's ColumnFamily. * * @author animesh.kumar * @since 0.1 */ public final class ColumnFamilyDataAccessor extends BaseDataAccessor<Column> { /** log for this class. */ private static Log log = LogFactory.getLog(ColumnFamilyDataAccessor.class); /** * Instantiates a new column family data accessor. * * @param em * the em */ public ColumnFamilyDataAccessor(EntityManagerImpl em) { super(em); } /* * @see com.impetus.kundera.db.DataAccessor#read(java.lang.Class, * com.impetus.kundera.metadata.EntityMetadata, java.lang.String) */ @Override public <E> E read(Class<E> clazz, EntityMetadata m, String id) throws Exception { log.debug("Column Family >> Read >> " + clazz.getName() + "_" + id); String keyspace = m.getKeyspaceName(); String family = m.getColumnFamilyName(); return getEntityManager().getClient().loadColumns(getEntityManager(),clazz,keyspace, family, id,m); // load column from DB //TODO uncomment // List<Column> columns = // E e; // HBaseClient hBaseClient = new HBaseClient(); // HBaseData data = hBaseClient.read(m.getEntityClazz().getSimpleName().toLowerCase(), family, id, new String[0]); // // e = onLoadFromHBase(clazz, data, m, id); //TODO uncomment. /*// check for empty if (null == columns || columns.size() == 0) { e = null; } else { e = fromThriftRow(clazz, m, this.new ThriftRow(id, family, columns)); }*/ // return e; } /* * @see com.impetus.kundera.db.DataAccessor#read(java.lang.Class, * com.impetus.kundera.metadata.EntityMetadata, java.lang.String[]) */ @Override public <E> List<E> read(Class<E> clazz, EntityMetadata m, String... ids) throws Exception { log.debug("Cassandra >> Read >> " + clazz.getName() + "_(" + Arrays.asList(ids) + ")"); String keyspace = m.getKeyspaceName(); String family = m.getColumnFamilyName(); return getEntityManager().getClient().loadColumns(getEntityManager(), clazz, keyspace, family, m, ids); // List<E> entities = new ArrayList<E>(); // // for(String id : ids) { // HBaseClient hBaseClient = new HBaseClient(); // HBaseData data = hBaseClient.read(m.getEntityClazz().getSimpleName().toLowerCase(), family, id, new String[0]); // entities.add(onLoadFromHBase(clazz, data, m, id)); // return entities; // } } /* * @seecom.impetus.kundera.db.DataAccessor#write(com.impetus.kundera.proxy. * EnhancedEntity, com.impetus.kundera.metadata.EntityMetadata) */ @Override public void write(EnhancedEntity e, EntityMetadata m) throws Exception { String entityName = e.getEntity().getClass().getName(); String id = e.getId(); log.debug("Column Family >> Write >> " + entityName + "_" + id); String keyspace = m.getKeyspaceName(); String family = m.getColumnFamilyName(); // BaseDataAccessor<Column>.ThriftRow tf = toThriftRow(e, m); getEntityManager().getClient().writeColumns(keyspace, family, // columnFamily id, // row id m.getColumnsAsList(), e// list of columns ); // HBaseClient hBaseClient = new HBaseClient(); // hBaseClient.write(m.getEntityClazz().getSimpleName().toLowerCase(), family, id, m.getColumnsAsList(), e); } }