GuideModuleImporterImpl.java 9.78 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.aemds.guide.service.GuideModuleImporter
 *  com.adobe.dct.exception.DCTException
 *  com.adobe.dct.service.DataDictionaryUtilService
 *  com.adobe.dct.transfer.DataDictionaryInstance
 *  com.adobe.icc.dbforms.obj.Letter
 *  com.adobe.icc.ddg.api.HTML5ModuleResolverService
 *  com.adobe.icc.ddg.api.HTML5ModuleResolverService$ResolutionType
 *  com.adobe.icc.render.obj.ContextData
 *  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.service.GuideModuleImporter;
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.service.impl.ADHelperServiceImpl;
import com.adobe.icc.dbforms.obj.Letter;
import com.adobe.icc.ddg.api.HTML5ModuleResolverService;
import com.adobe.icc.render.obj.ContextData;
import com.adobe.icc.services.api.LetterService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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;

@Component(immediate=1, label="AD Module Resolver", description="AD Module Resolver.")
@Service(value={GuideModuleImporter.class})
public class GuideModuleImporterImpl
implements GuideModuleImporter {
    private Logger logger = LoggerFactory.getLogger(GuideModuleImporterImpl.class);
    @Reference
    ADHelperServiceImpl adHelperService;
    @Reference
    private LetterService letterService;
    @Reference
    private DataDictionaryUtilService dataDictionaryUtilService;
    @Reference
    private HTML5ModuleResolverService html5ModuleResolverService;

    private Object getParam(String paramName, Map<String, Object> moduleParameter) {
        if (moduleParameter != null) {
            return moduleParameter.get(paramName);
        }
        return null;
    }

    private ContextData getContextData(Map<String, Object> moduleParameter) {
        ContextData contextData = (ContextData)this.getParam("CONTEXT_DATA", moduleParameter);
        if (contextData == null) {
            Map<String, String> variablesFromXML;
            String letterRef = (String)this.getParam("letterRef", moduleParameter);
            String ddRef = (String)this.getParam("ddRef", moduleParameter);
            if (letterRef != null) {
                return this.createContextDataForLetterCase(letterRef, moduleParameter);
            }
            if (ddRef != null && this.getParam("AD_DATA_DOCUMENT", moduleParameter) != null) {
                return this.createContextDataForDDCase(ddRef, moduleParameter);
            }
            contextData = ADUtils.createContextData(new DataDictionaryInstance());
            Map<String, String> map = variablesFromXML = moduleParameter != null ? (Map<String, String>)moduleParameter.get("VARIABLE_VALUE_MAP") : null;
            if (variablesFromXML == null && this.getParam("AD_DATA_DOCUMENT", moduleParameter) != null) {
                Document data = (Document)this.getParam("AD_DATA_DOCUMENT", moduleParameter);
                variablesFromXML = this.extractVariablesFromDataSafe(data);
            }
            contextData.setLocalVariables(ADUtils.prepareVariablesMapForContextData(variablesFromXML));
        }
        return contextData;
    }

    private Map<String, String> extractVariablesFromDataSafe(Document data) {
        try {
            return ADUtils.extractVariablesFromData(data);
        }
        catch (XPathExpressionException e) {
            this.logger.error("Exception ", (Throwable)e);
            return new HashMap<String, String>();
        }
    }

    private ContextData createContextDataForLetterCase(String letterRef, Map<String, Object> moduleParameter) {
        Document data = (Document)this.getParam("AD_DATA_DOCUMENT", moduleParameter);
        ContextData contextData = new ContextData();
        try {
            this.adHelperService.updateContextDataForLetter(letterRef, data, contextData);
        }
        catch (XPathExpressionException e) {
            this.logger.error("Exception when creating context data for letter", (Throwable)e);
        }
        catch (DCTException e) {
            this.logger.error("Exception when creating context data for letter", (Throwable)e);
        }
        return contextData;
    }

    private ContextData createContextDataForDDCase(String ddRef, Map<String, Object> moduleParameter) {
        Document data = (Document)this.getParam("AD_DATA_DOCUMENT", moduleParameter);
        ContextData contextData = new ContextData();
        try {
            this.adHelperService.updateContextDataForDD(ddRef, data, contextData);
        }
        catch (XPathExpressionException e) {
            this.logger.error("Exception when creating context data for dd", (Throwable)e);
        }
        return contextData;
    }

    public String getModuleResolution(String assetRef, Map<String, Object> moduleParameter) {
        String resolvedHtml = null;
        HTML5ModuleResolverService.ResolutionType resolutionType = null;
        ArrayList<String> moduleAssetRefs = new ArrayList<String>();
        moduleAssetRefs.add(assetRef);
        if (moduleParameter != null) {
            resolutionType = (HTML5ModuleResolverService.ResolutionType)moduleParameter.get("resolutionType");
        }
        if (resolutionType == null) {
            resolutionType = HTML5ModuleResolverService.ResolutionType.RESOLVED;
        }
        ContextData contextData = null;
        if (resolutionType != HTML5ModuleResolverService.ResolutionType.SUMMARY) {
            contextData = this.getContextData(moduleParameter);
        }
        resolvedHtml = this.html5ModuleResolverService.resolveDataModules(moduleAssetRefs, contextData, resolutionType);
        return resolvedHtml;
    }

    public String getModuleGroupResolution(String assetRef, Map<String, Object> moduleParameter) {
        String resolvedHtml = null;
        if (moduleParameter != null) {
            HTML5ModuleResolverService.ResolutionType resolutionType = (HTML5ModuleResolverService.ResolutionType)moduleParameter.get("resolutionType");
            if (resolutionType == null) {
                resolutionType = HTML5ModuleResolverService.ResolutionType.RESOLVED;
            }
            ContextData contextData = null;
            if (resolutionType != HTML5ModuleResolverService.ResolutionType.SUMMARY) {
                contextData = this.getContextData(moduleParameter);
            }
            if (!StringUtils.isEmpty((CharSequence)assetRef)) {
                assetRef = StringUtils.substringAfter((String)assetRef, (String)"TAA_ID:");
                if (moduleParameter.get("LETTER_OBJ") != null) {
                    Letter letter = (Letter)moduleParameter.get("LETTER_OBJ");
                    try {
                        resolvedHtml = this.html5ModuleResolverService.resolveTargetAreaAssignment(letter, assetRef, contextData, resolutionType);
                    }
                    catch (Exception e) {
                        this.logger.warn("Failed to get resolved html", (Throwable)e);
                    }
                } else {
                    String letterRef = (String)moduleParameter.get("letterRef");
                    resolvedHtml = this.html5ModuleResolverService.resolveTargetAreaAssignment(letterRef, assetRef, contextData, resolutionType);
                }
            } else {
                resolvedHtml = this.html5ModuleResolverService.resolveDataModules((List)moduleParameter.get("moduleList"), contextData, resolutionType);
            }
        }
        return resolvedHtml;
    }

    public void extractVariablesFromData(Document data, Map<String, Object> moduleParameter) throws XPathExpressionException {
        moduleParameter.put("VARIABLE_VALUE_MAP", ADUtils.extractVariablesFromData(data));
    }

    protected void bindAdHelperService(ADHelperServiceImpl aDHelperServiceImpl) {
        this.adHelperService = aDHelperServiceImpl;
    }

    protected void unbindAdHelperService(ADHelperServiceImpl aDHelperServiceImpl) {
        if (this.adHelperService == aDHelperServiceImpl) {
            this.adHelperService = null;
        }
    }

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

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

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

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

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

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