package org.etk.kernel.container.xml;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
//import org.exoplatform.container.xml.ObjectParameter;
//import org.exoplatform.container.xml.Parameter;
//import org.exoplatform.container.xml.PropertiesParam;
//import org.exoplatform.container.xml.ValueParam;
//import org.exoplatform.container.xml.ValuesParam;
public class InitParams extends HashMap<String, Object> {
public InitParams() {
}
public ValuesParam getValuesParam(String name) {
return (ValuesParam) get(name);
}
public ValueParam getValueParam(String name) {
return (ValueParam) get(name);
}
public PropertiesParam getPropertiesParam(String name) {
return (PropertiesParam) get(name);
}
public ObjectParameter getObjectParam(String name) {
return (ObjectParameter) get(name);
}
public <T> List<T> getObjectParamValues(Class<T> type) {
List<T> list = new ArrayList<T>();
for (Object o : values()) {
if (o instanceof ObjectParameter) {
ObjectParameter param = (ObjectParameter) o;
Object paramValue = param.getObject();
if (type.isInstance(paramValue)) {
T t = type.cast(paramValue);
list.add(t);
}
}
}
return list;
}
public Parameter getParameter(String name) {
return (Parameter) get(name);
}
public void addParameter(Parameter param) {
put(param.getName(), param);
}
public Parameter removeParameter(String name) {
return (Parameter) remove(name);
}
// --------------xml binding---------------------------------
public void addParam(Object o) {
Parameter param = (Parameter) o;
put(param.getName(), param);
}
public Iterator<ValueParam> getValueParamIterator() {
return getValueIterator(ValueParam.class);
}
public Iterator<ValuesParam> getValuesParamIterator() {
return getValueIterator(ValuesParam.class);
}
public Iterator getPropertiesParamIterator() {
return getValueIterator(PropertiesParam.class);
}
public Iterator getObjectParamIterator() {
return getValueIterator(ObjectParameter.class);
}
private <T> Iterator<T> getValueIterator(Class<T> type) {
List<T> list = new ArrayList<T>();
for (Object o : values()) {
if (type.isInstance(o)) {
T t = type.cast(o);
list.add(t);
}
}
return list.iterator();
}
}