package in.slanglabs;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.List;
import java.util.Locale;

import in.slanglabs.platform.SlangLocale;

public class RNSlangLocaleMap {
    private static Map<String, Locale> sLocaleMap = new HashMap() {
        {
            put("en-IN", SlangLocale.LOCALE_ENGLISH_IN);
            put("hi-IN", SlangLocale.LOCALE_HINDI_IN);
            put("kn-IN", SlangLocale.LOCALE_KANNADA_IN);
            put("ta-IN", SlangLocale.LOCALE_TAMIL_IN);
            put("ml-IN", SlangLocale.LOCALE_MALAYALAM_IN);
        }
    };

    public static Set<Locale> getRequestedLocales(List<String> locales) {
        Set<Locale> requestedLocales = new HashSet();
        if (null != locales && locales.size() > 0) {
            for (String locale : locales) {
                if (sLocaleMap.containsKey(locale)) {
                    requestedLocales.add(sLocaleMap.get(locale));
                }
            }
        }

        if (requestedLocales.size() == 0) {
            requestedLocales.add(SlangLocale.LOCALE_ENGLISH_IN); //Default
        }

        return requestedLocales;
    }

    public static Locale getLocale(String lang) {
        return sLocaleMap.get(lang);
    }

    public static String getLang(Locale locale) {
        for (String lang : sLocaleMap.keySet()) {
            if (sLocaleMap.get(lang).equals(locale)) return lang;
        }
        return null;
    }

    public static Locale getDefaultLocale(String lang) {
        if (
            null == lang
            || lang.isEmpty()
            || !sLocaleMap.containsKey(lang)
        ) {
            return SlangLocale.LOCALE_ENGLISH_IN;
        }

        return sLocaleMap.get(lang);
    }
}
