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<DataCell>, IDataProvider, IFilterSegmentProvider {
|
|
private Map<String, Variant> valueMap;
|
private List<DataCell> cellList;
|
private List<String> lowerNameList;
|
|
public DataPool() throws Exception {
|
valueMap = new HashMap<String, Variant>();
|
cellList = new ArrayList<DataCell>();
|
lowerNameList = new ArrayList<String>();
|
}
|
|
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<DataCell> iterator() {
|
return cellList.iterator();
|
}
|
|
@Override
|
public List<String> 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();
|
}
|
}
|