package qa.qcri.aidr.common.filter;
import java.io.Serializable;
import java.util.Date;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
//import org.codehaus.jackson.annotate.JsonProperty;
/*
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "query_type")
@JsonSubTypes({
@JsonSubTypes.Type(value = DateQueryJsonObject.class, name = "date_query"),
@JsonSubTypes.Type(value = ClassifierQueryJsonObject.class, name = "classifier_query") })
*/
@SuppressWarnings("serial")
@XmlRootElement(name="QueryJsonObject")
public abstract class QueryJsonObject implements Serializable {
@XmlElement public QueryType queryType;
@XmlElement public ComparatorType comparator;
@XmlElement public long timestamp;
@XmlElement public String classifier_code; // corresponds to "attribute_code" in nominal_attributes object
@XmlElement public String label_code; // corresponds to "label_code" in nominal_attributes object
@XmlElement public float min_confidence;
public static final float DEFAULT_CONFIDENCE_VALUE = (float) 0.0;
public QueryJsonObject() {
min_confidence = DEFAULT_CONFIDENCE_VALUE;
}
abstract public QueryType getQueryType();
abstract public void setQueryType(QueryType queryType);
abstract public String getClassifierCode();
abstract public void setClassifierCode(String classifier_code);
abstract public String getLabelCode();
abstract public void setLabelCode(String label_code);
abstract public float getConfidence();
abstract public void setConfidence( Float confidence);
abstract public ComparatorType getComparator();
abstract public void setComparator(ComparatorType comparator);
abstract public long getTime();
abstract public void setTime(long time);
abstract public Date getDate();
@Override
public String toString() {
StringBuilder object = new StringBuilder();
object.append("{\"query_type\": \"").append(queryType).append("\", ");
if (classifier_code != null) {
object.append("\"classifier_code\": \"").append(classifier_code).append("\", ");
} else {
object.append("\"classifier_code\": null, ");
}
object.append("\"timestamp\": ").append(timestamp).append(", ");
object.append("\"comparator\": \"").append(comparator).append("\", ");
if (label_code != null) {
object.append("\"label_code\": \"").append(label_code).append("\", ");
} else {
object.append("\"label_code\": null, ");
}
object.append("\"min_confidence\": ").append(min_confidence).append("}");
return object.toString();
}
}