EnumValue.java 7.5 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.xfa;

import com.adobe.xfa.Attribute;
import com.adobe.xfa.EnumAttr;
import com.adobe.xfa.EnumType;
import com.adobe.xfa.XFA;
import com.adobe.xfa.ut.StringUtils;

public final class EnumValue
extends Attribute {
    private final EnumAttr mValue;
    private final int meAttr;
    private static final int[][] mAmbiguousTypes = new int[][]{{XFA.TYPETAG, -2145648640}, {XFA.TYPETAG, -2144796672}, {XFA.TYPETAG, -2144665600}, {XFA.TYPETAG, -2140930048}, {XFA.TYPETAG, -2141716480}, {XFA.OPERATIONTAG, -2140995584}, {XFA.OPERATIONTAG, -2145124352}, {XFA.OVERRIDETAG, -2144862208}, {XFA.OVERRIDETAG, 1074003968}, {XFA.TOTAG, -2145517568}, {XFA.TOTAG, -2144927744}, {XFA.FORMATTAG, -2142502912}, {XFA.FORMATTAG, -2138112000}, {XFA.RELATIONTAG, -2144600064}, {XFA.RELATIONTAG, -2140209152}, {XFA.NAMETAG, 5242880}, {XFA.NAMETAG, -2142175232}, {XFA.NAMETAG, -2142109696}, {XFA.NAMETAG, -2142044160}, {XFA.NAMETAG, 9502720}, {XFA.NAMETAG, -2141978624}};
    private static final int[][] mConfigTypes = new int[][]{{XFA.ACCESSIBLECONTENTTAG, 1074003968}, {XFA.ADDSILENTPRINTTAG, 1074003968}, {XFA.ADDVIEWERPREFERENCESTAG, 1074003968}, {XFA.ADJUSTDATATAG, 1074003968}, {XFA.ATTRIBUTESTAG, 1073938432}, {XFA.CHANGETAG, 1074003968}, {XFA.COMPRESSLOGICALSTRUCTURETAG, 1074003968}, {XFA.COMPRESSOBJECTSTREAMTAG, 1074003968}, {XFA.CONFORMANCETAG, 1082261504}, {XFA.CONTENTCOPYTAG, 1074003968}, {XFA.DESTINATIONTAG, 1078001664}, {XFA.DOCUMENTASSEMBLYTAG, 1074003968}, {XFA.DUPLEXOPTIONTAG, 1081409536}, {XFA.DYNAMICRENDERTAG, 1080426496}, {XFA.EMBEDRENDEREDOUTPUTTAG, 1074003968}, {XFA.EMBEDTAG, 1074003968}, {XFA.ENABLETAG, 1074003968}, {XFA.ENCRYPTIONLEVELTAG, 1074397184}, {XFA.ENCRYPTTAG, 1074003968}, {XFA.FLIPLABELTAG, 1074003968}, {XFA.FORMFIELDFILLINGTAG, 1074003968}, {XFA.IFEMPTYTAG, 1075314688}, {XFA.INTERACTIVETAG, 1074003968}, {XFA.INCREMENTALLOADTAG, 1078394880}, {XFA.JOGTAG, 1081737216}, {XFA.LAYOUTTAG, 1079771136}, {XFA.LINEARIZEDTAG, 1074003968}, {XFA.LOCKTAG, 1074003968}, {XFA.MODETAG, 1075904512}, {XFA.OVERPRINTTAG, 1082327040}, {XFA.PAGINATIONTAG, 1081671680}, {XFA.PAGINATIONOVERRIDETAG, 1082589184}, {XFA.PLAINTEXTMETADATATAG, 1074003968}, {XFA.PRESENCETAG, 1076494336}, {XFA.PRINTTAG, 1074003968}, {XFA.RENDERPOLICYTAG, 1080557568}, {XFA.RUNSCRIPTSTAG, 1080754176}, {XFA.SCRIPTMODELTAG, 1076690944}, {XFA.SEVERITYTAG, 1076822016}, {XFA.SUBMITFORMATTAG, 1077346304}, {XFA.SUPPRESSBANNERTAG, 1074003968}, {XFA.TAGGEDMODETAG, 1080688640}, {XFA.TAGGEDTAG, 1074003968}, {XFA.THRESHOLDTAG, 1075838976}, {XFA.TOTAG, -2144927744}, {XFA.TOTAG, -2145517568}, {XFA.TYPETAG, 5177344}, {XFA.VALIDATETAG, 1074003968}, {XFA.WHITESPACETAG, 1077870592}, {XFA.VALIDATIONMESSAGINGTAG, 1082654720}, {XFA.PRINTSCALINGTAG, 1082785792}, {XFA.PICKTRAYBYPDFSIZETAG, 1074003968}, {XFA.ADBE_JSDEBUGGERTAG, 1083179008}, {XFA.ADBE_JSCONSOLETAG, 1083179008}};
    private static final EnumValue[][] mAllEnumAttrs = new EnumValue[XFA.XFA_ATTR_COUNT][];
    private static final EnumValue[][] mAmbiguousAttrs = new EnumValue[mAmbiguousTypes.length][];
    private static final EnumValue[][] mConfigAttrs = new EnumValue[mConfigTypes.length][];

    private EnumValue(EnumType enumType, int eAttrTag, String NS, String localName, String qName, String value) {
        super(NS, localName, qName, value, false);
        this.mValue = EnumAttr.getEnum(enumType, this.getAttrValue());
        this.meAttr = eAttrTag;
    }

    public EnumAttr getAttr() {
        return this.mValue;
    }

    public int getInt() {
        return this.mValue.getInt();
    }

    public EnumType getType() {
        return this.mValue.getType();
    }

    @Override
    public Attribute newAttribute(String value) {
        return this.newAttribute(null, null, null, value, true);
    }

    @Override
    public Attribute newAttribute(String NS, String localName, String qName, String value) {
        return this.newAttribute(NS, localName, qName, value, true);
    }

    @Override
    public Attribute newAttribute(String NS, String localName, String qName, String value, boolean internSymbols) {
        if (StringUtils.isEmpty(value)) {
            return this;
        }
        if (internSymbols) {
            value = value.intern();
        }
        return EnumValue.getEnum(this.mValue.getType(), this.meAttr, value);
    }

    public int getAttrTag() {
        return this.meAttr;
    }

    private static EnumValue getEnum(EnumType enumType, int eAttrTag, String value) {
        EnumAttr a = EnumAttr.getEnum(enumType, value);
        return EnumValue.getEnum(eAttrTag, a);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    public static EnumValue getEnum(int eAttrTag, EnumAttr value) {
        EnumValue v;
        int offset;
        EnumValue[][] arrenumValue;
        EnumType enumType = value.getType();
        int eType = enumType.getInt();
        int index = -1;
        EnumValue[] vals = null;
        if (enumType.usedAmbiguously()) {
            for (index = 0; index < mAmbiguousTypes.length && (mAmbiguousTypes[index][0] != eAttrTag || mAmbiguousTypes[index][1] != eType); ++index) {
            }
        } else if (enumType.usedElementarily()) {
            for (index = 0; index < mConfigTypes.length && (mConfigTypes[index][0] != eAttrTag || mConfigTypes[index][1] != eType); ++index) {
            }
            if (index == mConfigTypes.length) {
                index = -1;
            }
        }
        if (index == -1) {
            assert (eAttrTag > XFA.XFA_ELEMENTS + 2);
            vals = mAllEnumAttrs[eAttrTag - (XFA.XFA_ELEMENTS + 2)];
            if (vals == null) {
                arrenumValue = mAllEnumAttrs;
                synchronized (arrenumValue) {
                    vals = mAllEnumAttrs[eAttrTag - (XFA.XFA_ELEMENTS + 2)];
                    if (vals == null) {
                        vals = new EnumValue[value.getValues().length];
                        EnumValue.mAllEnumAttrs[eAttrTag - (XFA.XFA_ELEMENTS + 2)] = vals;
                    }
                }
            }
        } else if (enumType.usedAmbiguously()) {
            vals = mAmbiguousAttrs[index];
            if (vals == null) {
                arrenumValue = mAmbiguousAttrs;
                synchronized (arrenumValue) {
                    vals = mAmbiguousAttrs[index];
                    if (vals == null) {
                        vals = new EnumValue[value.getValues().length];
                        EnumValue.mAmbiguousAttrs[index] = vals;
                    }
                }
            }
        } else {
            vals = mConfigAttrs[index];
            if (vals == null) {
                arrenumValue = mConfigAttrs;
                synchronized (arrenumValue) {
                    vals = mConfigAttrs[index];
                    if (vals == null) {
                        vals = new EnumValue[value.getValues().length];
                        EnumValue.mConfigAttrs[index] = vals;
                    }
                }
            }
        }
        if ((v = vals[offset = value.getInt() & 65535]) == null) {
            EnumValue[] arrenumValue2 = vals;
            synchronized (arrenumValue2) {
                v = vals[offset];
                if (v == null) {
                    String name = XFA.getString(eAttrTag);
                    vals[offset] = v = new EnumValue(enumType, eAttrTag, null, name, name, value.toString());
                }
            }
        }
        return v;
    }

    public static EnumValue getEnum(int eAttrTag, int value) {
        return EnumValue.getEnum(eAttrTag, EnumAttr.getEnum(value));
    }
}