// Path: api/src/main/java/com/ebuddy/cassandra/BatchContext.java
// public interface BatchContext { }
// 
// Path: thrift/src/main/java/com/ebuddy/cassandra/dao/mapper/ColumnFamilyRowMapper.java
// public interface ColumnFamilyRowMapper<T,K,N,V> {
// 
//     T mapRow(K rowKey, List<HColumn<N,V>> columns);
// 
// }
// 
// Path: thrift/src/main/java/com/ebuddy/cassandra/dao/mapper/ColumnMapper.java
// public interface ColumnMapper<T,N,V> {
// 
//     T mapColumn(N columnName, V columnValue);
// 
// }


import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import com.ebuddy.cassandra.BatchContext;
import com.ebuddy.cassandra.dao.mapper.ColumnFamilyRowMapper;
import com.ebuddy.cassandra.dao.mapper.ColumnMapper;
/*
 * Copyright 2013 eBuddy B.V.
 *
 *    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.ebuddy.cassandra.dao;




/**
 * Core Column Family operations.
 * @author Eric Zoerner <a href="mailto:ezoerner@ebuddy.com">ezoerner@ebuddy.com</a>
 */
public interface ColumnFamilyOperations<K,N,V> {

    /**
     * Create a BatchContext for use with this keyspace.
     *
     * @return the BatchContext
     */
    BatchContext begin();

    /**
     * Execute a batch of mutations using a mutator.
     *
     * @param batchContext the BatchContext
     */
    void commit(@Nonnull BatchContext batchContext);

    V readColumnValue(K rowKey, N columnName);

// Path: api/src/main/java/com/ebuddy/cassandra/BatchContext.java
// public interface BatchContext { }
// 
// Path: thrift/src/main/java/com/ebuddy/cassandra/dao/mapper/ColumnFamilyRowMapper.java
// public interface ColumnFamilyRowMapper<T,K,N,V> {
// 
//     T mapRow(K rowKey, List<HColumn<N,V>> columns);
// 
// }
// 
// Path: thrift/src/main/java/com/ebuddy/cassandra/dao/mapper/ColumnMapper.java
// public interface ColumnMapper<T,N,V> {
// 
//     T mapColumn(N columnName, V columnValue);
// 
// }


// Path: thrift/src/main/java/com/ebuddy/cassandra/dao/ColumnFamilyOperations.java
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import com.ebuddy.cassandra.BatchContext;
import com.ebuddy.cassandra.dao.mapper.ColumnFamilyRowMapper;
import com.ebuddy.cassandra.dao.mapper.ColumnMapper;

/*
 * Copyright 2013 eBuddy B.V.
 *
 *    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.ebuddy.cassandra.dao;




/**
 * Core Column Family operations.
 * @author Eric Zoerner <a href="mailto:ezoerner@ebuddy.com">ezoerner@ebuddy.com</a>
 */
public interface ColumnFamilyOperations<K,N,V> {

    /**
     * Create a BatchContext for use with this keyspace.
     *
     * @return the BatchContext
     */
    BatchContext begin();

    /**
     * Execute a batch of mutations using a mutator.
     *
     * @param batchContext the BatchContext
     */
    void commit(@Nonnull BatchContext batchContext);

    V readColumnValue(K rowKey, N columnName);

    Map<N,V> readColumnsAsMap(K rowKey);