/*
* Eoulsan development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public License version 2.1 or
* later and CeCILL-C. This should be distributed with the code.
* If you do not have a copy, see:
*
* http://www.gnu.org/licenses/lgpl-2.1.txt
* http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt
*
* Copyright for this code is held jointly by the Genomic platform
* of the Institut de Biologie de l'École normale supérieure and
* the individual authors. These should be listed in @author doc
* comments.
*
* For more information on the Eoulsan project and its aims,
* or to join the Eoulsan Google group, visit the home page
* at:
*
* http://outils.genomique.biologie.ens.fr/eoulsan
*
*/
package fr.ens.biologie.genomique.eoulsan.core;
import java.io.Serializable;
import fr.ens.biologie.genomique.eoulsan.EoulsanException;
/**
* This class define a parameter. The parameter name is always in lower case.
* @since 1.0
* @author Laurent Jourdren
*/
public class Parameter implements Serializable {
/** Serialization version UID. */
private static final long serialVersionUID = -3788321419921821433L;
private final String name;
private final String value;
/**
* Get the name of the parameter.
* @return Returns the name
*/
public String getName() {
return this.name;
}
/**
* Get the value of the parameter.
* @return Returns the value
*/
public String getValue() {
return this.value;
}
/**
* Get the value of the parameter as a String value.
* @return the value as a String
*/
public String getStringValue() {
return this.value;
}
/**
* Get the value of the parameter as a lower case String value.
* @return the value as a String
*/
public String getLowerStringValue() {
return this.value.toLowerCase();
}
/**
* Get the value of the parameter as a upper case String value.
* @return the value as a String
*/
public String getUpperStringValue() {
return this.value.toUpperCase();
}
/**
* Get the value of the parameter as a integer value.
* @return the value as an integer
*/
public int getIntValue() throws EoulsanException {
try {
return Integer.parseInt(this.value);
} catch (NumberFormatException e) {
throw new EoulsanException(
"Invalid parameter, an integer parameter is need for "
+ this.name + " parameter: " + this.value,
e);
}
}
/**
* * Get the value of the parameter as a integer value and check if this value
* is greater or equals to the min parameter value.
* @param min minimal value (included)
* @return the value as an integer
*/
public int getIntValueGreaterOrEqualsTo(final int min)
throws EoulsanException {
return getIntValueInRange(min, Integer.MAX_VALUE);
}
/**
* Get the value of the parameter as a integer value and check if this value
* is in the correct range.
* @param min minimal value (included)
* @param max maximal value (included)
* @return the value as an integer
*/
public int getIntValueInRange(final int min, final int max)
throws EoulsanException {
final int result = getIntValue();
final int minValue = Math.min(min, max);
final int maxValue = Math.max(min, max);
if (result < minValue) {
throw new EoulsanException("Invalid "
+ this.name + "parameter (The value must be greater than " + minValue
+ "): " + result);
}
if (result > maxValue) {
throw new EoulsanException("Invalid "
+ this.name + "parameter (The value must be lower than " + maxValue
+ "): " + result);
}
return result;
}
/**
* Get the value of the parameter as a double value.
* @return the value as an integer
*/
public double getDoubleValue() throws EoulsanException {
try {
return Double.parseDouble(this.value);
} catch (NumberFormatException e) {
throw new EoulsanException(
"Invalid parameter, an integer parameter is need for "
+ this.name + " parameter: " + this.value,
e);
}
}
/**
* Get the value of the parameter as a boolean value.
* @return the value as a boolean
*/
public boolean getBooleanValue() {
return Boolean.parseBoolean(this.value);
}
@Override
public String toString() {
return this.name + "=" + this.value;
}
//
// Constructor
//
/**
* Public constructor.
* @param name Name of the parameter
* @param value value of the parameter
*/
public Parameter(final String name, final String value) {
if (name == null) {
throw new NullPointerException("Parameter name can't be null");
}
final String nameLower = name.toLowerCase().trim();
if (value == null) {
throw new NullPointerException("Parameter value can't be null");
}
if ("".equals(nameLower)) {
throw new IllegalArgumentException("Parameter name can't be empty");
}
this.name = nameLower;
this.value = value;
}
}