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    import com.liferay.portal.kernel.xml.Document;
021    
022    import java.util.ArrayList;
023    import java.util.Collections;
024    import java.util.List;
025    import java.util.Locale;
026    import java.util.Map;
027    
028    import javax.portlet.PortletPreferences;
029    import javax.portlet.PortletRequest;
030    
031    import javax.servlet.http.HttpServletRequest;
032    
033    /**
034     * @author Alexander Chow
035     * @author Jorge Ferrer
036     * @author Mauro Mariuzzo
037     * @author Julio Camarero
038     * @author Brian Wing Shun Chan
039     * @see    Localization
040     */
041    public class LocalizationUtil {
042    
043            public static Object deserialize(JSONObject jsonObject) {
044                    return getLocalization().deserialize(jsonObject);
045            }
046    
047            public static String[] getAvailableLanguageIds(Document document) {
048                    return getLocalization().getAvailableLanguageIds(document);
049            }
050    
051            public static String[] getAvailableLanguageIds(String xml) {
052                    return getLocalization().getAvailableLanguageIds(xml);
053            }
054    
055            /**
056             * @deprecated As of 6.2.0, replaced by {@link
057             *             #getAvailableLanguageIds(String)}
058             */
059            public static String[] getAvailableLocales(String xml) {
060                    return getAvailableLanguageIds(xml);
061            }
062    
063            public static Locale getDefaultImportLocale(
064                    String className, long classPK, Locale contentDefaultLocale,
065                    Locale[] contentAvailableLocales) {
066    
067                    return getLocalization().getDefaultImportLocale(
068                            className, classPK, contentDefaultLocale, contentAvailableLocales);
069            }
070    
071            public static String getDefaultLanguageId(Document document) {
072                    return getLocalization().getDefaultLanguageId(document);
073            }
074    
075            public static String getDefaultLanguageId(String xml) {
076                    return getLocalization().getDefaultLanguageId(xml);
077            }
078    
079            /**
080             * @deprecated As of 6.2.0, replaced by {@link
081             *             #getDefaultLanguageId(String)}
082             */
083            public static String getDefaultLocale(String xml) {
084                    return getDefaultLanguageId(xml);
085            }
086    
087            public static Localization getLocalization() {
088                    PortalRuntimePermission.checkGetBeanProperty(LocalizationUtil.class);
089    
090                    return _localization;
091            }
092    
093            public static String getLocalization(
094                    String xml, String requestedLanguageId) {
095    
096                    return getLocalization().getLocalization(xml, requestedLanguageId);
097            }
098    
099            public static String getLocalization(
100                    String xml, String requestedLanguageId, boolean useDefault) {
101    
102                    return getLocalization().getLocalization(
103                            xml, requestedLanguageId, useDefault);
104            }
105    
106            public static Map<Locale, String> getLocalizationMap(
107                    HttpServletRequest request, String parameter) {
108    
109                    return getLocalization().getLocalizationMap(request, parameter);
110            }
111    
112            public static Map<Locale, String> getLocalizationMap(
113                    PortletPreferences preferences, String parameter) {
114    
115                    return getLocalization().getLocalizationMap(preferences, parameter);
116            }
117    
118            public static Map<Locale, String> getLocalizationMap(
119                    PortletRequest portletRequest, String parameter) {
120    
121                    return getLocalization().getLocalizationMap(portletRequest, parameter);
122            }
123    
124            public static Map<Locale, String> getLocalizationMap(String xml) {
125                    return getLocalization().getLocalizationMap(xml);
126            }
127    
128            public static Map<Locale, String> getLocalizationMap(
129                    String xml, boolean useDefault) {
130    
131                    return getLocalization().getLocalizationMap(xml, useDefault);
132            }
133    
134            public static Map<Locale, String> getLocalizationMap(
135                    String bundleName, ClassLoader classLoader, String key,
136                    boolean includeBetaLocales) {
137    
138                    return getLocalization().getLocalizationMap(
139                            bundleName, classLoader, key, includeBetaLocales);
140            }
141    
142            public static Map<Locale, String> getLocalizationMap(
143                    String[] languageIds, String[] values) {
144    
145                    return getLocalization().getLocalizationMap(languageIds, values);
146            }
147    
148            public static String getLocalizationXmlFromPreferences(
149                    PortletPreferences preferences, PortletRequest portletRequest,
150                    String parameter) {
151    
152                    return getLocalization().getLocalizationXmlFromPreferences(
153                            preferences, portletRequest, parameter);
154            }
155    
156            /**
157             * @deprecated As of 6.2.0, replaced by {@link #getLocalizationMap}
158             */
159            public static Map<Locale, String> getLocalizedParameter(
160                    PortletRequest portletRequest, String parameter) {
161    
162                    return getLocalization().getLocalizedParameter(
163                            portletRequest, parameter);
164            }
165    
166            public static List<Locale> getModifiedLocales(
167                    Map<Locale, String> oldMap, Map<Locale, String> newMap) {
168    
169                    if ((newMap == null) || newMap.isEmpty()) {
170                            return Collections.emptyList();
171                    }
172    
173                    List<Locale> modifiedLocales = new ArrayList<Locale>();
174    
175                    Locale[] locales = LanguageUtil.getAvailableLocales();
176    
177                    for (Locale locale : locales) {
178                            String oldValue = oldMap.get(locale);
179                            String newValue = newMap.get(locale);
180    
181                            if (!oldValue.equals(newValue)) {
182                                    modifiedLocales.add(locale);
183                            }
184                    }
185    
186                    return modifiedLocales;
187            }
188    
189            public static String getPreferencesKey(String key, String languageId) {
190                    return getLocalization().getPreferencesKey(key, languageId);
191            }
192    
193            public static String getPreferencesValue(
194                    PortletPreferences preferences, String key, String languageId) {
195    
196                    return getLocalization().getPreferencesValue(
197                            preferences, key, languageId);
198            }
199    
200            public static String getPreferencesValue(
201                    PortletPreferences preferences, String key, String languageId,
202                    boolean useDefault) {
203    
204                    return getLocalization().getPreferencesValue(
205                            preferences, key, languageId, useDefault);
206            }
207    
208            public static String[] getPreferencesValues(
209                    PortletPreferences preferences, String key, String languageId) {
210    
211                    return getLocalization().getPreferencesValues(
212                            preferences, key, languageId);
213            }
214    
215            public static String[] getPreferencesValues(
216                    PortletPreferences preferences, String key, String languageId,
217                    boolean useDefault) {
218    
219                    return getLocalization().getPreferencesValues(
220                            preferences, key, languageId, useDefault);
221            }
222    
223            public static String removeLocalization(
224                    String xml, String key, String requestedLanguageId) {
225    
226                    return getLocalization().removeLocalization(
227                            xml, key, requestedLanguageId);
228            }
229    
230            public static String removeLocalization(
231                    String xml, String key, String requestedLanguageId, boolean cdata) {
232    
233                    return getLocalization().removeLocalization(
234                            xml, key, requestedLanguageId, cdata);
235            }
236    
237            public static String removeLocalization(
238                    String xml, String key, String requestedLanguageId, boolean cdata,
239                    boolean localized) {
240    
241                    return getLocalization().removeLocalization(
242                            xml, key, requestedLanguageId, cdata, localized);
243            }
244    
245            public static void setLocalizedPreferencesValues(
246                            PortletRequest portletRequest, PortletPreferences preferences,
247                            String parameter)
248                    throws Exception {
249    
250                    getLocalization().setLocalizedPreferencesValues(
251                            portletRequest, preferences, parameter);
252            }
253    
254            public static void setPreferencesValue(
255                            PortletPreferences preferences, String key, String languageId,
256                            String value)
257                    throws Exception {
258    
259                    getLocalization().setPreferencesValue(
260                            preferences, key, languageId, value);
261            }
262    
263            public static void setPreferencesValues(
264                            PortletPreferences preferences, String key, String languageId,
265                            String[] values)
266                    throws Exception {
267    
268                    getLocalization().setPreferencesValues(
269                            preferences, key, languageId, values);
270            }
271    
272            public static String updateLocalization(
273                    Map<Locale, String> localizationMap, String xml, String key,
274                    String defaultLanguageId) {
275    
276                    return getLocalization().updateLocalization(
277                            localizationMap, xml, key, defaultLanguageId);
278            }
279    
280            public static String updateLocalization(
281                    String xml, String key, String value) {
282    
283                    return getLocalization().updateLocalization(xml, key, value);
284            }
285    
286            public static String updateLocalization(
287                    String xml, String key, String value, String requestedLanguageId) {
288    
289                    return getLocalization().updateLocalization(
290                            xml, key, value, requestedLanguageId);
291            }
292    
293            public static String updateLocalization(
294                    String xml, String key, String value, String requestedLanguageId,
295                    String defaultLanguageId) {
296    
297                    return getLocalization().updateLocalization(
298                            xml, key, value, requestedLanguageId, defaultLanguageId);
299            }
300    
301            public static String updateLocalization(
302                    String xml, String key, String value, String requestedLanguageId,
303                    String defaultLanguageId, boolean cdata) {
304    
305                    return getLocalization().updateLocalization(
306                            xml, key, value, requestedLanguageId, defaultLanguageId, cdata);
307            }
308    
309            public static String updateLocalization(
310                    String xml, String key, String value, String requestedLanguageId,
311                    String defaultLanguageId, boolean cdata, boolean localized) {
312    
313                    return getLocalization().updateLocalization(
314                            xml, key, value, requestedLanguageId, defaultLanguageId, cdata,
315                            localized);
316            }
317    
318            public void setLocalization(Localization localization) {
319                    PortalRuntimePermission.checkSetBeanProperty(getClass());
320    
321                    _localization = localization;
322            }
323    
324            private static Localization _localization;
325    
326    }