ADUtils.java 7.79 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.dct.exception.DCTException
 *  com.adobe.dct.service.DataDictionaryUtilService
 *  com.adobe.dct.transfer.DataDictionaryInstance
 *  com.adobe.icc.dbforms.obj.LetterRenderOptionsSpec
 *  com.adobe.icc.render.obj.ContextData
 *  org.apache.commons.lang3.StringUtils
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.fd.adaddon.internal.utils;

import com.adobe.dct.exception.DCTException;
import com.adobe.dct.service.DataDictionaryUtilService;
import com.adobe.dct.transfer.DataDictionaryInstance;
import com.adobe.icc.dbforms.obj.LetterRenderOptionsSpec;
import com.adobe.icc.render.obj.ContextData;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class ADUtils {
    private static Logger log = LoggerFactory.getLogger(ADUtils.class);
    private static final String NAME_ATTR = "name";
    private static final String SOM_EXPR_ATTR = "somExpr";

    private static Map<String, String> variableNodesToMap(NodeList variablesNode) {
        HashMap<String, String> variableValueMap = new HashMap<String, String>();
        if (variablesNode != null) {
            for (int i = 0; i < variablesNode.getLength(); ++i) {
                Node nameAttr;
                Node variable = variablesNode.item(i);
                if (variable == null || variable.getAttributes() == null || (nameAttr = variable.getAttributes().getNamedItem("name")) == null) continue;
                String varName = nameAttr.getNodeValue();
                log.debug("VarFromXML name=" + varName + " , val=" + variable.getTextContent());
                if (!StringUtils.isNotBlank((CharSequence)varName)) continue;
                variableValueMap.put(varName, variable.getTextContent());
            }
        }
        return variableValueMap;
    }

    private static NodeList extractVariableNodesFromData(Document data) throws XPathExpressionException {
        if (data != null) {
            Element rootElement = data.getDocumentElement();
            XPath xPath = XPathFactory.newInstance().newXPath();
            return (NodeList)xPath.evaluate("/*/variables/variable", rootElement, XPathConstants.NODESET);
        }
        return null;
    }

    public static Map<String, Object> prepareVariablesMapForContextData(Map<String, String> variablesMap) {
        HashMap<String, Object> map = new HashMap<String, Object>();
        log.debug("prepareVariablesMapForContextData: begin [[");
        if (variablesMap != null) {
            for (Map.Entry<String, String> me : variablesMap.entrySet()) {
                map.put(me.getKey(), me.getValue());
                log.debug("key={} , value={}", (Object)me.getKey(), (Object)me.getValue());
            }
        }
        log.debug("]] prepareVariablesMapForContextData: end");
        return map;
    }

    public static Map<String, String> extractVariablesFromData(Document data) throws XPathExpressionException {
        return ADUtils.variableNodesToMap(ADUtils.extractVariableNodesFromData(data));
    }

    public static Map<String, String> extractFieldsFromData(Document data) throws XPathExpressionException {
        Map fieldValueMap = new HashMap<String, String>();
        if (data != null) {
            Element rootElement = data.getDocumentElement();
            XPath xPath = XPathFactory.newInstance().newXPath();
            NodeList fieldNodes = (NodeList)xPath.evaluate("/*/fields/field", rootElement, XPathConstants.NODESET);
            fieldValueMap = ADUtils.extractFields(fieldNodes);
        }
        return fieldValueMap;
    }

    private static Map<String, String> extractFields(NodeList fieldNodes) {
        HashMap<String, String> fieldValueMap = new HashMap<String, String>();
        if (fieldNodes != null) {
            for (int i = 0; i < fieldNodes.getLength(); ++i) {
                String fieldName;
                Node field = fieldNodes.item(i);
                if (field == null || field.getAttributes() == null) continue;
                NamedNodeMap attributes = field.getAttributes();
                Node nameAttr = attributes.getNamedItem("name");
                Node somAttr = attributes.getNamedItem("somExpr");
                if (somAttr != null) {
                    String somExpr = somAttr.getNodeValue();
                    if (!StringUtils.isNotBlank((CharSequence)somExpr)) continue;
                    fieldValueMap.put("somExpr:" + somExpr, field.getTextContent());
                    log.debug("somExpr =" + somExpr + ", " + field.getTextContent());
                    continue;
                }
                if (nameAttr == null || !StringUtils.isNotBlank((CharSequence)(fieldName = nameAttr.getNodeValue()))) continue;
                fieldValueMap.put("name:" + fieldName, field.getTextContent());
                log.debug("fieldName =" + fieldName + ", " + field.getTextContent());
            }
        }
        return fieldValueMap;
    }

    public static void initializeContextData(ContextData contextData, DataDictionaryInstance ddi) {
        if (ddi != null) {
            contextData.setDataDictionaryInstance(ddi);
        } else {
            contextData.setDataDictionaryInstance(new DataDictionaryInstance());
        }
        LetterRenderOptionsSpec lros = new LetterRenderOptionsSpec(true, true, false, false, false);
        lros.setUseHTMLBullets(true);
        contextData.setLetterRenderOptionsSpec(lros);
        contextData.setIncludeEmptyConditions(true);
        contextData.setIncludeEmptyLists(true);
    }

    public static ContextData createContextData(DataDictionaryInstance ddi) {
        ContextData contextData = new ContextData();
        ADUtils.initializeContextData(contextData, ddi);
        return contextData;
    }

    public static DataDictionaryInstance createDataDictionary(DataDictionaryUtilService dataDictionaryUtilService, String dataDictionaryRef, String data) {
        log.debug("createDataDictionary: " + dataDictionaryRef);
        DataDictionaryInstance ddi = null;
        if (StringUtils.contains((CharSequence)dataDictionaryRef, (CharSequence)"/")) {
            dataDictionaryRef = dataDictionaryRef.substring(dataDictionaryRef.lastIndexOf("/") + 1);
        }
        if (StringUtils.isNotBlank((CharSequence)dataDictionaryRef)) {
            try {
                ddi = dataDictionaryUtilService.createDDInstanceFromXml(dataDictionaryRef, data);
                log.debug("createDataDictionary:ddName=" + dataDictionaryRef + ", ddi = " + (Object)ddi);
            }
            catch (DCTException e) {
                log.error("Error creating ddi", (Throwable)e);
            }
        }
        return ddi;
    }

    public static boolean isLetterInstanceData(Document data) throws XPathExpressionException {
        if (data != null) {
            XPath xPath = XPathFactory.newInstance().newXPath();
            Node iccNode = (Node)xPath.evaluate("//*[local-name()='icc']", data.getDocumentElement(), XPathConstants.NODE);
            return iccNode != null;
        }
        return false;
    }

    public static String computeAbsoluteSOM(String containerTaSom, String elementSom) {
        int idx = elementSom.indexOf(".", 19);
        String elementPath = elementSom.substring(idx + 1);
        String updatedSOM = containerTaSom + "." + elementPath;
        log.debug("computeAbsoluteSOM SOM [" + containerTaSom + "] + [" + elementSom + "] to [" + updatedSOM + "]");
        return updatedSOM;
    }
}