1   /**
2    * Copyright (c) 2000-2007 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.currencyconverter.util;
24  
25  import com.liferay.portal.kernel.language.LanguageUtil;
26  import com.liferay.portal.kernel.util.StringPool;
27  import com.liferay.portal.util.WebCachePool;
28  import com.liferay.portal.util.WebCacheable;
29  import com.liferay.portlet.currencyconverter.model.Currency;
30  import com.liferay.util.CollectionFactory;
31  
32  import java.util.Iterator;
33  import java.util.Locale;
34  import java.util.Map;
35  import java.util.Set;
36  import java.util.TreeMap;
37  
38  import javax.servlet.http.HttpServletRequest;
39  import javax.servlet.jsp.PageContext;
40  
41  /**
42   * <a href="CurrencyUtil.java.html"><b><i>View Source</i></b></a>
43   *
44   * @author Brian Wing Shun Chan
45   *
46   */
47  public class CurrencyUtil {
48  
49      public static Map getAllSymbols(PageContext pageContext) {
50          HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();
51  
52          Locale locale = req.getLocale();
53  
54          String key = locale.toString();
55  
56          Map symbols = (Map)_symbolsPool.get(key);
57  
58          if (symbols != null) {
59              return symbols;
60          }
61  
62          symbols = new TreeMap();
63  
64          Iterator itr = _instance._currencyIds.iterator();
65  
66          while (itr.hasNext()) {
67              String symbol = (String)itr.next();
68  
69              symbols.put(LanguageUtil.get(pageContext, symbol), symbol);
70          }
71  
72          _symbolsPool.put(key, symbols);
73  
74          return symbols;
75      }
76  
77      public static Currency getCurrency(String symbol) {
78          WebCacheable wc = new CurrencyConverter(symbol);
79  
80          return (Currency)WebCachePool.get(
81              CurrencyUtil.class.getName() + StringPool.PERIOD + symbol, wc);
82      }
83  
84      public static boolean isCurrency(String symbol) {
85          return _instance._currencyIds.contains(symbol);
86      }
87  
88      private CurrencyUtil() {
89          _currencyIds = CollectionFactory.getHashSet();
90  
91          _currencyIds.add("ALL");
92          _currencyIds.add("DZD");
93          _currencyIds.add("XAL");
94          _currencyIds.add("ARS");
95          _currencyIds.add("AWG");
96          _currencyIds.add("AUD");
97          _currencyIds.add("BSD");
98          _currencyIds.add("BHD");
99          _currencyIds.add("BDT");
100         _currencyIds.add("BBD");
101         _currencyIds.add("BYR");
102         _currencyIds.add("BZD");
103         _currencyIds.add("BMD");
104         _currencyIds.add("BTN");
105         _currencyIds.add("BOB");
106         _currencyIds.add("BRL");
107         _currencyIds.add("GBP");
108         _currencyIds.add("BND");
109         _currencyIds.add("BGN");
110         _currencyIds.add("BIF");
111         _currencyIds.add("KHR");
112         _currencyIds.add("CAD");
113         _currencyIds.add("KYD");
114         _currencyIds.add("XOF");
115         _currencyIds.add("XAF");
116         _currencyIds.add("CLP");
117         _currencyIds.add("CNY");
118         _currencyIds.add("COP");
119         _currencyIds.add("KMF");
120         _currencyIds.add("XCP");
121         _currencyIds.add("CRC");
122         _currencyIds.add("HRK");
123         _currencyIds.add("CUP");
124         _currencyIds.add("CYP");
125         _currencyIds.add("CZK");
126         _currencyIds.add("DKK");
127         _currencyIds.add("DJF");
128         _currencyIds.add("DOP");
129         _currencyIds.add("XCD");
130         _currencyIds.add("ECS");
131         _currencyIds.add("EGP");
132         _currencyIds.add("SVC");
133         _currencyIds.add("ERN");
134         _currencyIds.add("EEK");
135         _currencyIds.add("ETB");
136         _currencyIds.add("EUR");
137         _currencyIds.add("FKP");
138         _currencyIds.add("GMD");
139         _currencyIds.add("GHC");
140         _currencyIds.add("GIP");
141         _currencyIds.add("XAU");
142         _currencyIds.add("GTQ");
143         _currencyIds.add("GNF");
144         _currencyIds.add("HTG");
145         _currencyIds.add("HNL");
146         _currencyIds.add("HKD");
147         _currencyIds.add("HUF");
148         _currencyIds.add("ISK");
149         _currencyIds.add("INR");
150         _currencyIds.add("IDR");
151         _currencyIds.add("IRR");
152         _currencyIds.add("ILS");
153         _currencyIds.add("JMD");
154         _currencyIds.add("JPY");
155         _currencyIds.add("JOD");
156         _currencyIds.add("KZT");
157         _currencyIds.add("KES");
158         _currencyIds.add("KRW");
159         _currencyIds.add("KWD");
160         _currencyIds.add("LAK");
161         _currencyIds.add("LVL");
162         _currencyIds.add("LBP");
163         _currencyIds.add("LSL");
164         _currencyIds.add("LYD");
165         _currencyIds.add("LTL");
166         _currencyIds.add("MOP");
167         _currencyIds.add("MKD");
168         _currencyIds.add("MGF");
169         _currencyIds.add("MWK");
170         _currencyIds.add("MYR");
171         _currencyIds.add("MVR");
172         _currencyIds.add("MTL");
173         _currencyIds.add("MRO");
174         _currencyIds.add("MUR");
175         _currencyIds.add("MXN");
176         _currencyIds.add("MDL");
177         _currencyIds.add("MNT");
178         _currencyIds.add("MAD");
179         _currencyIds.add("MZM");
180         _currencyIds.add("NAD");
181         _currencyIds.add("NPR");
182         _currencyIds.add("ANG");
183         _currencyIds.add("TRY");
184         _currencyIds.add("NZD");
185         _currencyIds.add("NIO");
186         _currencyIds.add("NGN");
187         _currencyIds.add("NOK");
188         _currencyIds.add("OMR");
189         _currencyIds.add("XPF");
190         _currencyIds.add("PKR");
191         _currencyIds.add("XPD");
192         _currencyIds.add("PAB");
193         _currencyIds.add("PGK");
194         _currencyIds.add("PYG");
195         _currencyIds.add("PEN");
196         _currencyIds.add("PHP");
197         _currencyIds.add("XPT");
198         _currencyIds.add("PLN");
199         _currencyIds.add("QAR");
200         _currencyIds.add("ROL");
201         _currencyIds.add("RON");
202         _currencyIds.add("RUB");
203         _currencyIds.add("RWF");
204         _currencyIds.add("WST");
205         _currencyIds.add("STD");
206         _currencyIds.add("SAR");
207         _currencyIds.add("SCR");
208         _currencyIds.add("SLL");
209         _currencyIds.add("XAG");
210         _currencyIds.add("SGD");
211         _currencyIds.add("SKK");
212         _currencyIds.add("SIT");
213         _currencyIds.add("SOS");
214         _currencyIds.add("ZAR");
215         _currencyIds.add("LKR");
216         _currencyIds.add("SHP");
217         _currencyIds.add("SDD");
218         _currencyIds.add("SRG");
219         _currencyIds.add("SZL");
220         _currencyIds.add("SEK");
221         _currencyIds.add("CHF");
222         _currencyIds.add("SYP");
223         _currencyIds.add("TWD");
224         _currencyIds.add("TZS");
225         _currencyIds.add("THB");
226         _currencyIds.add("TOP");
227         _currencyIds.add("TTD");
228         _currencyIds.add("TND");
229         _currencyIds.add("USD");
230         _currencyIds.add("AED");
231         _currencyIds.add("UGX");
232         _currencyIds.add("UAH");
233         _currencyIds.add("UYU");
234         _currencyIds.add("VUV");
235         _currencyIds.add("VEB");
236         _currencyIds.add("VND");
237         _currencyIds.add("YER");
238         _currencyIds.add("ZMK");
239         _currencyIds.add("ZWD");
240     }
241 
242     private static CurrencyUtil _instance = new CurrencyUtil();
243 
244     private static Map _symbolsPool = CollectionFactory.getSyncHashMap();
245 
246     private Set _currencyIds;
247 
248 }