2009-04-17 05:20:11 -04:00
|
|
|
package davmail;
|
|
|
|
|
2009-04-27 19:03:58 -04:00
|
|
|
import davmail.exception.DavMailException;
|
|
|
|
|
2009-04-17 05:20:11 -04:00
|
|
|
import java.text.MessageFormat;
|
2009-04-25 09:13:48 -04:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Locale;
|
2009-04-17 05:20:11 -04:00
|
|
|
import java.util.ResourceBundle;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Internationalization message.
|
|
|
|
*/
|
|
|
|
public class BundleMessage {
|
2009-04-25 09:13:48 -04:00
|
|
|
protected static final String MESSAGE_BUNDLE_NAME = "davmailmessages";
|
2009-04-17 05:20:11 -04:00
|
|
|
protected final String key;
|
|
|
|
private final Object[] arguments;
|
|
|
|
|
2009-04-25 09:13:48 -04:00
|
|
|
public BundleMessage(String key, Object... arguments) {
|
2009-04-17 05:20:11 -04:00
|
|
|
this.key = key;
|
|
|
|
this.arguments = arguments;
|
|
|
|
}
|
|
|
|
|
2009-04-25 09:13:48 -04:00
|
|
|
protected ResourceBundle getBundle(Locale locale) {
|
|
|
|
if (locale == null) {
|
|
|
|
return ResourceBundle.getBundle(MESSAGE_BUNDLE_NAME);
|
|
|
|
} else {
|
|
|
|
return ResourceBundle.getBundle(MESSAGE_BUNDLE_NAME, locale);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-04-17 05:20:11 -04:00
|
|
|
public String format() {
|
2009-04-25 09:13:48 -04:00
|
|
|
return format(null);
|
|
|
|
}
|
|
|
|
|
|
|
|
public String format(Locale locale) {
|
|
|
|
Object[] formattedArguments = null;
|
|
|
|
if (arguments != null) {
|
|
|
|
formattedArguments = new Object[arguments.length];
|
|
|
|
for (int i = 0; i < arguments.length; i++) {
|
|
|
|
if (arguments[i] instanceof BundleMessage) {
|
|
|
|
formattedArguments[i] = ((BundleMessage) arguments[i]).format(locale);
|
|
|
|
} else if (arguments[i] instanceof BundleMessageList) {
|
|
|
|
StringBuilder buffer = new StringBuilder();
|
|
|
|
for (BundleMessage bundleMessage:(BundleMessageList)arguments[i]) {
|
|
|
|
buffer.append(bundleMessage.format(locale));
|
|
|
|
}
|
|
|
|
formattedArguments[i] = buffer.toString();
|
2009-04-27 19:03:58 -04:00
|
|
|
} else if (arguments[i] instanceof DavMailException) {
|
|
|
|
formattedArguments[i] = ((DavMailException)arguments[i]).getMessage(locale);
|
|
|
|
} else if (arguments[i] instanceof Throwable) {
|
|
|
|
formattedArguments[i] = ((Throwable)arguments[i]).getMessage();
|
|
|
|
if (formattedArguments[i] == null) {
|
|
|
|
formattedArguments[i] = arguments[i].toString();
|
|
|
|
}
|
2009-04-25 09:13:48 -04:00
|
|
|
} else {
|
|
|
|
formattedArguments[i] = arguments[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return MessageFormat.format(getBundle(locale).getString(key), formattedArguments);
|
2009-04-17 05:20:11 -04:00
|
|
|
}
|
|
|
|
|
2009-04-25 09:13:48 -04:00
|
|
|
public static String format(String key, Object... arguments) {
|
|
|
|
return MessageFormat.format(ResourceBundle.getBundle(MESSAGE_BUNDLE_NAME).getString(key), arguments);
|
2009-04-17 06:32:11 -04:00
|
|
|
}
|
|
|
|
|
2009-04-27 19:03:58 -04:00
|
|
|
public static String format(Locale locale, String key, Object... arguments) {
|
|
|
|
return MessageFormat.format(ResourceBundle.getBundle(MESSAGE_BUNDLE_NAME, locale).getString(key), arguments);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static String formatLog(String key, Object... arguments) {
|
|
|
|
return MessageFormat.format(ResourceBundle.getBundle(MESSAGE_BUNDLE_NAME, Locale.ROOT).getString(key), arguments);
|
|
|
|
}
|
|
|
|
|
2009-04-25 09:13:48 -04:00
|
|
|
public static class BundleMessageList extends ArrayList<BundleMessage>{}
|
2009-04-17 05:20:11 -04:00
|
|
|
}
|