Mercurial > hg > digilib-old
diff common/src/main/java/digilib/util/ParameterMap.java @ 903:7779b37d1d05
refactored into maven modules per servlet type.
can build servlet-api 2.3 and 3.0 via profile now!
author | robcast |
---|---|
date | Tue, 26 Apr 2011 20:24:31 +0200 |
parents | servlet/src/main/java/digilib/util/ParameterMap.java@ba1eb2d821a2 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/src/main/java/digilib/util/ParameterMap.java Tue Apr 26 20:24:31 2011 +0200 @@ -0,0 +1,322 @@ +/* ParameterMap.java -- HashMap of Parameters. + + Digital Image Library servlet components + + Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de) + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + Please read license.txt for the full details. A copy of the GPL + may be found at http://www.gnu.org/copyleft/lgpl.html + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + * Created on 02.09.2003 by casties + * + */ +package digilib.util; + +import java.util.HashMap; + + +/** HashMap of digilib.servlet.Parameter's. + * + * Keys are Strings. Values are Parameters. + * + * @author casties + * + */ +public class ParameterMap { + + protected HashMap<String, Parameter> params; + + protected OptionsSet options; + + /** Default constructor. + * + */ + public ParameterMap() { + params = new HashMap<String, Parameter>(); + options = new OptionsSet(); + initParams(); + } + + /** Constructor with initial size. + * @param size + */ + public ParameterMap(int size) { + params = new HashMap<String, Parameter>(size); + options = new OptionsSet(); + initParams(); + } + + /** Shallow copy constructor. + * Be warned that the maps are only cloned i.e. keys and values are shared! + * @param pm + */ + @SuppressWarnings("unchecked") + public static ParameterMap cloneInstance(ParameterMap pm) { + ParameterMap newPm = new ParameterMap(); + // clone params to this map + newPm.params = (HashMap<String, Parameter>) pm.params.clone(); + newPm.options = (OptionsSet) pm.options.clone(); + return newPm; + } + + + /** Creates new ParameterMap by merging Parameters from another ParameterMap. + * @param pm + * @return + */ + public static ParameterMap getInstance(ParameterMap pm) { + ParameterMap newPm = new ParameterMap(); + // add all params to this map + newPm.params.putAll(pm.params); + newPm.initOptions(); + return newPm; + } + + /** set up parameters + * + */ + protected void initParams() { + // no default parameters + } + + /** set up options + * + */ + protected void initOptions() { + // no default options + } + + /** Get the Parameter with the corresponding key. + * + * Returns null if no element is associated with key. + * + * @param key + * @return + */ + public Parameter get(String key) { + return params.get(key); + } + + /** Get the Parameter with the corresponding key. + * + * Returns null if no element is associated with key. + * + * @param key + * @return + */ + public Object getValue(String key) { + Parameter p = params.get(key); + return (p != null) ? p.getValue() : null; + } + + /** Get the Parameter with the corresponding key. + * + * Returns null if no element is associated with key. + * + * @param key + * @return + */ + public String getAsString(String key) { + Parameter p = params.get(key); + return (p != null) ? p.getAsString() : ""; + } + + /** Get the Parameter with the corresponding key. + * + * Returns null if no element is associated with key. + * + * @param key + * @return + */ + public int getAsInt(String key) { + Parameter p = params.get(key); + return (p != null) ? p.getAsInt() : 0; + } + + /** Get the Parameter with the corresponding key. + * + * Returns null if no element is associated with key. + * + * @param key + * @return + */ + public float getAsFloat(String key) { + Parameter p = params.get(key); + return (p != null) ? p.getAsFloat() : 0f; + } + + /** Get the Parameter with the corresponding key. + * + * Returns null if no element is associated with key. + * + * @param key + * @return + */ + public boolean getAsBoolean(String key) { + Parameter p = params.get(key); + return (p != null) ? p.getAsBoolean() : false; + } + + /** Returns if the Parameter's value has been set. + * + * @param key + * @return + */ + public boolean hasValue(String key) { + Parameter p = params.get(key); + return (p != null) ? p.hasValue() : false; + } + + /** Add the Parameter to the map with a certain key. + * + * Returns the value that was previously associated with key. + * + * @param key + * @param val + * @return + */ + public Parameter put(String key, Parameter val) { + return params.put(key, val); + } + + /** Add the Parameter val to the map, using val's name. + * + * Returns the value that was previously associated with val's name. + * + * @param val + * @return + */ + public Parameter put(Parameter val) { + return params.put(val.getName(), val); + } + + /** Add a new Parameter with name, default and value. + * + * Returns the key that was previously associated with name. + * + * @param name + * @param def + * @param val + * @return + */ + public Parameter newParameter(String name, Object def, Object val) { + Parameter p = new Parameter(name, def, val); + return params.put(name, p); + } + + /** Add a new Parameter with name, default, value and type. + * + * Returns the key that was previously associated with name. + * + * @param name + * @param def + * @param val + * @param type + * @return + */ + public Parameter newParameter(String name, Object def, Object val, int type) { + Parameter p = new Parameter(name, def, val, type); + return params.put(name, p); + } + + /** Set the value of an existing parameter. + * + * Sets the value and returns true if the parameter exists. + * + * @param key + * @param val + * @return + */ + public boolean setValue(String key, Object val) { + Parameter p = params.get(key); + if (p != null) { + p.setValue(val); + return true; + } + return false; + } + + /** Set the value of an existing parameter. + * + * Sets the value and returns true if the parameter exists. + * + * @param key + * @param val + * @return + */ + public boolean setValue(String key, int val) { + Parameter p = params.get(key); + if (p != null) { + p.setValue(val); + return true; + } + return false; + } + + /** Set the value of an existing parameter. + * + * Sets the value and returns true if the parameter exists. + * + * @param key + * @param val + * @return + */ + public boolean setValue(String key, float val) { + Parameter p = params.get(key); + if (p != null) { + p.setValue(val); + return true; + } + return false; + } + + /** Set the value of an existing parameter. + * + * Sets the value and returns true if the parameter exists. + * + * @param key + * @param val + * @return + */ + public boolean setValueFromString(String key, String val) { + Parameter p = params.get(key); + if (p != null) { + p.setValueFromString(val); + return true; + } + return false; + } + + /** Returns of the option has been set. + * @param opt + * @return + */ + public boolean hasOption(String opt) { + return options.hasOption(opt); + } + + public HashMap<String, Parameter> getParams() { + return params; + } + + public void setParams(HashMap<String, Parameter> params) { + this.params = params; + } + + public OptionsSet getOptions() { + return options; + } + + public void setOptions(OptionsSet options) { + this.options = options; + } +}