1 package net.jaekl.frank;
3 import java.util.Locale;
4 import java.util.MissingResourceException;
5 import java.util.ResourceBundle;
6 import java.util.concurrent.ConcurrentHashMap;
8 import net.jaekl.qd.QDBundleFactory;
10 public class FrankBundle {
11 public static final String ANSWER_RECEIVED = "answer.received";
12 public static final String DATA_COLLECTED = "data.collected";
13 public static final String DESTINATION = "destination";
14 public static final String ERROR_PAGE = "error.page";
15 public static final String ETA = "eta";
16 public static final String FRANK = "frank";
17 public static final String GPS_OFF = "gps.off";
18 public static final String GPS_READ = "gps.read";
19 public static final String INVALID_RESPONSE = "invalid.response";
20 public static final String MAYBE_SERVER_PROBLEM = "maybe.server.problem";
21 public static final String MINUTES = "m"; // suffix (abbreviated) for minutes
22 public static final String REMAIN = "remain";
23 public static final String REQUEST_MADE = "request.made";
24 public static final String ROUTE = "route";
25 public static final String SECONDS = "s";
26 public static final String UNEXPECTED_ERROR = "unexpected.error";
27 public static final String UNEXPECTED_EXCEPTION = "unexpected.exception";
28 public static final String URL_CONTACTED = "url.contacted";
30 final static String BUNDLE_NAME = "frank";
32 static ConcurrentHashMap<Locale, FrankBundle> m_bundleMap = new ConcurrentHashMap<Locale, FrankBundle>();
34 ResourceBundle m_bundle;
36 public static FrankBundle getInst(Locale locale) {
37 FrankBundle result = m_bundleMap.get(locale);
39 synchronized(FrankBundle.class) {
40 result = m_bundleMap.get(locale);
42 result = new FrankBundle(locale);
44 m_bundleMap.put(locale, result);
50 private FrankBundle(Locale locale) {
51 m_bundle = QDBundleFactory.getInst().getBundle(BUNDLE_NAME, locale);
54 public String get(String key) {
56 if (null != m_bundle) {
57 return m_bundle.getString(key);
60 catch (MissingResourceException e) {
61 // Make it clear that something has gone wrong.
63 // Fall through to the fallback behaviour below
65 return "[" + key + "]";