package org.openstack.atlas.service.domain.pojos;
import java.util.ArrayList;
import java.util.List;
public class CustomQuery {
private static final int strInitSize = 256;
private List<QueryParameter> queryParameters;
private List<QueryParameter> unquotedParameters;
private String selectClause;
private Integer limit;
private Integer offset;
private String WherePrefix = " WHERE ";
public CustomQuery() {
}
public CustomQuery(String selectClause) {
queryParameters = new ArrayList<QueryParameter>();
this.selectClause = selectClause;
}
public void clearParameters() {
queryParameters = new ArrayList<QueryParameter>();
}
public void clearUnquotedParameters() {
unquotedParameters = new ArrayList<QueryParameter>();
}
public void addUnquotedParam(String pname, Object val) {
if (unquotedParameters == null) {
clearUnquotedParameters();
}
QueryParameter param = new QueryParameter();
param.setQname(null);
param.setOp(null);
param.setPname(pname);
param.setValue(val);
unquotedParameters.add(param);
}
public void addParam(String qname, String op, String pname, Object val) {
if (queryParameters == null) {
clearParameters();
}
QueryParameter param = new QueryParameter();
param.setQname(qname);
param.setOp(op);
param.setPname(pname);
param.setValue(val);
queryParameters.add(param);
}
public String getQueryString() {
String frm;
String qStr;
String out;
int i;
StringBuilder where = new StringBuilder(strInitSize);
QueryParameter param;
if (queryParameters == null || queryParameters.size() < 1) {
return selectClause;
}
where.append(WherePrefix);
for (i = 0; i < queryParameters.size(); i++) {
param = queryParameters.get(i);
qStr = String.format("%s %s :%s", param.getQname(), param.getOp(), param.getPname());
if (i < queryParameters.size() - 1) {
qStr += " and ";
}
where.append(qStr);
}
out = String.format("%s%s", selectClause, where.toString());
return out;
}
public List<QueryParameter> getQueryParameters() {
if(queryParameters == null) {
clearParameters();
}
return queryParameters;
}
public void setQueryParameters(List<QueryParameter> queryParameters) {
this.queryParameters = queryParameters;
}
public List<QueryParameter> getUnquotedParameters() {
if(unquotedParameters == null) {
clearUnquotedParameters();
}
return unquotedParameters;
}
public void setUnquotedParameters(List<QueryParameter> unquotedParameters) {
this.unquotedParameters = unquotedParameters;
}
public String getSelectClause() {
return selectClause;
}
public void setSelectClause(String selectClause) {
this.selectClause = selectClause;
}
@Override
public String toString() {
String out = getQueryString();
return out;
}
public Integer getLimit() {
return limit;
}
public void setLimit(Integer limit) {
this.limit = limit;
}
public Integer getOffset() {
return offset;
}
public void setOffset(Integer offset) {
this.offset = offset;
}
public String getWherePrefix() {
return WherePrefix;
}
public void setWherePrefix(String WherePrefix) {
this.WherePrefix = WherePrefix;
}
}