package com.vividsolutions.jump.parameter;
import java.util.*;
/**
* The schema for a {@link ParameterList}.
* Parameter names should be case-retentive (i.e. comparisons are case-insensitive,
* but the case is maintained).
*/
public class ParameterListSchema {
private String[] paramNames;
private Class[] paramClasses;
private Map nameMap = new HashMap();
public ParameterListSchema(String[] paramNames, Class[] paramClasses) {
initialize(paramNames, paramClasses);
}
protected ParameterListSchema initialize(String[] paramNames, Class[] paramClasses) {
this.paramNames = paramNames;
this.paramClasses = paramClasses;
for (int i = 0; i < paramNames.length; i++) {
nameMap.put(paramNames[i], new Integer(i));
}
return this;
}
public String[] getNames() { return paramNames; }
public Class[] getClasses() { return paramClasses; }
public boolean isValidName(String name)
{
return nameMap.containsKey(name);
}
public boolean equals(Object obj) {
return equals((ParameterListSchema)obj);
}
private boolean equals(ParameterListSchema other) {
if (paramNames.length != other.paramNames.length) { return false; }
for (int i = 0; i < paramNames.length; i++) {
if (!paramNames[i].equals(other.paramNames[i])) { return false; }
}
for (int i = 0; i < paramNames.length; i++) {
if (paramClasses[i] != other.paramClasses[i]) { return false; }
}
return true;
}
public Class getClass(String name) {
return paramClasses[((Integer)nameMap.get(name)).intValue()];
}
}