00001
package com.quadcap.util;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
import java.util.List;
00042
00043
00044
00045
00046
00047
00048 public class ConfigNumber extends MutableInteger implements
ConfigVar {
00049 String
name;
00050 String
stringVal;
00051
00052 public ConfigNumber() {}
00053
00054 public final void init(String name, String val)
00055
throws NumberFormatException
00056 {
00057
this.name =
name;
00058
this.notify(val);
00059 }
00060
00061 public final String
getName() {
00062
return name;
00063 }
00064
00065 public final String
getValue() {
00066
return stringVal;
00067 }
00068
00069 public final void notify(String newValue) {
00070
if (newValue.indexOf(
',') >= 0 || newValue.indexOf(
'-') >= 0) {
00071 setIntValue(
parseBitList(newValue));
00072 }
else {
00073 setIntValue(Integer.parseInt(newValue));
00074 }
00075
this.stringVal = newValue;
00076 }
00077
00078 public int parseBitList(String str) {
00079 List list =
Util.split(str,
',');
00080
int ret = 0;
00081
00082
for (
int i = 0; i < list.size(); i++) {
00083
int first, last;
00084
final String t = list.get(i).toString();
00085
final int idx = t.indexOf(
'-');
00086
if (idx > 0) {
00087 first = Integer.parseInt(t.substring(0, idx));
00088 last = Integer.parseInt(t.substring(idx+1));
00089
if (last < first) last = first;
00090 }
else {
00091
try {
00092 first = last = Integer.parseInt(t);
00093 }
catch (Throwable ex) {
00094 first = 1;
00095 last = 0;
00096 }
00097 }
00098
for (
int test = first; test <= last; test++) {
00099 ret += (1 << test);
00100 }
00101 }
00102
return ret;
00103 }
00104
00105 private static final Class
configClass =
new ConfigNumber().getClass();
00106
00107 public static ConfigNumber
find(String name, String dflt) {
00108 ConfigNumber ret = (ConfigNumber)
Config.find(
configClass, name, dflt);
00109
return ret;
00110 }
00111 }