FileDocCategorySizeDatePackage
ISOScript.javaAPI DocJaudiotagger 2.0.47585Wed Mar 30 16:12:08 BST 2011org.jaudiotagger.tag.reference

ISOScript.java

package org.jaudiotagger.tag.reference;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * Represents the ISO Script
 * <p/>
 * Contains an enum  of script, their four letter code and description
 * with additional method to allow an enum to be found by its four letter code or its description.
 */
public class ISOScript
{
    private static Map<String, Script> codeMap;
    private static Map<String, Script> descriptionMap;

    static
    {
        codeMap = new HashMap<String, Script>();
        for (Script script : Script.values())
        {
            codeMap.put(script.code, script);
        }

        descriptionMap = new HashMap<String, Script>();
        for (Script script : Script.values())
        {
            descriptionMap.put(script.description, script);
        }

    }

    /**
     * @param code
     * @return enum with this two letter code
     */
    public static Script getScriptByCode(String code)
    {
        return codeMap.get(code);
    }

    /**
     * @param description
     * @return enum with this description
     */
    public static Script getScriptByDescription(String description)
    {
        return descriptionMap.get(description);
    }

    /**
     * List of valid Iso Scripts, shows 4 letter abbreviation and script human readable name
     */
    public static enum Script
    {
        ARABIC("Arab", "Arabic"),
        IMPERIAL_ARAMAIC("Armi", "Imperial Aramaic"),
        ARMENIAN("Armn", "Armenian"),
        AVESTAN("Avst", "Avestan"),
        BALINESE("Bali", "Balinese"),
        BATAK("Batk", "Batak"),
        BENGALI("Beng", "Bengali"),
        BLISSYMBOLS("Blis", "Blissymbols"),
        BOPOMOFO("Bopo", "Bopomofo"),
        BRAHMI("Brah", "Brahmi"),
        BRAILLE("Brai", "Braille"),
        BUGINESE("Bugi", "Buginese"),
        BUHID("Buhd", "Buhid"),
        CHAKMA("Cakm", "Chakma"),
        CANADIAN_SYLLABICS("Cans", "Canadian Syllabics"),
        CARIAN("Cari", "Carian"),
        CHAM("Cham", "Cham"),
        CHEROKEE("Cher", "Cherokee"),
        CIRTH("Cirt", "Cirth"),
        COPTIC("Copt", "Coptic"),
        CYPRIOT("Cprt", "Cypriot"),
        CYRILLIC("Cyrl", "Cyrillic"),
        CYRILLIC_OLD_CHURCH_SLAVONIC_VARIANT("Cyrs", "Cyrillic (Old Church Slavonic variant)"),
        DEVANAGARI("Deva", "Devanagari"),
        DESERET("Dsrt", "Deseret"),
        EGYPTIAN_DEMOTIC("Egyd", "Egyptian demotic"),
        EGYPTIAN_HIERATIC("Egyh", "Egyptian hieratic"),
        EGYPTIAN_HIEROGLYPHS("Egyp", "Egyptian hieroglyphs"),
        ETHIOPIC("Ethi", "Ethiopic"),
        KHUTSURI("Geok", "Khutsuri"),
        GEORGIAN("Geor", "Georgian"),
        GLAGOLITIC("Glag", "Glagolitic"),
        GOTHIC("Goth", "Gothic"),
        GREEK("Grek", "Greek"),
        GUJARATI("Gujr", "Gujarati"),
        GURMUKHI("Guru", "Gurmukhi"),
        HANGUL("Hang", "Hangul"),
        HAN_HANJA("Hani", "Han (Hanzi, Kanji, Hanja)"),
        HANUNOO("Hano", "Hanunoo"),
        HAN_SIMPLIFIED("Hans", "Han (Simplified variant)"),
        HAN_TRADITIONAL("Hant", "Han (Traditional variant)"),
        HEBREW("Hebr", "Hebrew"),
        HIRAGANA("Hira", "Hiragana"),
        PAHAWH_HMONG("Hmng", "Pahawh Hmong"),
        HIRAGANA_KATAKANA("Hrkt", "Hiragana + Katakana"),
        OLD_HUNGARIAN("Hung", "Old Hungarian"),
        INDUS("Inds", "Indus"),
        OLD_ITALIC("Ital", "Old Italic"),
        JAVANESE("Java", "Javanese"),
        JAPANESE("Jpan", "Japanese"),
        KAYAH_LI("Kali", "Kayah Li"),
        KATAKANA("Kana", "Katakana"),
        KHAROSHTHI("Khar", "Kharoshthi"),
        KHMER("Khmr", "Khmer"),
        KANNADA("Knda", "Kannada"),
        KOREAN("Kore", "Korean"),
        KAITHI("Kthi", "Kaithi"),
        LANNA("Lana", "Lanna"),
        LAO("Laoo", "Lao"),
        LATIN_FRAKTUR_VARIANT("Latf", "Latin (Fraktur variant)"),
        LATIN_GAELIC_VARIANT("Latg", "Latin (Gaelic variant)"),
        LATIN("Latn", "Latin"),
        LEPCHA("Lepc", "Lepcha"),
        LIMBU("Limb", "Limbu"),
        LINEAR_A("Lina", "Linear A"),
        LINEAR_B("Linb", "Linear B"),
        LYCIAN("Lyci", "Lycian"),
        LYDIAN("Lydi", "Lydian"),
        MANDAEAN("Mand", "Mandaean"),
        MANICHAEAN("Mani", "Manichaean"),
        MAYAN_HIEROGLYPHS("Maya", "Mayan hieroglyphs"),
        MEROITIC("Mero", "Meroitic"),
        MALAYALAM("Mlym", "Malayalam"),
        MONGOLIAN("Mong", "Mongolian"),
        MOON("Moon", "Moon"),
        MEITEI_MAYEK("Mtei", "Meitei Mayek"),
        MYANMAR("Mymr", "Myanmar"),
        NKO("Nkoo", "N'ko"),
        OGHAM("Ogam", "Ogham"),
        OL_CHIKI("Olck", "Ol Chiki"),
        ORKHON("Orkh", "Orkhon"),
        ORIYA("Orya", "Oriya"),
        OSMANYA("Osma", "Osmanya"),
        OLD_PERMIC("Perm", "Old Permic"),
        PHAGS_PA("Phag", "Phags-pa"),
        INSCRIPTIONAL_PAHLAVI("Phli", "Inscriptional Pahlavi"),
        PSALTER_PAHLAVI("Phlp", "Psalter Pahlavi"),
        BOOK_PAHLAVI("Phlv", "Book Pahlavi"),
        PHOENICIAN("Phnx", "Phoenician"),
        POLLARD_PHONETIC("Plrd", "Pollard Phonetic"),
        INSCRIPTIONAL_PARTHIAN("Prti", "Inscriptional Parthian"),
        REJANG("Rjng", "Rejang"),
        RONGORONGO("Roro", "Rongorongo"),
        RUNIC("Runr", "Runic"),
        SAMARITAN("Samr", "Samaritan"),
        SARATI("Sara", "Sarati"),
        SAURASHTRA("Saur", "Saurashtra"),
        SIGNWRITING("Sgnw", "SignWriting"),
        SHAVIAN("Shaw", "Shavian"),
        SINHALA("Sinh", "Sinhala"),
        SUNDANESE("Sund", "Sundanese"),
        SYLOTI_NAGRI("Sylo", "Syloti Nagri"),
        SYRIAC("Syrc", "Syriac"),
        SYRIAC_ESTRANGELO_VARIANT("Syre", "Syriac (Estrangelo variant)"),
        SYRIAC_WESTERN_VARIANT("Syrj", "Syriac (Western variant)"),
        SYRIAC_EASTERN_VARIANT("Syrn", "Syriac (Eastern variant)"),
        TAGBANWA("Tagb", "Tagbanwa"),
        TAI_LE("Tale", "Tai Le"),
        TAI_LUE("Talu", "Tai Lue"),
        TAMIL("Taml", "Tamil"),
        TAI_VIET("Tavt", "Tai Viet"),
        TELUGU("Telu", "Telugu"),
        TENGWAR("Teng", "Tengwar"),
        TIFINAGH("Tfng", "Tifinagh"),
        TAGALOG("Tglg", "Tagalog"),
        THAANA("Thaa", "Thaana"),
        THAI("Thai", "Thai"),
        TIBETAN("Tibt", "Tibetan"),
        UGARITIC("Ugar", "Ugaritic"),
        VAI("Vaii", "Vai"),
        VISIBLE_SPEECH("Visp", "Visible Speech"),
        OLD_PERSIAN("Xpeo", "Old Persian"),
        CUNEIFORM_SUMERO_AKKADIAN("Xsux", "Cuneiform, Sumero-Akkadian"),
        YI("Yiii", "Yi"),
        MATHEMATICAL_NOTATION("Zmth", "Mathematical notation"),
        SYMBOLS("Zsym", "Symbols"),;

        private String code;
        private String description;

        Script(String code, String description)
        {
            this.code = code;
            this.description = description;
        }

        public String getCode()
        {
            return code;
        }

        public String getDescription()
        {
            return description;
        }

        public String toString()
        {
            return getDescription();
        }
    }
    
    public static String[] getDescriptionsAsArray()
    {
        List<String> descriptions = new ArrayList<String>();
        for(Script script:Script.values())
        {
            descriptions.add(script.description);
        }
        return descriptions.toArray(new String[0]);
    }
}