ADHelperServiceImpl.java 9.62 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.aemds.guide.utils.XMLUtils
 *  com.adobe.dct.exception.DCTException
 *  com.adobe.dct.service.DataDictionaryUtilService
 *  com.adobe.dct.transfer.DataDictionaryInstance
 *  com.adobe.icc.dbforms.obj.ContainerLayoutAssignment
 *  com.adobe.icc.dbforms.obj.Letter
 *  com.adobe.icc.dbforms.obj.TargetAreaAssignment
 *  com.adobe.icc.ddg.api.HTML5ModuleResolverService
 *  com.adobe.icc.render.obj.ContextData
 *  com.adobe.icc.services.api.DataModuleService
 *  com.adobe.icc.services.api.LetterService
 *  org.apache.commons.lang3.StringUtils
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.fd.adaddon.service.impl;

import com.adobe.aemds.guide.utils.XMLUtils;
import com.adobe.dct.exception.DCTException;
import com.adobe.dct.service.DataDictionaryUtilService;
import com.adobe.dct.transfer.DataDictionaryInstance;
import com.adobe.fd.adaddon.internal.utils.ADUtils;
import com.adobe.fd.adaddon.internal.utils.LetterInstanceParser;
import com.adobe.icc.dbforms.obj.ContainerLayoutAssignment;
import com.adobe.icc.dbforms.obj.Letter;
import com.adobe.icc.dbforms.obj.TargetAreaAssignment;
import com.adobe.icc.ddg.api.HTML5ModuleResolverService;
import com.adobe.icc.render.obj.ContextData;
import com.adobe.icc.services.api.DataModuleService;
import com.adobe.icc.services.api.LetterService;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.xpath.XPathExpressionException;
import org.apache.commons.lang3.StringUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

@Component(immediate=1, label="ADHelperServiceImpl", description="ADHelperServiceImpl")
@Service(value={ADHelperServiceImpl.class})
public class ADHelperServiceImpl {
    Logger logger = LoggerFactory.getLogger(ADHelperServiceImpl.class);
    @Reference
    DataDictionaryUtilService dataDictionaryUtilService;
    @Reference
    LetterService letterService;
    @Reference
    HTML5ModuleResolverService html5ModuleResolverService;
    @Reference
    DataModuleService dataModuleService;

    public DataDictionaryInstance updateContextDataForDD(String ddRef, Document data, ContextData contextData) throws XPathExpressionException {
        Map<String, Object> variableValueMap = ADUtils.prepareVariablesMapForContextData(ADUtils.extractVariablesFromData(data));
        DataDictionaryInstance ddi = this.createDataDictionary(ddRef, data);
        ADUtils.initializeContextData(contextData, ddi);
        contextData.setLocalVariables(variableValueMap);
        return ddi;
    }

    public Map<String, Object> updateContextDataForLetter(String letterRef, Document data, ContextData contextData) throws DCTException, XPathExpressionException {
        Letter letter = this.letterService.getLetter(letterRef);
        String ddRef = letter.getDataDictionaryRef();
        this.logger.debug("updateContextDataForLetter: DDRef {} from letter {} ", (Object)ddRef, (Object)letterRef);
        Map<String, String> variableValuesFromXMLMap = ADUtils.extractVariablesFromData(data);
        Map<String, String> fieldsValueFromXMLMap = ADUtils.extractFieldsFromData(data);
        DataDictionaryInstance ddi = this.createDataDictionary(letter.getDataDictionaryRef(), data);
        ADUtils.initializeContextData(contextData, ddi);
        Map fieldValueMap = this.html5ModuleResolverService.updateContextDataAndFieldValueMap(letter, contextData, fieldsValueFromXMLMap, variableValuesFromXMLMap);
        if (this.logger.isDebugEnabled()) {
            if (fieldValueMap != null) {
                for (Map.Entry me : fieldValueMap.entrySet()) {
                    this.logger.debug("faid =" + (String)me.getKey() + ", val=" + me.getValue());
                }
            }
            Map varMap = contextData.getLocalVariables();
            this.logger.debug("local variables map " + varMap);
        }
        return fieldValueMap;
    }

