Package com.netflix.astyanax.cql.writes

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

package com.netflix.astyanax.cql.writes;

import java.util.List;
import java.util.concurrent.atomic.AtomicReference;

import com.netflix.astyanax.cql.CqlKeyspaceImpl.KeyspaceContext;
import com.netflix.astyanax.cql.schema.CqlColumnFamilyDefinitionImpl;
import com.netflix.astyanax.cql.util.CFQueryContext;
import com.netflix.astyanax.model.ColumnFamily;
import com.netflix.astyanax.model.ConsistencyLevel;

public class CqlStyleMutationQuery {

  protected final KeyspaceContext ksContext;
  protected final CFQueryContext<?,?> cfContext;
  protected final List<CqlColumnMutationImpl<?,?>> mutationList;
 
  protected AtomicReference<Boolean> deleteRow;
 
  protected final AtomicReference<Long> defaultTimestamp;
  protected final AtomicReference<Integer> defaultTTL;
  protected final ConsistencyLevel consistencyLevel;

  private static final String USING = " USING ";
  private static final String TTL = " TTL ";
  private static final String AND = " AND";
  private static final String TIMESTAMP = " TIMESTAMP ";
 
  public CqlStyleMutationQuery(KeyspaceContext ksCtx, CFQueryContext<?,?> cfCtx,
                 List<CqlColumnMutationImpl<?,?>> mutationList, AtomicReference<Boolean> deleteRow,
                 AtomicReference<Integer> ttl, AtomicReference<Long> timestamp, ConsistencyLevel consistencyLevel) {
   
    this.ksContext = ksCtx;
    this.cfContext = cfCtx;
   
    this.mutationList = mutationList;
    this.deleteRow = deleteRow;
    this.defaultTTL = ttl;
    this.defaultTimestamp = timestamp;
    this.consistencyLevel = consistencyLevel;
   
    if (this.consistencyLevel != null) {
      cfContext.setConsistencyLevel(consistencyLevel);
    }
  }
 
  public String getDeleteEntireRowQuery() {
    ColumnFamily<?,?> cf = cfContext.getColumnFamily();
    CqlColumnFamilyDefinitionImpl cfDef = (CqlColumnFamilyDefinitionImpl)cf.getColumnFamilyDefinition();
    return "DELETE FROM " + ksContext.getKeyspace() + "." + cf.getName() +
        " WHERE " + cfDef.getPartitionKeyColumnDefinition().getName() + " = ?;";
  }

  public void appendWriteOptions(StringBuilder sb, Integer overrideTTL, Long overrideTimestamp) {
   
    Integer ttl = overrideTTL != null ? overrideTTL : defaultTTL.get();
    Long timestamp = overrideTimestamp != null ? overrideTimestamp : defaultTimestamp.get();
       
    if (ttl != null || timestamp != null) {
      sb.append(USING);
    }
   
    if (ttl != null) {
      sb.append(TTL + ttl);
    }
   
    if (timestamp != null) {
      if (ttl != null) {
        sb.append(AND);
      }
      sb.append(TIMESTAMP + timestamp);
    }
  }
 
}
TOP

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

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.