package com.vividsolutions.jump.parameter;
import java.util.*;
import com.vividsolutions.jts.util.Assert;
import com.vividsolutions.jump.util.LangUtil;
/**
* A strongly-typed list of parameters for passing to a component
*/
public class ParameterList {
private ParameterListSchema schema;
private Map params = new HashMap();
public ParameterList(ParameterListSchema schema) {
initialize(schema);
}
public ParameterList(ParameterList other) {
initialize(other.getSchema());
for (Iterator i = Arrays.asList(other.getSchema().getNames()).iterator(); i.hasNext(); ) {
String name = (String) i.next();
setParameter(name, other.getParameter(name));
}
}
protected ParameterList initialize(ParameterListSchema schema) {
this.schema = schema;
return this;
}
public ParameterListSchema getSchema() {
return schema;
}
public ParameterList setParameter(String name, Object value) {
params.put(name, value);
return this;
}
public boolean equals(Object obj) {
return equals((ParameterList) obj);
}
private boolean equals(ParameterList other) {
if (!schema.equals(other.schema)) {
return false;
}
for (Iterator i = params.keySet().iterator(); i.hasNext();) {
String name = (String) i.next();
if (!LangUtil.bothNullOrEqual(params.get(name), other.params
.get(name))) {
return false;
}
}
return true;
}
public Object getParameter(String name) {
return params.get(name);
}
public String getParameterString(String name) {
return (String) params.get(name);
}
public int getParameterInt(String name)
{
Object value = params.get(name);
if (value instanceof String)
return Integer.parseInt((String) value);
return ((Integer) params.get(name)).intValue();
}
}