001: /*
002: * Licensed under the Apache License, Version 2.0 (the "License");
003: * you may not use this file except in compliance with the License.
004: * You may obtain a copy of the License at
005: *
006: * http://www.apache.org/licenses/LICENSE-2.0
007: *
008: * Unless required by applicable law or agreed to in writing, software
009: * distributed under the License is distributed on an "AS IS" BASIS,
010: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011: * See the License for the specific language governing permissions and
012: * limitations under the License.
013: */
014: package org.tp23.antinstaller;
015:
016: import java.text.MessageFormat;
017: import java.util.Locale;
018: import java.util.MissingResourceException;
019:
020: import org.tp23.antinstaller.renderer.AIResourceBundle;
021:
022: /**
023: * Helper class that will catch missing bundle entries and handle formatting of
024: * message strings
025: *
026: * @author mwilson
027: * @version $Id
028: * @since 0.7.4 patch 7
029: */
030: public class AIResourceBundleHelper {
031:
032: // private String bundleName;
033: private static final AIResourceBundle res = new AIResourceBundle();
034: private static final Object[] EMPTY_OBJ_ARRAY = new Object[0];
035: private static final String EMPTY_STRING = "";
036:
037: public AIResourceBundleHelper() {
038: }
039:
040: public String getString(final String key) {
041: return res.getString(key);
042: }
043:
044: public String getMessage(final String key) {
045: return getMessage(key, EMPTY_OBJ_ARRAY);
046: }
047:
048: public String getMessage(final String key, final Object obj) {
049: return getMessage(key, new Object[] { obj });
050: }
051:
052: /**
053: * Return a formatted message string.
054: *
055: * @param key
056: * resource bundle key
057: * @param objArray
058: * array of objects that will be used with formatting string
059: * @return formatted string or error message if the resource bundle entry is
060: * missing
061: */
062: public String getMessage(String key, Object objArray[]) {
063: String message;
064:
065: // Replace null values with empty strings - safer
066: for (int i = 0; i < objArray.length; i++) {
067: if (objArray[i] == null) {
068: objArray[i] = EMPTY_STRING;
069: }
070: }
071:
072: String formatStr = null;
073:
074: try {
075: formatStr = res.getString(key);
076: } catch (MissingResourceException missingResExc) {
077: // Handle missing resource below...
078: }
079:
080: if (formatStr == null) {
081: StringBuffer strBuffer = new StringBuffer(
082: "Message entry with key ");
083: strBuffer.append(key);
084: strBuffer.append(" is missing from resource bundle ");
085: strBuffer.append("org.tp23.antinstaller.renderer.Res_"
086: + Locale.getDefault());
087: strBuffer.append("\n");
088: strBuffer.append(key);
089: for (int i = 0; i < objArray.length; i++) {
090: strBuffer.append(" ");
091: strBuffer.append(objArray[i].toString());
092: }
093:
094: message = strBuffer.toString();
095: } else {
096: MessageFormat msgformat = new MessageFormat(formatStr);
097: message = msgformat.format(((Object) (objArray)));
098: }
099:
100: return message;
101: }
102:
103: }
|