Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/state/DefaultInputData.java @ 875:5e9efdda6894
merged gnv-artifacts/1.0
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:13:56 +0200 |
parents | 05bf8534a35a |
children | c07d9f9a738c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/DefaultInputData.java Fri Sep 28 12:13:56 2012 +0200 @@ -0,0 +1,165 @@ +package de.intevation.gnv.state; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.log4j.Logger; + +/** + * The default implementation of <code>InputData</code>. This object stores + * multiple values separated by {@link #VALUE_SEPARATOR} for a specific key. + * + * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a> + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class DefaultInputData implements InputData { + + /** + * + */ + private static final long serialVersionUID = 4308041648698108066L; + + private static final Logger logger = Logger.getLogger(DefaultInputData.class); + + /** + * The character used to separate the different values. + */ + public final static String VALUE_SEPARATOR = " , "; + + /** + * The key/name of this object. + */ + protected String name; + + /** + * Values separated by {@link #VALUE_SEPARATOR}. + */ + protected String value; + + /** + * Descriptions for values used for user interface creation. Each value + * should have an own description in this map. + */ + protected Map description; + + /** + * An extra object. Might be everything. + */ + protected Object object; + + + /** + * Constructor + */ + public DefaultInputData(String name, String value) { + this.name = name; + this.value = value; + } + + + public DefaultInputData(String name, Object object) { + this.name = name; + this.object = object; + } + + + public DefaultInputData( + String name, + String value, + Object object) + { + this.name = name; + this.object = object; + this.value = value; + } + + + public String getName() { + return this.name; + } + + + public String getValue() { + return this.value; + } + + + public void setObject(Object object) { + this.object = object; + } + + + public Object getObject() { + return object; + } + + /** + * + * @param key Key needs to be a single value of {@link #value}. + * @return the description. + */ + public String getDescription(String key) { + if (description == null) + return null; + + return (String) description.get(key); + } + + /** + * Return all descriptions as array. + * + * @return descriptions as array. + */ + public String[] getDescription() { + String[] values = splitValue(); + int length = values.length; + + String[] description = new String[length]; + for (int i = 0; i < length; i++) { + description[i] = (String) this.description.get(values[i]); + } + + return description; + } + + + public void setDescription(String[] description) { + if (this.description == null) + this.description = new HashMap(); + + String[] values = splitValue(); + + int length = values.length; + int descLength = description.length; + + for (int i = 0; i < length; i++) { + if (i < descLength) { + this.description.put(values[i], description[i]); + } + else { + break; + } + } + } + + + @Override + public String toString() { + return this.name + "==> " + this.value; + } + + + public void concartValue(String value) { + this.value = this.value + VALUE_SEPARATOR + value; + } + + + public String[] splitValue() { + if (this.value != null){ + return this.value.split(VALUE_SEPARATOR); + } + return null; + } + +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :