CharsetICU.java 8.04 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  [Ljava.lang.String;
 */
package com.adobe.agl.charset;

import com.adobe.agl.charset.CharsetProviderICU;
import com.adobe.agl.text.UnicodeSet;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
import java.util.HashMap;

[Ljava.lang.String;;

public abstract class CharsetICU
extends Charset {
    String icuCanonicalName;
    String javaCanonicalName;
    int options;
    float maxCharsPerByte;
    String name;
    int codepage;
    byte platform;
    byte conversionType;
    int minBytesPerChar;
    int maxBytesPerChar;
    byte[] subChar;
    byte subCharLen;
    byte hasToUnicodeFallback;
    byte hasFromUnicodeFallback;
    short unicodeMask;
    byte subChar1;
    public static final int ROUNDTRIP_SET = 0;
    public static final int ROUNDTRIP_AND_FALLBACK_SET = 1;
    private static final HashMap algorithmicCharsets = new HashMap<K, V>();

    protected CharsetICU(String icuCanonicalName, String canonicalName, String[] aliases) {
        super(canonicalName, aliases);
        if (canonicalName.length() == 0) {
            throw new IllegalCharsetNameException(canonicalName);
        }
        this.javaCanonicalName = canonicalName;
        this.icuCanonicalName = icuCanonicalName;
    }

    public boolean contains(Charset cs) {
        if (null == cs) {
            return false;
        }
        if (this.equals(cs)) {
            return true;
        }
        return false;
    }

    static final Charset getCharset(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
        String className;
        className = (String)algorithmicCharsets.get(icuCanonicalName);
        if (className == null) {
            className = "com.adobe.agl.charset.CharsetMBCS";
        }
        try {
            CharsetICU conv = null;
            Class cs = Class.forName(className);
            Class[] arrclass = new Class[3];
            Class class_ = String.class;
            arrclass[0] = class_;
            arrclass[1] = String.class;
            Class class_2 = String;.class;
            arrclass[2] = class_2;
            Class[] paramTypes = arrclass;
            Constructor c = cs.getConstructor(paramTypes);
            Object[] params = new Object[]{icuCanonicalName, javaCanonicalName, aliases};
            try {
                Object obj = c.newInstance(params);
                if (obj != null && obj instanceof CharsetICU) {
                    conv = (CharsetICU)obj;
                    return conv;
                }
            }
            catch (InvocationTargetException e) {
                throw new UnsupportedCharsetException(icuCanonicalName + ": " + "Could not load " + className + ". Exception:" + e.getTargetException());
            }
        }
        catch (ClassNotFoundException ex) {
        }
        catch (NoSuchMethodException ex) {
        }
        catch (IllegalAccessException ex) {
        }
        catch (InstantiationException ex) {
            // empty catch block
        }
        throw new UnsupportedCharsetException(icuCanonicalName + ": " + "Could not load " + className);
    }

    static final boolean isSurrogate(int c) {
        return (c & -2048) == 55296;
    }

    public static Charset forNameICU(String charsetName) throws IllegalCharsetNameException, UnsupportedCharsetException {
        CharsetProviderICU icuProvider = new CharsetProviderICU();
        CharsetICU cs = (CharsetICU)icuProvider.charsetForName(charsetName);
        if (cs != null) {
            return cs;
        }
        return Charset.forName(charsetName);
    }

    abstract void getUnicodeSetImpl(UnicodeSet var1, int var2);

    public void getUnicodeSet(UnicodeSet setFillIn, int which) {
        if (setFillIn == null || which != 0) {
            throw new IllegalArgumentException();
        }
        setFillIn.clear();
        this.getUnicodeSetImpl(setFillIn, which);
    }

    static void getNonSurrogateUnicodeSet(UnicodeSet setFillIn) {
        setFillIn.add(0, 55295);
        setFillIn.add(57344, 1114111);
    }

    static void getCompleteUnicodeSet(UnicodeSet setFillIn) {
        setFillIn.add(0, 1114111);
    }

    static {
        algorithmicCharsets.put("BOCU-1", "com.adobe.agl.charset.CharsetBOCU1");
        algorithmicCharsets.put("SCSU", "com.adobe.agl.charset.CharsetSCSU");
        algorithmicCharsets.put("US-ASCII", "com.adobe.agl.charset.CharsetASCII");
        algorithmicCharsets.put("ISO-8859-1", "com.adobe.agl.charset.Charset88591");
        algorithmicCharsets.put("UTF-16", "com.adobe.agl.charset.CharsetUTF16");
        algorithmicCharsets.put("UTF-16BE", "com.adobe.agl.charset.CharsetUTF16BE");
        algorithmicCharsets.put("UTF-16LE", "com.adobe.agl.charset.CharsetUTF16LE");
        algorithmicCharsets.put("UTF16_OppositeEndian", "com.adobe.agl.charset.CharsetUTF16LE");
        algorithmicCharsets.put("UTF16_PlatformEndian", "com.adobe.agl.charset.CharsetUTF16");
        algorithmicCharsets.put("UTF-32", "com.adobe.agl.charset.CharsetUTF32");
        algorithmicCharsets.put("UTF-32BE", "com.adobe.agl.charset.CharsetUTF32BE");
        algorithmicCharsets.put("UTF-32LE", "com.adobe.agl.charset.CharsetUTF32LE");
        algorithmicCharsets.put("UTF32_OppositeEndian", "com.adobe.agl.charset.CharsetUTF32LE");
        algorithmicCharsets.put("UTF32_PlatformEndian", "com.adobe.agl.charset.CharsetUTF32");
        algorithmicCharsets.put("UTF-8", "com.adobe.agl.charset.CharsetUTF8");
        algorithmicCharsets.put("CESU-8", "com.adobe.agl.charset.CharsetCESU8");
        algorithmicCharsets.put("UTF-7", "com.adobe.agl.charset.CharsetUTF7");
        algorithmicCharsets.put("ISCII,version=0", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=1", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=2", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=3", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=4", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=5", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=6", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=7", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=8", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=0,mac", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=2,mac", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("ISCII,version=3,mac", "com.adobe.agl.charset.CharsetISCII");
        algorithmicCharsets.put("IMAP-mailbox-name", "com.adobe.agl.charset.CharsetUTF7");
        algorithmicCharsets.put("HZ", "com.adobe.agl.charset.CharsetHZ");
        algorithmicCharsets.put("machebrew", "com.adobe.agl.charset.CharsetMacHebrew");
        algorithmicCharsets.put("macarabic", "com.adobe.agl.charset.CharsetMacArabic");
        algorithmicCharsets.put("ISO_2022,locale=ja,version=0", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=ja,version=1", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=ja,version=2", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=ja,version=3", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=ja,version=4", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=zh,version=0", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=zh,version=1", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=ko,version=0", "com.adobe.agl.charset.CharsetISO2022");
        algorithmicCharsets.put("ISO_2022,locale=ko,version=1", "com.adobe.agl.charset.CharsetISO2022");
    }
}