package com.sleepycat.je.config;
import de.ovgu.cide.jakutil.*;
/**
* A JE configuration parameter with an integer value.
*/
public class IntConfigParam extends ConfigParam {
private static final String DEBUG_NAME=IntConfigParam.class.getName();
private Integer min;
private Integer max;
IntConfigParam( String configName, Integer minVal, Integer maxVal, Integer defaultValue, boolean mutable, String description){
super(configName,defaultValue.toString(),mutable,description);
min=minVal;
max=maxVal;
}
private void validate( Integer value) throws IllegalArgumentException {
if (value != null) {
if (min != null) {
if (value.compareTo(min) < 0) {
throw new IllegalArgumentException(DEBUG_NAME + ":" + " param "+ name+ " doesn't validate, "+ value+ " is less than min of "+ min);
}
}
if (max != null) {
if (value.compareTo(max) > 0) {
throw new IllegalArgumentException(DEBUG_NAME + ":" + " param "+ name+ " doesn't validate, "+ value+ " is greater than max of "+ max);
}
}
}
}
public void validateValue( String value) throws IllegalArgumentException {
try {
validate(new Integer(value));
}
catch ( NumberFormatException e) {
throw new IllegalArgumentException(DEBUG_NAME + ": " + value+ " not valid value for "+ name);
}
}
public String getExtraDescription(){
StringBuffer minMaxDesc=new StringBuffer();
if (min != null) {
minMaxDesc.append("# minimum = ").append(min);
}
if (max != null) {
if (min != null) {
minMaxDesc.append("\n");
}
minMaxDesc.append("# maximum = ").append(max);
}
return minMaxDesc.toString();
}
}