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 CANNOT_CONNECT = "cannot.connect.to.db";
17 public static final String CANNOT_EXEC = "cannot.exec";
18 public static final String CFB = "cfb";
19 public static final String CFB_REPORT = "cfb.report";
20 public static final String COMPARING_RUNS = "comparing.runs";
21 public static final String COMPARING_VERSIONS = "comparing.versions";
22 public static final String FIXED_BUGS = "fixed.bugs";
23 public static final String NEW_BUGS = "new.bugs";
24 public static final String NEW_VERSION = "new.version";
25 public static final String NUM_BUGS = "num.bugs";
26 public static final String NUM_BUGS_OLD = "num.bugs.old";
27 public static final String OLD_BUGS = "old.bugs";
28 public static final String OLD_VERSION = "old.version";
29 public static final String STDERR_WAS = "stderr.was";
30 public static final String STDOUT_WAS = "stdout.was";
31 public static final String VERSION_NUM = "version.num";
33 final static String BUNDLE_NAME = "cfb";
35 static ConcurrentHashMap<Locale, CfbBundle> m_bundleMap = new ConcurrentHashMap<Locale, CfbBundle>();
37 ResourceBundle m_bundle;
39 public static CfbBundle getInst(Locale locale) {
40 CfbBundle result = m_bundleMap.get(locale);
42 synchronized(CfbBundle.class) {
43 result = m_bundleMap.get(locale);
45 result = new CfbBundle(locale);
47 m_bundleMap.put(locale, result);
53 private CfbBundle(Locale locale) {
54 m_bundle = QDBundleFactory.getInst().getBundle(BUNDLE_NAME, locale);
57 public String get(String key, Object... arguments) {
59 if (null != m_bundle) {
60 String pattern = m_bundle.getString(key);
61 return MessageFormat.format(pattern, arguments);
64 catch (MissingResourceException exc) {
65 // Make it clear that something has gone wrong.
66 exc.printStackTrace();
67 // Fall through to the fallback behaviour below
70 StringBuilder sb = new StringBuilder("[" + key + "]");
71 for (Object obj : arguments) {
72 sb.append("[" + obj + "]");