1
22
23 package com.liferay.portal.language;
24
25 import com.liferay.portal.kernel.util.StringPool;
26
27 import java.util.Locale;
28 import java.util.Map;
29 import java.util.concurrent.ConcurrentHashMap;
30
31 import org.apache.struts.util.MessageResources;
32
33
38 public class LanguageResources {
39
40 public static void clearCache() {
41 _instance._clearCache();
42 }
43
44 public static String getMessage(Locale locale, String key) {
45 return _instance._getMessage(locale, key);
46 }
47
48 public static void init(MessageResources messageResources) {
49 _instance._init(messageResources);
50 }
51
52 public static boolean isInitialized() {
53 if (_instance._messageResources == null) {
54 return true;
55 }
56 else {
57 return false;
58 }
59 }
60
61 private LanguageResources() {
62 _cache = new ConcurrentHashMap<String, ResourceValue>(10000);
63 }
64
65 private void _clearCache() {
66 _cache.clear();
67 }
68
69 private String _getCacheKey(Locale locale, String key) {
70 StringBuilder sb = new StringBuilder(String.valueOf(locale));
71
72 sb.append(StringPool.POUND);
73 sb.append(key);
74
75 return sb.toString();
76 }
77
78 private String _getMessage(Locale locale, String key) {
79 String cacheKey = _getCacheKey(locale, key);
80
81 ResourceValue resourceValue = _cache.get(cacheKey);
82
83 if (resourceValue == null) {
84 String value = _messageResources.getMessage(locale, key);
85
86 resourceValue = new ResourceValue(value);
87
88 _cache.put(cacheKey, resourceValue);
89 }
90
91 return resourceValue.getValue();
92 }
93
94 private void _init(MessageResources messageResources) {
95 _messageResources = messageResources;
96 }
97
98 private class ResourceValue {
99
100 private ResourceValue(String value) {
101 _value = value;
102 }
103
104 public String getValue() {
105 return _value;
106 }
107
108 private String _value;
109
110 }
111
112 private static LanguageResources _instance = new LanguageResources();
113
114 private Map<String, ResourceValue> _cache;
115 private MessageResources _messageResources;
116
117 }