001: /*
002: Copyright (C) 2002-2004 MySQL AB
003:
004: This program is free software; you can redistribute it and/or modify
005: it under the terms of version 2 of the GNU General Public License as
006: published by the Free Software Foundation.
007:
008: There are special exceptions to the terms and conditions of the GPL
009: as it is applied to this software. View the full text of the
010: exception in file EXCEPTIONS-CONNECTOR-J in the directory of this
011: software distribution.
012:
013: This program is distributed in the hope that it will be useful,
014: but WITHOUT ANY WARRANTY; without even the implied warranty of
015: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: GNU General Public License for more details.
017:
018: You should have received a copy of the GNU General Public License
019: along with this program; if not, write to the Free Software
020: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
021:
022:
023:
024: */
025: package com.mysql.jdbc;
026:
027: import java.text.MessageFormat;
028: import java.util.Locale;
029: import java.util.MissingResourceException;
030: import java.util.ResourceBundle;
031:
032: /**
033: * Support for localized messages.
034: *
035: * @author Mark Matthews
036: * @version $Id: Messages.java 3726 2005-05-19 15:52:24Z mmatthews $
037: */
038: public class Messages {
039:
040: private static final String BUNDLE_NAME = "com.mysql.jdbc.LocalizedErrorMessages"; //$NON-NLS-1$
041:
042: private static final ResourceBundle RESOURCE_BUNDLE;
043:
044: static {
045: ResourceBundle temp = null;
046:
047: //
048: // Overly-pedantic here, some appserver and JVM combos don't deal
049: // well with the no-args version, others don't deal well with
050: // the three-arg version, so we need to try both :(
051: //
052:
053: try {
054: temp = ResourceBundle.getBundle(BUNDLE_NAME, Locale
055: .getDefault(), Messages.class.getClassLoader());
056: } catch (Throwable t) {
057: try {
058: temp = ResourceBundle.getBundle(BUNDLE_NAME);
059: } catch (Throwable t2) {
060: throw new RuntimeException(
061: "Can't load resource bundle due to underlying exception "
062: + t.toString());
063: }
064: } finally {
065: RESOURCE_BUNDLE = temp;
066: }
067: }
068:
069: /**
070: * Returns the localized message for the given message key
071: *
072: * @param key
073: * the message key
074: * @return The localized message for the key
075: */
076: public static String getString(String key) {
077: if (RESOURCE_BUNDLE == null) {
078: throw new RuntimeException(
079: "Localized messages from resource bundle '"
080: + BUNDLE_NAME
081: + "' not loaded during initialization of driver.");
082: }
083:
084: try {
085: if (key == null) {
086: throw new IllegalArgumentException(
087: "Message key can not be null");
088: }
089:
090: String message = RESOURCE_BUNDLE.getString(key);
091:
092: if (message == null) {
093: message = "Missing error message for key '" + key + "'";
094: }
095:
096: return message;
097: } catch (MissingResourceException e) {
098: return '!' + key + '!';
099: }
100: }
101:
102: public static String getString(String key, Object[] args) {
103: return MessageFormat.format(getString(key), args);
104: }
105:
106: /**
107: * Dis-allow construction ...
108: */
109: private Messages() {
110:
111: // XXX Auto-generated constructor stub
112: }
113: }
|