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: ResourceManager.java,v 1.1 2007/08/15 23:28:28 suricate Exp $
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: public String getStringOrNull(String key) {
090: try {
091: return getString(key);
092: } catch (MissingResourceException e) {
093: return null;
094: }
095: }
096:
097: /**
098: * Returns the tokens that compose the string mapped
099: * with the given key. Delimiters (" \t\n\r\f") are not returned.
100: * @param key a key of the resource bundle
101: * @throws MissingResourceException if key is not the name of a resource
102: */
103: public List getStringList(String key)
104: throws MissingResourceException {
105: return getStringList(key, " \t\n\r\f", false);
106: }
107:
108: /**
109: * Returns the tokens that compose the string mapped
110: * with the given key. Delimiters are not returned.
111: * @param key a key of the resource bundle
112: * @param delim the delimiters of the tokens
113: * @throws MissingResourceException if key is not the name of a resource
114: */
115: public List getStringList(String key, String delim)
116: throws MissingResourceException {
117: return getStringList(key, delim, false);
118: }
119:
120: /**
121: * Returns the tokens that compose the string mapped
122: * with the given key
123: * @param key a key of the resource bundle
124: * @param delim the delimiters of the tokens
125: * @param returnDelims if true, the delimiters are returned in the list
126: * @throws MissingResourceException if key is not the name of a resource
127: */
128: public List getStringList(String key, String delim,
129: boolean returnDelims) throws MissingResourceException {
130: List result = new ArrayList();
131: StringTokenizer st = new StringTokenizer(getString(key), delim,
132: returnDelims);
133: while (st.hasMoreTokens()) {
134: result.add(st.nextToken());
135: }
136: return result;
137: }
138:
139: /**
140: * Returns the boolean mapped with the given key
141: * @param key a key of the resource bundle
142: * @throws MissingResourceException if key is not the name of a resource
143: * @throws ResourceFormatException if the resource is malformed
144: */
145: public boolean getBoolean(String key)
146: throws MissingResourceException, ResourceFormatException {
147: String b = getString(key);
148:
149: if (b.equals("true")) {
150: return true;
151: } else if (b.equals("false")) {
152: return false;
153: } else {
154: throw new ResourceFormatException("Malformed boolean",
155: bundle.getClass().getName(), key);
156: }
157: }
158:
159: /**
160: * Returns the integer mapped with the given string
161: * @param key a key of the resource bundle
162: * @throws MissingResourceException if key is not the name of a resource
163: * @throws ResourceFormatException if the resource is malformed
164: */
165: public int getInteger(String key) throws MissingResourceException,
166: ResourceFormatException {
167: String i = getString(key);
168:
169: try {
170: return Integer.parseInt(i);
171: } catch (NumberFormatException e) {
172: throw new ResourceFormatException("Malformed integer",
173: bundle.getClass().getName(), key);
174: }
175: }
176:
177: public int getCharacter(String key)
178: throws MissingResourceException, ResourceFormatException {
179: String s = getString(key);
180:
181: if (s == null || s.length() == 0) {
182: throw new ResourceFormatException("Malformed character",
183: bundle.getClass().getName(), key);
184: }
185:
186: return s.charAt(0);
187: }
188:
189: }
|