/** * */ package com.stratio.deep.cassandra.querybuilder; import static com.stratio.deep.commons.utils.Utils.quote; import java.util.List; import com.stratio.deep.commons.entity.Cell; import com.stratio.deep.commons.entity.Cells; /** * */ public class IncreaseCountersQueryBuilder extends CassandraUpdateQueryBuilder { private static final long serialVersionUID = 4324594860937682515L; /* * (non-Javadoc) * * @see com.stratio.deep.commons.querybuilder.QueryBuilder#prepareQuery() */ @Override public String prepareQuery(Cells keys, Cells values) { // TODO validate values > 0 StringBuilder sb = new StringBuilder("UPDATE ").append(quote(getCatalogName())).append(".") .append(getTableName()) .append(" SET "); boolean isFirst = true; for (Cell cell : values.getCells()) { if (!isFirst) { sb.append(", "); } else { isFirst = false; } sb.append(quote(cell.getCellName())).append(" = ").append(quote(cell.getCellName())).append(" + ") .append("?"); } isFirst = true; StringBuilder keyClause = new StringBuilder(" WHERE "); for (Cell cell : keys.getCells()) { if (!isFirst) { keyClause.append(" AND "); } else { isFirst = false; } keyClause.append(String.format("%s = ?", quote(cell.getCellName()))); } sb.append(keyClause).append(";"); return sb.toString(); } /* * (non-Javadoc) * * @see com.stratio.deep.commons.querybuilder.QueryBuilder#prepareBatchQuery(java.util.List) */ @Override public String prepareBatchQuery(List<String> statements) { StringBuilder sb = new StringBuilder("BEGIN COUNTER BATCH\n"); for (String statement : statements) { sb.append(statement).append("\n"); } sb.append(" APPLY BATCH;"); return sb.toString(); } }