package siena;
import siena.embed.EmbeddedMap;
import siena.embed.JsonDeserializeAs;
import siena.embed.JsonDumpable;
import siena.embed.JsonRestorable;
import siena.embed.JsonSerializer;
/**
* @author mandubian <pascal.voitot@mandubian.org>
*
*/
@JsonDeserializeAs(QueryFilter.QueryFilterJson.class)
public abstract class QueryFilter implements JsonDumpable {
/* (non-Javadoc)
* @see siena.embed.JsonDumpable#dump()
*/
public Json dump() {
QueryFilterJson jsonFilter = new QueryFilterJson();
jsonFilter.type = this.getClass().getName();
try {
jsonFilter.value = JsonSerializer.serializeMap(this);
}catch(SienaException e) {
throw e;
} catch(Exception e) {
throw new SienaException(e);
}
return JsonSerializer.serialize(jsonFilter);
}
@EmbeddedMap
public static class QueryFilterJson implements JsonRestorable<QueryFilter>{
public String type;
public Json value;
public QueryFilter restore() {
try {
Class<?> clazz = Class.forName(this.type);
QueryFilter filter = (QueryFilter)JsonSerializer.deserializeMap(clazz, this.value);
return filter;
}catch(Exception ex) {
throw new SienaException("Unable to restore QueryFilter", ex);
}
}
}
}