package org.syftkog.web.test.framework;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlType;
/**
*
* @author BenjaminLimb
*/
@XmlType(name = "langauge")
@XmlEnum
public enum Language {
/**
*
*/
DE("Deutsch", "German", "de", "deu"),
/**
*
*/
PT("Português", "Portuguese", "pt", "por"),
/**
*
*/
EN("English", "English", "en", "eng"),
/**
*
*/
RU("Русский", "Russian", "ru", "rus"),
/**
*
*/
ES("Español", "Spanish", "es", "spa"),
/**
*
*/
JA("日本語", "Japanese", "ja", "jpn"),
/**
*
*/
FR("Français", "French", "fr", "fra"),
/**
*
*/
KO("한국어", "Korean", "ko", "kor"),
/**
*
*/
IT("Italiano", "Italian", "it", "ita"),
/**
*
*/
ZH("中文", "Chinese", "zh", "zho"),
/**
*
*/
EO("Psuedo Loc", "Psudo Loc", "eo", "eo");
private static final Map<String, Language> twoLetterCodeMap = new HashMap<>();
private static final Map<String, Language> threeLetterCodeMap = new HashMap<>();
static {
for (Language lan : Language.values()) {
twoLetterCodeMap.put(lan.twoLetterCode, lan);
threeLetterCodeMap.put(lan.threeLetterCode, lan);
}
}
private Language(final String name, final String englishName, final String twoLetterCode, String threeLetterCode) {
this.name = name;
this.englishName = englishName;
this.twoLetterCode = twoLetterCode;
this.threeLetterCode = threeLetterCode;
}
private final String name;
private final String englishName;
private final String twoLetterCode;
private final String threeLetterCode;
@Override
public String toString() {
return englishName;
}
/**
*
* @return
*/
public String getName() {
return name;
}
/**
*
* @return
*/
public String getEnglishName() {
return englishName;
}
/**
*
* @return
*/
public String getTwoLetterCode() {
return twoLetterCode;
}
/**
*
* @return
*/
public String getThreeLetterCode() {
return threeLetterCode;
}
/**
*
* @return
*/
public Boolean isCJK() {
return this.equals(JA) || this.equals(KO) || this.equals(ZH);
}
/**
*
* @param twoLetterCode
* @return
*/
private static Language getFromTwoLetterCode(String twoLetterCode) {
return twoLetterCodeMap.get(twoLetterCode.toLowerCase());
}
/**
*
* @param twoLetterCodes
* @return
*/
private static List<Language> getFromTwoletterCodes(String... twoLetterCodes) {
ArrayList<Language> results = new ArrayList<Language>();
for (String code : twoLetterCodes) {
results.add(getFromTwoLetterCode(code.toLowerCase()));
}
return results;
}
/**
*
* @param threeLetterCode
* @return
*/
private static Language getFromThreeLetterCode(String threeLetterCode) {
return threeLetterCodeMap.get(threeLetterCode.toLowerCase());
}
/**
*
* @param code
* @return
*/
public static Language getFromCode(String code) {
Language lang = twoLetterCodeMap.get(code);
if (lang == null) {
lang = threeLetterCodeMap.get(code);
}
return lang;
}
}