GenericNode.java 3.29 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.xfa;

import com.adobe.xfa.*;
import com.adobe.xfa.ut.StringUtils;

import java.util.List;

public final class GenericNode
extends ProtoableNode {
    static int[][] goUpdateInfoAttributeTags = new int[][]{{XFA.BEFORETARGETTAG, XFA.AFTERTARGETTAG, XFA.BOOKENDLEADERTAG, XFA.BOOKENDTRAILERTAG, XFA.OVERFLOWTARGETTAG, XFA.OVERFLOWLEADERTAG, XFA.OVERFLOWTRAILERTAG, 0}, {XFA.TARGETTAG, XFA.LEADERTAG, XFA.TRAILERTAG, 0}, {XFA.TARGETTAG, XFA.LEADERTAG, XFA.TRAILERTAG, 0}, {XFA.TARGETTAG, XFA.LEADERTAG, XFA.TRAILERTAG, 0}};
    static int[] goUpdateInfoElementTags = new int[]{XFA.BREAKTAG, XFA.BREAKBEFORETAG, XFA.BREAKAFTERTAG, XFA.OVERFLOWTAG};

    public GenericNode(Element parent, Node prevSibling) {
        super(parent, prevSibling, null, null, null, null, -1, null);
    }

    @Override
    public Element clone(Element pParent, boolean bDeep) {
        GenericNode oClone = (GenericNode)super.clone(pParent, bDeep);
        return oClone;
    }

    @Override
    public Attribute defaultAttribute(int eTag) {
        Element oParent;
        if (eTag == XFA.PRESENCETAG && this.getElementClass() == XFA.EDGETAG && this.isDefault(true) && (oParent = this.getXFAParent()) != null && oParent.isSameClass(XFA.BORDERTAG)) {
            return oParent.defaultAttribute(eTag);
        }
        return super.defaultAttribute(eTag);
    }

    @Override
    public void updateIDValues(String sPrefix, List<String> oldReferenceList) {
        for (int i = 0; i < goUpdateInfoElementTags.length; ++i) {
            if (!this.isSameClass(goUpdateInfoElementTags[i])) continue;
            int nAttrTag = 0;
            while (goUpdateInfoAttributeTags[i][nAttrTag] != 0) {
                int eTag = goUpdateInfoAttributeTags[i][nAttrTag];
                Attribute oAttr = null;
                String aPropertyName = this.getAtom(eTag);
                int attr = this.findSchemaAttr(aPropertyName);
                if (attr != -1) {
                    oAttr = this.getAttr(attr);
                }
                if (oAttr != null) {
                    StringBuilder sAttrValue = new StringBuilder(oAttr.toString());
                    StringBuilder sNewAttrValue = new StringBuilder();
                    String sToken = StringUtils.parseToken(sAttrValue);
                    while (sToken != null) {
                        if (sToken.charAt(0) == '#') {
                            sToken = sToken.substring(1);
                            if (oldReferenceList != null) {
                                oldReferenceList.add(sToken);
                            }
                            sToken = "#" + sPrefix + ":" + sToken;
                        }
                        sNewAttrValue.append(sToken);
                        if (sAttrValue.length() > 0) {
                            sNewAttrValue.append(' ');
                        }
                        sToken = StringUtils.parseToken(sAttrValue);
                    }
                    this.setAttribute(new StringAttr(aPropertyName, sNewAttrValue.toString()), eTag);
                }
                ++nAttrTag;
            }
            break;
        }
    }

    @Override
    public boolean isContextSensitiveAttribute(int eTag) {
        return eTag == XFA.PRESENCETAG || super.isContextSensitiveAttribute(eTag);
    }
}