package com.breakersoft.plow.thrift.dao;
import java.util.Collection;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import com.breakersoft.plow.util.JdbcUtils;
import com.google.common.collect.Lists;
public final class QueryBuilder {
private static final Logger logger =
org.slf4j.LoggerFactory.getLogger(QueryBuilder.class);
final List<String> wheres = Lists.newArrayList();
final List<Object> values = Lists.newArrayList();
public QueryBuilder() { }
public QueryBuilder is(String col, Object value) {
wheres.add(String.format("%s=?", col));
values.add(value);
return this;
}
public QueryBuilder in(String col, Collection<?>c) {
if (c.isEmpty()) {
return this;
}
wheres.add(JdbcUtils.In(col, c.size()));
values.addAll(c);
return this;
}
public QueryBuilder in(String col, Collection<?>c, String cast) {
if (c.isEmpty()) {
return this;
}
wheres.add(JdbcUtils.In(col, c.size(), cast));
values.addAll(c);
return this;
}
public String build() {
final String q = StringUtils.join(wheres, " AND ");
logger.trace(q);
return q;
}
public String build(String query) {
String where = build();
if (where.isEmpty()) {
logger.debug(query);
return query;
}
else {
final String q = String.format("%s WHERE %s", query, where);
logger.info(q);
return q;
}
}
public Object[] values() {
return values.toArray();
}
}