package qa.qcri.aidr.common.filter;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class DeserializeFilters {
private static Logger logger = Logger.getLogger(DeserializeFilters.class);
public DeserializeFilters() {}
public JsonQueryList deserializeConstraints(final String queryString) {
Gson jsonObject = new GsonBuilder().serializeNulls().disableHtmlEscaping()
.serializeSpecialFloatingPointValues()
.create();
if(!StringUtils.isEmpty(queryString)){
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(queryString);
JsonArray constraintsArray = null;
if (obj.has("constraints")) { // should always be true
constraintsArray = obj.get("constraints") != null ? obj.get("constraints").getAsJsonArray() : new JsonArray();
//logger.debug("constraints: " + constraintsArray);
}
JsonQueryList queryList = new JsonQueryList();
if (constraintsArray.size() > 0) {
for (int i = 0;i < constraintsArray.size();i++) {
try {
JsonElement q = constraintsArray.get(i);
//System.out.println("constraint " + i + ": " + q);
GenericInputQuery constraint = jsonObject.fromJson(q, GenericInputQuery.class);
queryList.createConstraint(constraint);
} catch (Exception e) {
logger.error("Error in deserializing received constraints",e);
return null;
}
}
}
logger.debug("Output: deserialized queryList: " + queryList);
return queryList;
}
logger.debug("Output: deserialized queryList: null" );
return null;
}
}