view servlet/src/digilib/util/Parameter.java @ 636:7049579a0097 jquery

last and next page works now implemented redisplay function (only tested with fullscreen) parameters that are changed need to be in data.queryParams to get in the url on redisplay
author robcast
date Tue, 18 Jan 2011 21:30:03 +0100
parents 0885f5ca5b24
children
line wrap: on
line source

/* Parameter -- General digilib parameter class.

 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.io.File;
import java.io.IOException;


/**
 * General digilib parameter class.
 * 
 * @author casties
 *  
 */
public class Parameter {
	/** real value */
	protected Object value = null;

	/** default value */
	protected Object defval = null;

	/** parameter name (e.g. in config file) */
	protected String name = null;

	/** parameter type */
	protected int type = 0;

	/**
	 * Default constructor.
	 *  
	 */
	public Parameter() {
		super();
	}

	/**
	 * Constructor with name, default, and value.
	 * 
	 * @param value
	 * @param defval
	 */
	public Parameter(String name, Object defval, Object value) {
		this.name = name;
		this.value = value;
		this.defval = defval;
	}

	/**
	 * Constructor with name, default, value, and type.
	 * 
	 * @param value
	 * @param defval
	 */
	public Parameter(String name, Object defval, Object value, int type) {
		this.name = name;
		this.value = value;
		this.defval = defval;
		this.type = type;
	}

	/**
	 * Is the value valid.
	 * 
	 * @return
	 */
	public boolean hasValue() {
		return (value != null);
	}

	/**
	 * Try to set the value from a String.
	 * 
	 * Tries to convert the String to the same type as the default value. Sets
	 * the value anyway if the default is null. Returns if the value could be
	 * set.
	 * 
	 * @param val
	 * @return
	 */
	public boolean setValueFromString(String val) {
		if (val == null) {
			val = "";
		}
		// no default matches all
		if (defval == null) {
			this.value = val;
			return true;
		}
		Class<? extends Object> c = defval.getClass();
		// take String as is
		if (c == String.class) {
			this.value = val;
			return true;
		}
		// set File
		if (c == File.class) {
			this.value = new File(val);
			return true;
		}
		// set Options
		if (c == OptionsSet.class) {
			this.value = new OptionsSet(val);
			return true;
		}
		// set Boolean if string == "true"
		if (c == Boolean.class) {
			this.value = new Boolean(val.compareToIgnoreCase("true") == 0);
			return true;
		}
		try {
			// set Integer
			if (c == Integer.class) {
				this.value = new Integer(Integer.parseInt(val));
				return true;
			}
			// set Float
			if (c == Float.class) {
				this.value = new Float(Float.parseFloat(val));
				return true;
			}
		} catch (NumberFormatException e) {
		}
		// then it's unknown
		return false;
	}

	/**
	 * Get the default as Object.
	 * 
	 * @return
	 */
	public Object getDefault() {
		return defval;
	}

	/**
	 * Set the default.
	 * 
	 * @param defval
	 */
	public void setDefault(Object defval) {
		this.defval = defval;
	}

	/**
	 * Get the value as Object.
	 * 
	 * Returns the default if the value is not set.
	 * 
	 * @return
	 */
	public Object getValue() {
		return (value != null) ? value : defval;
	}

	public int getAsInt() {
		Integer i = (Integer) getValue();
		return (i != null) ? i.intValue() : 0;
	}

	public float getAsFloat() {
		Float f = (Float) getValue();
		return (f != null) ? f.floatValue() : 0f;
	}

	public String getAsString() {
		Object s = getValue();
		if (s == null) {
			return "";
		}
		if (s.getClass() == File.class) {
			try {
				return ((File) s).getCanonicalPath();
			} catch (IOException e) {
				return "ERR: " + s.toString();
			}
		}
		return s.toString();
	}

	public boolean getAsBoolean() {
		Boolean b = (Boolean) getValue();
		return (b != null) ? b.booleanValue() : false;
	}

	public String[] parseAsArray(String separator) {
		String s = getAsString();
		String[] sa = s.split(separator);
		return sa;
	}

	public float[] parseAsFloatArray(String separator) {
		String s = getAsString();
		String[] sa = s.split(separator);
		float[] fa = null;
		try {
			int n = sa.length;
			fa = new float[n];
			for (int i = 0; i < n; i++) {
				float f = Float.parseFloat(sa[i]);
				fa[i] = f;
			}
		} catch (Exception e) {
		}

		return fa;
	}

	/**
	 * Set the value.
	 * 
	 * @param value
	 */
	public void setValue(Object value) {
		this.value = value;
	}

	/**
	 * Set the value.
	 * 
	 * @param value
	 */
	public void setValue(int value) {
		this.value = new Integer(value);
	}

	/**
	 * Set the value.
	 * 
	 * @param value
	 */
	public void setValue(float value) {
		this.value = new Float(value);
	}

	/**
	 * @return
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return
	 */
	public int getType() {
		return type;
	}

	/**
	 * @param type
	 */
	public void setType(int type) {
		this.type = type;
	}

}