Package com.netflix.astyanax.cql.writes

Source Code of com.netflix.astyanax.cql.writes.BatchedStatements

package com.netflix.astyanax.cql.writes;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.datastax.driver.core.BoundStatement;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;

public class BatchedStatements {

  private static final Logger LOG = LoggerFactory.getLogger(BatchedStatements.class);
 
  private List<String> batchQueries = new ArrayList<String>();
  private List<Object> batchValues = new ArrayList<Object>();
 
  public BatchedStatements() {
  }
 
  public List<String> getBatchQueries() {
    return this.batchQueries;
  }
 
  public List<Object> getBatchValues() {
    return this.batchValues;
  }
 
  public void addBatchQuery(String query) {
    batchQueries.add(query);
  }
 
  public void addBatchValues(List<Object> values) {
    batchValues.addAll(values);
  }
 
  public void addBatchValues(Object ... values) {
    for (Object value : values) {
      batchValues.add(value);
    }
  }

  public void addBatch(String query, Object ... values) {
    batchQueries.add(query);
    for (Object value : values) {
      batchValues.add(value);
    }
  }

  public void addBatch(String query, List<Object> values) {
    batchQueries.add(query);
    batchValues.addAll(values);
  }
 
  public void addBatch(BatchedStatements otherBatch) {
    batchQueries.addAll(otherBatch.getBatchQueries());
    batchValues.addAll(otherBatch.getBatchValues());
  }

  public BoundStatement getBoundStatement(Session session, boolean atomicBatch) {
   
    String query = getBatchQuery(atomicBatch);
    PreparedStatement statement = session.prepare(query);
   
    BoundStatement boundStatement = new BoundStatement(statement);

    Object[] valueArr = batchValues.toArray();
    boundStatement.bind(valueArr);
   
    return boundStatement;
  }
 
  public String getBatchQuery(boolean atomicBatch) {
    StringBuilder sb = new StringBuilder();
   
    boolean isBatch = batchQueries.size() > 1;
   
    if (isBatch) {
      if (atomicBatch) {
        sb.append("BEGIN BATCH ");
      } else {
        sb.append("BEGIN UNLOGGED BATCH ");
      }
    }
    for (String query : batchQueries) {
      sb.append(query);
    }
   
    if (isBatch) {
      sb.append(" APPLY BATCH; ");
    }
   
    String query = sb.toString();
   
    if (LOG.isDebugEnabled()) {
      LOG.debug("Query : " + query);
      LOG.debug("Bind values: " + batchValues);
    }
    return query;
  }
}
TOP

Related Classes of com.netflix.astyanax.cql.writes.BatchedStatements

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.