    public Map<String, Object> updateContextDataForLetterInstance(Document letterInstanceData, ContextData contextData, Map<String, Object> moduleParameter) throws XPathExpressionException, DCTException, UnsupportedEncodingException {
        LetterInstanceParser liParser = new LetterInstanceParser(letterInstanceData, this.dataModuleService, false);
        liParser.parse();
        Letter letter = this.letterService.getLetter(liParser.getLetterRef());
        moduleParameter.put("LETTER_OBJ", (Object)letter);
        this.updateLetter(letter, liParser.getTargetAreaAssignmentList());
        Map<String, String> variableValuesFromXMLMap = ADUtils.extractVariablesFromData(letterInstanceData);
        Map<String, String> fieldsValueFromXMLMap = ADUtils.extractFieldsFromData(letterInstanceData);
        variableValuesFromXMLMap.putAll(liParser.getVariablesValueMap());
        fieldsValueFromXMLMap.putAll(liParser.getFieldsValueMap());
        String ddRef = letter.getDataDictionaryRef();
        DataDictionaryInstance ddi = new DataDictionaryInstance();
        if (liParser.getDdiXML() != null) {
            ddi = ADUtils.createDataDictionary(this.dataDictionaryUtilService, ddRef, XMLUtils.getXMLfromXsdDom((Element)((Element)liParser.getDdiXML())));
        }
        ADUtils.initializeContextData(contextData, ddi);
        Map fieldValueMap = this.html5ModuleResolverService.updateContextDataAndFieldValueMap(letter, contextData, fieldsValueFromXMLMap, variableValuesFromXMLMap);
        if (this.logger.isDebugEnabled()) {
            if (fieldValueMap != null) {
                for (Map.Entry me : fieldValueMap.entrySet()) {
                    this.logger.debug("faid =" + (String)me.getKey() + ", val=" + me.getValue());
                }
            }
            Map varMap = contextData.getLocalVariables();
            this.logger.debug("local variables map " + varMap);
        }
        return fieldValueMap;
    }

    private void updateLetter(Letter letter, List<TargetAreaAssignment> targetAreaAssignmentList) {
        HashMap<String, TargetAreaAssignment> somToTargetAreaMap = new HashMap<String, TargetAreaAssignment>();
        for (TargetAreaAssignment taa : targetAreaAssignmentList) {
            somToTargetAreaMap.put(taa.getTargetAreaPath(), taa);
        }
        this.updateTargetAreaAssignments(letter.getTargetAreaAssignments(), somToTargetAreaMap, "");
    }

    private void updateTargetAreaAssignments(Set<TargetAreaAssignment> targetAreaAssignments, Map<String, TargetAreaAssignment> somToTargetAreaMap, String parentSOM) {
        for (TargetAreaAssignment taa : targetAreaAssignments) {
            String absSom = taa.getTargetAreaPath();
            String string = absSom = StringUtils.isNotBlank((CharSequence)parentSOM) ? ADUtils.computeAbsoluteSOM(parentSOM, absSom) : absSom;
            if (taa.getContainerLayoutAssignmentList() != null && taa.getContainerLayoutAssignmentList().size() > 0) {
                this.updateTargetAreaAssignments(((ContainerLayoutAssignment)taa.getContainerLayoutAssignmentList().get(0)).getTargetAreaAssignments(), somToTargetAreaMap, absSom);
                continue;
            }
            TargetAreaAssignment taaFromLI = somToTargetAreaMap.get(absSom);
            this.updateTargetAreaAssignment(taa, taaFromLI);
        }
    }

    private void updateTargetAreaAssignment(TargetAreaAssignment taa, TargetAreaAssignment taaFromLI) {
        if (taa != null && taaFromLI != null) {
            taa.setModuleAssignmentList(taaFromLI.getModuleAssignmentList());
        }
    }

    private DataDictionaryInstance createDataDictionary(String dataDictionaryRef, Document data) {
        if (data != null) {
            return ADUtils.createDataDictionary(this.dataDictionaryUtilService, dataDictionaryRef, XMLUtils.getXMLfromXsdDom((Element)data.getDocumentElement()));
        }
        return new DataDictionaryInstance();
    }

    protected void bindDataDictionaryUtilService(DataDictionaryUtilService dataDictionaryUtilService) {
        this.dataDictionaryUtilService = dataDictionaryUtilService;
    }

    protected void unbindDataDictionaryUtilService(DataDictionaryUtilService dataDictionaryUtilService) {
        if (this.dataDictionaryUtilService == dataDictionaryUtilService) {
            this.dataDictionaryUtilService = null;
        }
    }

    protected void bindLetterService(LetterService letterService) {
        this.letterService = letterService;
    }

    protected void unbindLetterService(LetterService letterService) {
        if (this.letterService == letterService) {
            this.letterService = null;
        }
    }

    protected void bindHtml5ModuleResolverService(HTML5ModuleResolverService hTML5ModuleResolverService) {
        this.html5ModuleResolverService = hTML5ModuleResolverService;
    }

    protected void unbindHtml5ModuleResolverService(HTML5ModuleResolverService hTML5ModuleResolverService) {
        if (this.html5ModuleResolverService == hTML5ModuleResolverService) {
            this.html5ModuleResolverService = null;
        }
    }

    protected void bindDataModuleService(DataModuleService dataModuleService) {
        this.dataModuleService = dataModuleService;
    }

    protected void unbindDataModuleService(DataModuleService dataModuleService) {
        if (this.dataModuleService == dataModuleService) {
            this.dataModuleService = null;
        }
    }
}