com.liferay.translator.web.util.TranslatorUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.translator.web.util.TranslatorUtil.java

Source

/* ./liferay-liferay-portal-b66e4b4/modules/apps/translator/translator-web/src/com/liferay/translator/web/util/TranslatorUtil.java */
/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.translator.web.util;

import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.util.ReflectionUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.webcache.WebCacheException;
import com.liferay.portal.kernel.webcache.WebCacheItem;
import com.liferay.translator.web.configuration.TranslatorConfiguration;
import com.liferay.translator.web.model.Translation;

import java.util.Comparator;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;

/**
 * @author Brian Wing Shun Chan
 * @author Hugo Huijser
 */
public class TranslatorUtil {

    public static String[] getFromAndToLanguageIds(String translationId, Map<String, String> languageIdsMap) {

        try {
            int pos = translationId.indexOf(StringPool.UNDERLINE);

            String fromLanguageId = translationId.substring(0, pos);

            if (!languageIdsMap.containsKey(fromLanguageId)) {
                pos = translationId.indexOf(StringPool.UNDERLINE, pos + 1);

                fromLanguageId = translationId.substring(0, pos);

                if (!languageIdsMap.containsKey(fromLanguageId)) {
                    return null;
                }
            }

            String toLanguageId = translationId.substring(pos + 1);

            if (!languageIdsMap.containsKey(fromLanguageId)) {
                return null;
            }

            return new String[] { fromLanguageId, toLanguageId };
        } catch (Exception e) {
            ReflectionUtil.throwException(e);
        }

        return null;
    }

    public static Map<String, String> getLanguageIdsMap(Locale locale,
            TranslatorConfiguration translatorConfiguration) {

        Map<String, String> languageIdsMap = new HashMap<>();

        String[] languageIds = StringUtil.split(translatorConfiguration.languageIds());

        for (String languageId : languageIds) {
            languageIdsMap.put(languageId, LanguageUtil.get(locale, "language." + languageId));
        }

        Map<String, String> sortedLanguageIdsMap = new TreeMap<>(new ValueComparator(languageIdsMap));

        sortedLanguageIdsMap.putAll(languageIdsMap);

        return sortedLanguageIdsMap;
    }

    public static Translation getTranslation(String fromLanguageId, String toLanguageId, String fromText)
            throws WebCacheException {

        WebCacheItem wci = new TranslatorWebCacheItem(fromLanguageId, toLanguageId, fromText);

        return (Translation) wci.convert("");
    }

    private static class ValueComparator implements Comparator<Object> {

        public ValueComparator(Map<String, String> map) {
            _map = map;
        }

        @Override
        public int compare(Object obj1, Object obj2) {
            String value1 = _map.get(obj1);
            String value2 = _map.get(obj2);

            return value1.compareTo(value2);
        }

        private final Map<String, String> _map;

    }

}