001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.kernel.util;
016    
017    import com.liferay.portal.kernel.json.JSONObject;
018    import com.liferay.portal.kernel.language.LanguageUtil;
019    import com.liferay.portal.kernel.security.pacl.permission.PortalRuntimePermission;
020    
021    import java.util.ArrayList;
022    import java.util.Collections;
023    import java.util.List;
024    import java.util.Locale;
025    import java.util.Map;
026    
027    import javax.portlet.PortletPreferences;
028    import javax.portlet.PortletRequest;
029    
030    /**
031     * @author Alexander Chow
032     * @author Jorge Ferrer
033     * @author Mauro Mariuzzo
034     * @author Julio Camarero
035     * @author Brian Wing Shun Chan
036     * @see    Localization
037     */
038    public class LocalizationUtil {
039    
040            public static Object deserialize(JSONObject jsonObject) {
041                    return getLocalization().deserialize(jsonObject);
042            }
043    
044            public static String[] getAvailableLocales(String xml) {
045                    return getLocalization().getAvailableLocales(xml);
046            }
047    
048            public static Locale getDefaultImportLocale(
049                    String className, long classPK, Locale contentDefaultLocale,
050                    Locale[] contentAvailableLocales) {
051    
052                    return getLocalization().getDefaultImportLocale(
053                            className, classPK, contentDefaultLocale, contentAvailableLocales);
054            }
055    
056            public static String getDefaultLocale(String xml) {
057                    return getLocalization().getDefaultLocale(xml);
058            }
059    
060            public static Localization getLocalization() {
061                    PortalRuntimePermission.checkGetBeanProperty(LocalizationUtil.class);
062    
063                    return _localization;
064            }
065    
066            public static String getLocalization(
067                    String xml, String requestedLanguageId) {
068    
069                    return getLocalization().getLocalization(xml, requestedLanguageId);
070            }
071    
072            public static String getLocalization(
073                    String xml, String requestedLanguageId, boolean useDefault) {
074    
075                    return getLocalization().getLocalization(
076                            xml, requestedLanguageId, useDefault);
077            }
078    
079            public static Map<Locale, String> getLocalizationMap(
080                    PortletPreferences preferences, String parameter) {
081    
082                    return getLocalization().getLocalizationMap(preferences, parameter);
083            }
084    
085            public static Map<Locale, String> getLocalizationMap(
086                    PortletRequest portletRequest, String parameter) {
087    
088                    return getLocalization().getLocalizationMap(portletRequest, parameter);
089            }
090    
091            public static Map<Locale, String> getLocalizationMap(String xml) {
092                    return getLocalization().getLocalizationMap(xml);
093            }
094    
095            public static Map<Locale, String> getLocalizationMap(
096                    String bundleName, ClassLoader classLoader, String key,
097                    boolean includeBetaLocales) {
098    
099                    return getLocalization().getLocalizationMap(
100                            bundleName, classLoader, key, includeBetaLocales);
101            }
102    
103            public static Map<Locale, String> getLocalizationMap(
104                    String[] languageIds, String[] values) {
105    
106                    return getLocalization().getLocalizationMap(languageIds, values);
107            }
108    
109            public static String getLocalizationXmlFromPreferences(
110                    PortletPreferences preferences, PortletRequest portletRequest,
111                    String parameter) {
112    
113                    return getLocalization().getLocalizationXmlFromPreferences(
114                            preferences, portletRequest, parameter);
115            }
116    
117            /**
118             * @deprecated Use <code>getLocalizationMap</code>.
119             */
120            public static Map<Locale, String> getLocalizedParameter(
121                    PortletRequest portletRequest, String parameter) {
122    
123                    return getLocalization().getLocalizedParameter(
124                            portletRequest, parameter);
125            }
126    
127            public static List<Locale> getModifiedLocales(
128                    Map<Locale, String> oldMap, Map<Locale, String> newMap) {
129    
130                    if ((newMap == null) || newMap.isEmpty()) {
131                            return Collections.emptyList();
132                    }
133    
134                    List<Locale> modifiedLocales = new ArrayList<Locale>();
135    
136                    Locale[] locales = LanguageUtil.getAvailableLocales();
137    
138                    for (Locale locale : locales) {
139                            String oldValue = oldMap.get(locale);
140                            String newValue = newMap.get(locale);
141    
142                            if (!oldValue.equals(newValue)) {
143                                    modifiedLocales.add(locale);
144                            }
145                    }
146    
147                    return modifiedLocales;
148            }
149    
150            public static String getPreferencesKey(String key, String languageId) {
151                    return getLocalization().getPreferencesKey(key, languageId);
152            }
153    
154            public static String getPreferencesValue(
155                    PortletPreferences preferences, String key, String languageId) {
156    
157                    return getLocalization().getPreferencesValue(
158                            preferences, key, languageId);
159            }
160    
161            public static String getPreferencesValue(
162                    PortletPreferences preferences, String key, String languageId,
163                    boolean useDefault) {
164    
165                    return getLocalization().getPreferencesValue(
166                            preferences, key, languageId, useDefault);
167            }
168    
169            public static String[] getPreferencesValues(
170                    PortletPreferences preferences, String key, String languageId) {
171    
172                    return getLocalization().getPreferencesValues(
173                            preferences, key, languageId);
174            }
175    
176            public static String[] getPreferencesValues(
177                    PortletPreferences preferences, String key, String languageId,
178                    boolean useDefault) {
179    
180                    return getLocalization().getPreferencesValues(
181                            preferences, key, languageId, useDefault);
182            }
183    
184            public static String removeLocalization(
185                    String xml, String key, String requestedLanguageId) {
186    
187                    return getLocalization().removeLocalization(
188                            xml, key, requestedLanguageId);
189            }
190    
191            public static String removeLocalization(
192                    String xml, String key, String requestedLanguageId, boolean cdata) {
193    
194                    return getLocalization().removeLocalization(
195                            xml, key, requestedLanguageId, cdata);
196            }
197    
198            public static String removeLocalization(
199                    String xml, String key, String requestedLanguageId, boolean cdata,
200                    boolean localized) {
201    
202                    return getLocalization().removeLocalization(
203                            xml, key, requestedLanguageId, cdata, localized);
204            }
205    
206            public static void setLocalizedPreferencesValues(
207                            PortletRequest portletRequest, PortletPreferences preferences,
208                            String parameter)
209                    throws Exception {
210    
211                    getLocalization().setLocalizedPreferencesValues(
212                            portletRequest, preferences, parameter);
213            }
214    
215            public static void setPreferencesValue(
216                            PortletPreferences preferences, String key, String languageId,
217                            String value)
218                    throws Exception {
219    
220                    getLocalization().setPreferencesValue(
221                            preferences, key, languageId, value);
222            }
223    
224            public static void setPreferencesValues(
225                            PortletPreferences preferences, String key, String languageId,
226                            String[] values)
227                    throws Exception {
228    
229                    getLocalization().setPreferencesValues(
230                            preferences, key, languageId, values);
231            }
232    
233            public static String updateLocalization(
234                    String xml, String key, String value) {
235    
236                    return getLocalization().updateLocalization(xml, key, value);
237            }
238    
239            public static String updateLocalization(
240                    String xml, String key, String value, String requestedLanguageId) {
241    
242                    return getLocalization().updateLocalization(
243                            xml, key, value, requestedLanguageId);
244            }
245    
246            public static String updateLocalization(
247                    String xml, String key, String value, String requestedLanguageId,
248                    String defaultLanguageId) {
249    
250                    return getLocalization().updateLocalization(
251                            xml, key, value, requestedLanguageId, defaultLanguageId);
252            }
253    
254            public static String updateLocalization(
255                    String xml, String key, String value, String requestedLanguageId,
256                    String defaultLanguageId, boolean cdata) {
257    
258                    return getLocalization().updateLocalization(
259                            xml, key, value, requestedLanguageId, defaultLanguageId, cdata);
260            }
261    
262            public static String updateLocalization(
263                    String xml, String key, String value, String requestedLanguageId,
264                    String defaultLanguageId, boolean cdata, boolean localized) {
265    
266                    return getLocalization().updateLocalization(
267                            xml, key, value, requestedLanguageId, defaultLanguageId, cdata,
268                            localized);
269            }
270    
271            public void setLocalization(Localization localization) {
272                    PortalRuntimePermission.checkSetBeanProperty(getClass());
273    
274                    _localization = localization;
275            }
276    
277            private static Localization _localization;
278    
279    }