package foundation.data.object; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.data.meta.field.FieldsRuntime; import foundation.server.config.DBaseType; import foundation.translator.ITranslator; import foundation.util.Util; public class DefaultFilter { private String fieldName; private String fieldValue; private String filterValue; private boolean empty; public DefaultFilter() { } public void load(Entity entity) { fieldName = entity.getString("filter_field"); fieldValue = entity.getString("filter_value"); empty = Util.isEmpty(fieldName) || Util.isEmpty(fieldValue); } public void init(DataObject dataObject) throws Exception { if (empty) { return; } FieldsRuntime fields = dataObject.getTableFieldMetas(); ITranslator translator = fields.getValueTranslator(fieldName); if (translator == null) { return; } DBaseType type = dataObject.getDbaseType(); Filter filter = new Filter(); Object value = translator.toSqlString(type, fieldValue); filter.add(fieldName, value); filterValue = filter.toString(); } public String getFieldName() { return fieldName; } public Object getFieldValue() { return fieldValue; } public String getValue(DataObject dataObject) throws Exception { if (filterValue == null) { init(dataObject); } return filterValue; } public boolean isEmpty() { return empty; } }