/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.config;
import freenet.l10n.NodeL10n;
import freenet.support.Fields;
import freenet.support.api.IntCallback;
/** Integer config variable */
public class IntOption extends Option<Integer> {
protected final boolean isSize;
public IntOption(SubConfig conf, String optionName, String defaultValueString, int sortOrder, boolean expert,
boolean forceWrite, String shortDesc, String longDesc, IntCallback cb, boolean isSize) {
this(conf, optionName, Fields.parseInt(defaultValueString), sortOrder, expert, forceWrite, shortDesc, longDesc,
cb, isSize);
}
public IntOption(SubConfig conf, String optionName, Integer defaultValue, int sortOrder, boolean expert,
boolean forceWrite, String shortDesc, String longDesc, IntCallback cb, boolean isSize) {
super(conf, optionName, cb, sortOrder, expert, forceWrite, shortDesc, longDesc, Option.DataType.NUMBER);
this.defaultValue = defaultValue;
this.currentValue = defaultValue;
this.isSize = isSize;
}
@Override
protected Integer parseString(String val) throws InvalidConfigValueException {
Integer x;
try {
x = Fields.parseInt(val);
} catch (NumberFormatException e) {
throw new InvalidConfigValueException(l10n("parseError", "val", val));
}
return x;
}
private String l10n(String key, String pattern, String value) {
return NodeL10n.getBase().getString("IntOption." + key, pattern, value);
}
@Override
protected String toDisplayString(Integer val) {
return Fields.intToString(val, isSize);
}
@Override
protected String toString(Integer val) {
return Fields.intToString(val, false);
}
}