3 // Copyright (C) 2015 Christian Jaekl
5 import java.text.MessageFormat;
6 import java.util.Locale;
7 import java.util.MissingResourceException;
8 import java.util.ResourceBundle;
9 import java.util.concurrent.ConcurrentHashMap;
11 import net.jaekl.qd.QDBundleFactory;
13 public class CfbBundle {
14 public static final String ANALYSIS_FAILED = "analysis.failed";
15 public static final String ANALYZED_AT = "analyzed.at";
16 public static final String BUG_CATEGORY_UNKNOWN = "bug.category.unknown";
17 public static final String BUG_TYPE_UNKNOWN = "bug.type.unknown";
18 public static final String CANNOT_CONNECT = "cannot.connect.to.db";
19 public static final String CANNOT_EXEC = "cannot.exec";
20 public static final String CANNOT_LOAD_FBMSG_FILE = "cannot.load.fbmsg.file";
21 public static final String CANNOT_SEND_MAIL = "cannot.send.mail";
22 public static final String CFB = "cfb";
23 public static final String CFB_MAIL_SUBJECT = "cfb.mail.subject";
24 public static final String CFB_REPORT = "cfb.report";
25 public static final String COMPARING_RUNS = "comparing.runs";
26 public static final String COMPARING_VERSIONS = "comparing.versions";
27 public static final String FINDBUGS_HOME_IS_NOT_SET = "findbugs.home.is.not.set";
28 public static final String FINDBUGS_HOME_IS_SET_TO = "findbugs.home.is.set.to";
29 public static final String FIXED_BUGS = "fixed.bugs";
30 public static final String INVOKE_WITH_HELP_FOR_HELP = "invoke.with.help.for.help";
31 public static final String MUST_SPECIFY_FBP_FILE = "must.specify.fbp.file";
32 public static final String NEW_BUGS = "new.bugs";
33 public static final String NEW_VERSION = "new.version";
34 public static final String NO_EARLIER_RUN = "no.earlier.run";
35 public static final String NUM_BUGS = "num.bugs";
36 public static final String NUM_BUGS_OLD = "num.bugs.old";
37 public static final String OLD_BUGS = "old.bugs";
38 public static final String OLD_VERSION = "old.version";
39 public static final String STDERR_WAS = "stderr.was";
40 public static final String STDOUT_WAS = "stdout.was";
41 public static final String VERSION_NUM = "version.num";
43 final static String BUNDLE_NAME = "cfb";
45 static ConcurrentHashMap<Locale, CfbBundle> m_bundleMap = new ConcurrentHashMap<Locale, CfbBundle>();
47 ResourceBundle m_bundle;
49 public static CfbBundle getInst(Locale locale) {
50 CfbBundle result = m_bundleMap.get(locale);
52 synchronized(CfbBundle.class) {
53 result = m_bundleMap.get(locale);
55 result = new CfbBundle(locale);
57 m_bundleMap.put(locale, result);
63 private CfbBundle(Locale locale) {
64 m_bundle = QDBundleFactory.getInst().getBundle(BUNDLE_NAME, locale);
67 // This constructor is intended only for use during unit testing.
72 public String get(String key, Object... arguments) {
74 if (null != m_bundle) {
75 String pattern = m_bundle.getString(key);
76 return MessageFormat.format(pattern, arguments);
79 catch (MissingResourceException exc) {
80 // Make it clear that something has gone wrong.
81 exc.printStackTrace();
82 // Fall through to the fallback behaviour below
85 return fallbackGet(key, arguments);
88 String fallbackGet(String key, Object... arguments) {
89 StringBuilder sb = new StringBuilder("[" + key + "]");
90 for (Object obj : arguments) {
91 sb.append("[" + obj + "]");