001: /*
002:
003: ============================================================================
004: The Apache Software License, Version 1.1
005: ============================================================================
006:
007: Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
008:
009: Redistribution and use in source and binary forms, with or without modifica-
010: tion, are permitted provided that the following conditions are met:
011:
012: 1. Redistributions of source code must retain the above copyright notice,
013: this list of conditions and the following disclaimer.
014:
015: 2. Redistributions in binary form must reproduce the above copyright notice,
016: this list of conditions and the following disclaimer in the documentation
017: and/or other materials provided with the distribution.
018:
019: 3. The end-user documentation included with the redistribution, if any, must
020: include the following acknowledgment: "This product includes software
021: developed by the Apache Software Foundation (http://www.apache.org/)."
022: Alternately, this acknowledgment may appear in the software itself, if
023: and wherever such third-party acknowledgments normally appear.
024:
025: 4. The names "Batik" and "Apache Software Foundation" must not be
026: used to endorse or promote products derived from this software without
027: prior written permission. For written permission, please contact
028: apache@apache.org.
029:
030: 5. Products derived from this software may not be called "Apache", nor may
031: "Apache" appear in their name, without prior written permission of the
032: Apache Software Foundation.
033:
034: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
035: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
036: FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
037: APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
038: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
039: DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
040: OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
041: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
042: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
043: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
044:
045: This software consists of voluntary contributions made by many individuals
046: on behalf of the Apache Software Foundation. For more information on the
047: Apache Software Foundation, please see <http://www.apache.org/>.
048:
049: */
050:
051: package org.apache.batik.util.gui.resource;
052:
053: import java.util.ArrayList;
054: import java.util.List;
055: import java.util.MissingResourceException;
056: import java.util.ResourceBundle;
057: import java.util.StringTokenizer;
058:
059: /**
060: * This class offers convenience methods to decode
061: * resource bundle entries
062: *
063: * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
064: * @version $Id$
065: */
066: public class ResourceManager {
067: /**
068: * The managed resource bundle
069: */
070: protected ResourceBundle bundle;
071:
072: /**
073: * Creates a new resource manager
074: * @param rb a resource bundle
075: */
076: public ResourceManager(ResourceBundle rb) {
077: bundle = rb;
078: }
079:
080: /**
081: * Returns the string that is mapped with the given key
082: * @param key a key in the resource bundle
083: * @throws MissingResourceException if key is not the name of a resource
084: */
085: public String getString(String key) throws MissingResourceException {
086: return bundle.getString(key);
087: }
088:
089: /**
090: * Returns the tokens that compose the string mapped
091: * with the given key. Delimiters (" \t\n\r\f") are not returned.
092: * @param key a key of the resource bundle
093: * @throws MissingResourceException if key is not the name of a resource
094: */
095: public List getStringList(String key)
096: throws MissingResourceException {
097: return getStringList(key, " \t\n\r\f", false);
098: }
099:
100: /**
101: * Returns the tokens that compose the string mapped
102: * with the given key. Delimiters are not returned.
103: * @param key a key of the resource bundle
104: * @param delim the delimiters of the tokens
105: * @throws MissingResourceException if key is not the name of a resource
106: */
107: public List getStringList(String key, String delim)
108: throws MissingResourceException {
109: return getStringList(key, delim, false);
110: }
111:
112: /**
113: * Returns the tokens that compose the string mapped
114: * with the given key
115: * @param key a key of the resource bundle
116: * @param delim the delimiters of the tokens
117: * @param returnDelims if true, the delimiters are returned in the list
118: * @throws MissingResourceException if key is not the name of a resource
119: */
120: public List getStringList(String key, String delim,
121: boolean returnDelims) throws MissingResourceException {
122: List result = new ArrayList();
123: StringTokenizer st = new StringTokenizer(getString(key), delim,
124: returnDelims);
125: while (st.hasMoreTokens()) {
126: result.add(st.nextToken());
127: }
128: return result;
129: }
130:
131: /**
132: * Returns the boolean mapped with the given key
133: * @param key a key of the resource bundle
134: * @throws MissingResourceException if key is not the name of a resource
135: * @throws ResourceFormatException if the resource is malformed
136: */
137: public boolean getBoolean(String key)
138: throws MissingResourceException, ResourceFormatException {
139: String b = getString(key);
140:
141: if (b.equals("true")) {
142: return true;
143: } else if (b.equals("false")) {
144: return false;
145: } else {
146: throw new ResourceFormatException("Malformed boolean",
147: bundle.getClass().getName(), key);
148: }
149: }
150:
151: /**
152: * Returns the integer mapped with the given string
153: * @param key a key of the resource bundle
154: * @throws MissingResourceException if key is not the name of a resource
155: * @throws ResourceFormatException if the resource is malformed
156: */
157: public int getInteger(String key) throws MissingResourceException,
158: ResourceFormatException {
159: String i = getString(key);
160:
161: try {
162: return Integer.parseInt(i);
163: } catch (NumberFormatException e) {
164: throw new ResourceFormatException("Malformed integer",
165: bundle.getClass().getName(), key);
166: }
167: }
168:
169: public int getCharacter(String key)
170: throws MissingResourceException, ResourceFormatException {
171: String s = getString(key);
172:
173: if (s == null || s.length() == 0) {
174: throw new ResourceFormatException("Malformed character",
175: bundle.getClass().getName(), key);
176: }
177:
178: return s.charAt(0);
179: }
180:
181: }
|