KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > util > ConfigNumber


1 package com.quadcap.util;
2
3 /* Copyright 1999 - 2003 Quadcap Software. All rights reserved.
4  *
5  * This software is distributed under the Quadcap Free Software License.
6  * This software may be used or modified for any purpose, personal or
7  * commercial. Open Source redistributions are permitted. Commercial
8  * redistribution of larger works derived from, or works which bundle
9  * this software requires a "Commercial Redistribution License"; see
10  * http://www.quadcap.com/purchase.
11  *
12  * Redistributions qualify as "Open Source" under one of the following terms:
13  *
14  * Redistributions are made at no charge beyond the reasonable cost of
15  * materials and delivery.
16  *
17  * Redistributions are accompanied by a copy of the Source Code or by an
18  * irrevocable offer to provide a copy of the Source Code for up to three
19  * years at the cost of materials and delivery. Such redistributions
20  * must allow further use, modification, and redistribution of the Source
21  * Code under substantially the same terms as this license.
22  *
23  * Redistributions of source code must retain the copyright notices as they
24  * appear in each source code file, these license terms, and the
25  * disclaimer/limitation of liability set forth as paragraph 6 below.
26  *
27  * Redistributions in binary form must reproduce this Copyright Notice,
28  * these license terms, and the disclaimer/limitation of liability set
29  * forth as paragraph 6 below, in the documentation and/or other materials
30  * provided with the distribution.
31  *
32  * The Software is provided on an "AS IS" basis. No warranty is
33  * provided that the Software is free of defects, or fit for a
34  * particular purpose.
35  *
36  * Limitation of Liability. Quadcap Software shall not be liable
37  * for any damages suffered by the Licensee or any third party resulting
38  * from use of the Software.
39  */

40
41 import java.util.List JavaDoc;
42
43 /**
44  * This class represents a configuration value which is a number
45  *
46  * @author Stan Bailes
47  */

48 public class ConfigNumber extends MutableInteger implements ConfigVar {
49     String JavaDoc name;
50     String JavaDoc stringVal;
51
52     public ConfigNumber() {}
53
54     public final void init(String JavaDoc name, String JavaDoc val)
55     throws NumberFormatException JavaDoc
56     {
57     this.name = name;
58     this.notify(val);
59     }
60     
61     public final String JavaDoc getName() {
62     return name;
63     }
64
65     public final String JavaDoc getValue() {
66     return stringVal;
67     }
68
69     public final void notify(String JavaDoc newValue) {
70         if (newValue.indexOf(',') >= 0 || newValue.indexOf('-') >= 0) {
71             setIntValue(parseBitList(newValue));
72         } else {
73             setIntValue(Integer.parseInt(newValue));
74         }
75     this.stringVal = newValue;
76     }
77
78     public int parseBitList(String JavaDoc str) {
79         List JavaDoc list = Util.split(str, ',');
80         int ret = 0;
81         
82         for (int i = 0; i < list.size(); i++) {
83             int first, last;
84             final String JavaDoc t = list.get(i).toString();
85             final int idx = t.indexOf('-');
86             if (idx > 0) {
87                 first = Integer.parseInt(t.substring(0, idx));
88                 last = Integer.parseInt(t.substring(idx+1));
89                 if (last < first) last = first;
90             } else {
91                 try {
92                     first = last = Integer.parseInt(t);
93                 } catch (Throwable JavaDoc ex) {
94                     first = 1;
95                     last = 0;
96                 }
97             }
98             for (int test = first; test <= last; test++) {
99                 ret += (1 << test);
100             }
101         }
102         return ret;
103     }
104     
105     private static final Class JavaDoc configClass = new ConfigNumber().getClass();
106     
107     public static ConfigNumber find(String JavaDoc name, String JavaDoc dflt) {
108     ConfigNumber ret = (ConfigNumber)Config.find(configClass, name, dflt);
109     return ret;
110     }
111 }
112
Popular Tags