package wrapper; import java.util.*; //import convert.*; final class ParamValueTable extends HashMap implements ParamValueTableReader { private int paramtype; ParamValueTable(String paramType){ super(); if (paramType.equals("String")) paramtype=1; else if (paramType.equals("Gentype")) paramtype=2; else throw new RuntimeException("Cannot create a parameter value table for parameters of type "+paramType); } void add(String name, Object value) { if (paramtype == 1 & !value.getClass().getName().equals("java.lang.String")) throw new ParameterTypeException("Value has to be of type java.lang.String, yet you gave a value of type " + value.getClass().getName()); else if (paramtype == 2 &!testIfGentype(value)) throw new ParameterTypeException("Value has to be of type convert.Gentype, yet you gave a value of type " + value.getClass().getName()); //ADD: check validity of parameter name with repository! else if (containsKey(name)) throw new ParameterNameException("Parameter already exists."); else put(name, value); } void set(String name, Object value) { if (paramtype == 1 & !value.getClass().getName().equals("java.lang.String")) throw new ParameterTypeException("Value has to be of type java.lang.String, yet you gave a value of type " + value.getClass().getName()); else if (paramtype == 2 & ! testIfGentype(value)) throw new ParameterTypeException("Value has to be of type convert.Gentype, yet you gave a value of type " + value.getClass().getName()); else if (!containsKey(name)) throw new ParameterNameException("Unknown parameter name."); else put(name, value); } public Object get(String name){ if (!containsKey(name)) throw new ParameterNameException("Unknown parameter name."); return super.get(name); } boolean containsName(String name) {return containsKey(name);} private boolean testIfGentype(Object value) { //not yest implemented return false; } }