package frame.data; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import frame.object.data.IFilterSegmentProvider; public class DataPool implements Iterable, IDataProvider, IFilterSegmentProvider { private Map valueMap; private List cellList; private List lowerNameList; public DataPool() throws Exception { valueMap = new HashMap(); cellList = new ArrayList(); lowerNameList = new ArrayList(); } public void clear() { valueMap.clear(); cellList.clear(); lowerNameList.clear(); } public void add(String name, Variant value) { if (name == null) { return; } //1. name = name.toLowerCase(); valueMap.put(name, value); //2. DataCell cell = new DataCell(name, value); cellList.add(cell); //3. lowerNameList.add(name); } public void add(String name, String value) { Variant variant = new Variant(value); add(name, variant); } public Variant getVariant(String name) { if (name == null) { return new Variant(); } name = name.toLowerCase(); Variant variant = valueMap.get(name); if (variant == null) { variant = new Variant(); } return variant; } public String getString(String name) { Variant variant = getVariant(name); return variant.getStringValue(); } public int getInt(String name, int defaultValue) { Variant variant = getVariant(name); return variant.getIntValue(defaultValue); } @Override public String getFilterValue() { return getString("filter"); } @Override public Iterator iterator() { return cellList.iterator(); } @Override public List getDataNameList() { return lowerNameList; } @Override public boolean containsData(String name) { if (name == null) { return false; } name = name.toLowerCase(); return valueMap.containsKey(name); } @Override public Object getDataValue(String name) { if (name == null) { return null; } name = name.toLowerCase(); Variant variant = valueMap.get(name); if (variant == null) { return null; } return variant.getValue(); } }