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