package qa.qcri.aidr.common.filter;
import java.io.Serializable;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonProperty;
@SuppressWarnings("serial")
@XmlRootElement(name="JsonQueryList")
public class JsonQueryList implements Serializable {
@XmlElement private ArrayList<GenericInputQuery> constraints;
public JsonQueryList() {
constraints = new ArrayList<GenericInputQuery>();
}
public void setConstraints(JsonQueryList query) {
if (query != null) constraints.addAll(query.constraints);
}
public void createConstraint(GenericInputQuery query) {
if (query != null) constraints.add(query);
}
@JsonProperty("constraints")
public ArrayList<QueryJsonObject> getConstraints() {
ArrayList<QueryJsonObject> temp = new ArrayList<QueryJsonObject>();
if (constraints != null) {
for (GenericInputQuery g: constraints) {
QueryJsonObject t = (QueryJsonObject) g;
temp.add(t);
}
}
return temp;
}
@Override
public String toString() {
StringBuilder object = new StringBuilder();
int constraintCount = 0;
object.append("{\"constraints\": [");
if (constraints != null) {
for (GenericInputQuery q: constraints) {
object.append("{\"query_type\": \"").append(q.queryType).append("\", ");
if (q.classifier_code != null) {
object.append("\"classifier_code\": \"").append(q.classifier_code).append("\", ");
} else {
object.append("\"classifier_code\": null, ");
}
object.append("\"comparator\": \"").append(q.comparator).append("\", ");
object.append("\"timestamp\": ").append(q.timestamp).append(", ");
if (q.label_code != null) {
object.append("\"label_code\": \"").append(q.label_code).append("\", ");
} else {
object.append("\"label_code\": null, ");
}
object.append("\"min_confidence\": ").append(q.min_confidence).append("},");
++constraintCount;
}
}
if (constraintCount == 0)
object.append("]}");
else
object.deleteCharAt(object.length()-1).append("]}");
return object.toString();
}
}