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