package org.azavea.otm.filters;
import org.azavea.otm.data.UDFCollectionDefinition;
import org.json.JSONObject;
import java.util.Arrays;
import static com.google.common.collect.Iterables.getLast;
public class DefaultFilter extends BooleanFilter {
private final Object value;
public DefaultFilter(String key, String identifier, String label, JSONObject fieldDef) {
super(key, identifier, label);
// We need to look up the default value from the field definition.
// This will be a sub field if the field is a collection UDF
if (fieldDef.optBoolean("is_collection")) {
final UDFCollectionDefinition udfDef = new UDFCollectionDefinition(fieldDef);
final String subField = getLast(Arrays.asList(identifier.split("[.]")));
final JSONObject subFieldDef = udfDef.groupTypesByName().get(subField);
this.value = subFieldDef.opt("default");
} else {
this.value = fieldDef.opt("default");
}
}
@Override
public JSONObject getFilterObject() {
return buildNestedFilter(this.identifier, "IS", this.value);
}
}