001: /*
002: * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package com.sun.rowset;
027:
028: import java.io.*;
029: import java.util.*;
030: import java.lang.*;
031:
032: /**
033: * This class is used to help in localization of resources,
034: * especially the exception strings.
035: *
036: * @author Amit Handa
037: */
038:
039: public class JdbcRowSetResourceBundle implements Serializable {
040:
041: /**
042: * This <code>String</code> variable stores the location
043: * of the resource bundle location.
044: */
045: static String fileName;
046:
047: /**
048: * This variable will hold the <code>PropertyResourceBundle</code>
049: * of the text to be internationalized.
050: */
051: transient PropertyResourceBundle propResBundle;
052:
053: /**
054: * The constructor initializes to this object
055: *
056: */
057: static JdbcRowSetResourceBundle jpResBundle;
058:
059: /**
060: * The varible which will represent the properties
061: * the suffix or extension of the resource bundle.
062: **/
063: private static final String PROPERTIES = "properties";
064:
065: /**
066: * The varibale to represent underscore
067: **/
068: private static final String UNDERSCORE = "_";
069:
070: /**
071: * The variable which will represent dot
072: **/
073: private static final String DOT = ".";
074:
075: /**
076: * The variable which will represent the slash.
077: **/
078: private static final String SLASH = "/";
079:
080: /**
081: * The variable where the default resource bundle will
082: * be placed.
083: **/
084: private static final String PATH = "com/sun/rowset/RowSetResourceBundle";
085:
086: /**
087: * The constructor which initializes the resource bundle.
088: * Note this is a private constructor and follows Singleton
089: * Design Pattern.
090: *
091: * @throws IOException if unable to load the ResourceBundle
092: * according to locale or the default one.
093: */
094: private JdbcRowSetResourceBundle() throws IOException {
095: // Try to load the resource bundle according
096: // to the locale. Else if no bundle found according
097: // to the locale load the default.
098:
099: // In default case the default locale resource bundle
100: // should always be loaded else it
101: // will be difficult to throw appropriate
102: // exception string messages.
103: Locale locale = Locale.getDefault();
104:
105: // Load appropriate bundle according to locale
106: propResBundle = (PropertyResourceBundle) ResourceBundle
107: .getBundle(PATH, locale, Thread.currentThread()
108: .getContextClassLoader());
109:
110: }
111:
112: /**
113: * This method is used to get a handle to the
114: * initialized instance of this class. Note that
115: * at any time there is only one instance of this
116: * class initialized which will be returned.
117: *
118: * @throws IOException if unable to find the RowSetResourceBundle.properties
119: */
120: public static JdbcRowSetResourceBundle getJdbcRowSetResourceBundle()
121: throws IOException {
122:
123: if (jpResBundle == null) {
124: synchronized (JdbcRowSetResourceBundle.class) {
125: if (jpResBundle == null) {
126: jpResBundle = new JdbcRowSetResourceBundle();
127: } //end if
128: } //end synchronized block
129: } //end if
130: return jpResBundle;
131: }
132:
133: /**
134: * This method returns an enumerated handle of the keys
135: * which correspond to values translated to various locales.
136: *
137: * @returns an enumerated keys which have messages tranlated to
138: * corresponding locales.
139: */
140: public Enumeration getKeys() {
141: return propResBundle.getKeys();
142: }
143:
144: /**
145: * This method takes the key as an argument and
146: * returns the corresponding value reading it
147: * from the Resource Bundle loaded earlier.
148: *
149: * @returns value in locale specific language
150: * according to the key passed.
151: */
152: public Object handleGetObject(String key) {
153: return propResBundle.handleGetObject(key);
154: }
155:
156: }
|