view gnv-artifacts/src/main/java/de/intevation/gnv/state/DefaultInputData.java @ 949:11d8cc2deb92 1.0

merged doc/1.0
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:13:58 +0200
parents 05bf8534a35a
children c07d9f9a738c
line wrap: on
line source
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 :

http://dive4elements.wald.intevation.org