/* 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.LongCallback;
/** Long config variable */
public class LongOption extends Option<Long> {
protected final boolean isSize;
public LongOption(SubConfig conf, String optionName, String defaultValueString, int sortOrder, boolean expert,
boolean forceWrite, String shortDesc, String longDesc, LongCallback cb, boolean isSize) {
this(conf, optionName, Fields.parseLong(defaultValueString), sortOrder, expert, forceWrite, shortDesc,
longDesc, cb, isSize);
}
public LongOption(SubConfig conf, String optionName, Long defaultValue, int sortOrder, boolean expert,
boolean forceWrite, String shortDesc, String longDesc, LongCallback 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 Long parseString(String val) throws InvalidConfigValueException {
Long x;
try {
x = Fields.parseLong(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("LongOption." + key, pattern, value);
}
@Override
protected String toDisplayString(Long val) {
return Fields.longToString(val, isSize);
}
@Override
protected String toString(Long val) {
return Fields.longToString(val, false);
}
}