BatchGeneratorServiceImpl.java 5.96 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.aemds.guide.batch.api.BatchConfig
 *  com.adobe.aemds.guide.batch.api.BatchGeneratorService
 *  com.adobe.aemds.guide.batch.api.BatchInput
 *  com.adobe.aemds.guide.batch.api.BatchProvider
 *  com.adobe.aemds.guide.batch.api.BatchResult
 *  com.adobe.aemds.guide.batch.api.BatchType
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.Resource
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.aemds.guide.batch.impl;

import com.adobe.aemds.guide.batch.api.BatchConfig;
import com.adobe.aemds.guide.batch.api.BatchGeneratorService;
import com.adobe.aemds.guide.batch.api.BatchInput;
import com.adobe.aemds.guide.batch.api.BatchProvider;
import com.adobe.aemds.guide.batch.api.BatchResult;
import com.adobe.aemds.guide.batch.api.BatchType;
import com.adobe.aemds.guide.batch.impl.AbstractBatchProvider;
import com.adobe.aemds.guide.storage.impl.DefaultJcrStorageProviderImpl;
import java.util.Map;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(immediate=1, metatype=1, label="Batch Generator", description="HTML and PDF Batch Generator Service")
@Service(value={BatchGeneratorService.class})
public class BatchGeneratorServiceImpl
implements BatchGeneratorService<BatchInput, BatchConfig, BatchResult> {
    @Reference(target="(component.name=com.adobe.aemds.guide.batch.impl.DefaultHtmlBatchProviderImpl)")
    private BatchProvider defaultHtmlBatchProvider;
    @Reference(target="(component.name=com.adobe.aemds.guide.batch.impl.DefaultPdfBatchProviderImpl)")
    private BatchProvider defaultPdfBatchProvider;
    @Reference(target="(component.name=com.adobe.aemds.guide.batch.impl.DefaultCombinedBatchProviderImpl)")
    private BatchProvider defaultCombinedBatchProvider;
    private Logger logger = LoggerFactory.getLogger(DefaultJcrStorageProviderImpl.class);

    public BatchResult generateBatch(BatchInput input, BatchConfig config) {
        if (input == null || config == null) {
            this.logger.error("No batch input or configuration provided, cannot proceed with batch generation");
            return null;
        }
        BatchProvider batchProvider = config.getBatchProvider();
        if (batchProvider == null) {
            BatchType batchType = config.getBatchType();
            if (batchType == null) {
                batchType = input.getResource() != null ? BatchType.HTML_ONLY : (input.getTemplateId() != null ? BatchType.PDF_ONLY : BatchType.CUSTOM);
            }
            switch (batchType) {
                case HTML_ONLY: {
                    if (input.getTemplateId() != null) {
                        throw new UnsupportedOperationException("Unsupported batch type: " + (Object)batchType + " for template: " + input.getTemplateId());
                    }
                    batchProvider = this.defaultHtmlBatchProvider;
                    break;
                }
                case PDF_ONLY: {
                    Resource adaptiveDocument = input.getResource();
                    if (adaptiveDocument != null) {
                        String letterRef = AbstractBatchProvider.getLetterRef(adaptiveDocument);
                        if (letterRef == null || letterRef.trim().length() == 0) {
                            throw new UnsupportedOperationException("Unsupported batch type: " + (Object)batchType + " for resource: " + (Object)adaptiveDocument);
                        }
                        input.setResource(null);
                        input.setTemplateId(letterRef);
                        this.logger.debug("Found letterRef {} on resource {}, PDF batch permitted", (Object)letterRef, (Object)adaptiveDocument);
                    }
                    batchProvider = this.defaultPdfBatchProvider;
                    break;
                }
                case HTML_AND_PDF: {
                    if (input.getTemplateId() != null) {
                        throw new UnsupportedOperationException("Unsupported batch type: " + (Object)batchType + " for template: " + input.getTemplateId());
                    }
                    batchProvider = this.defaultCombinedBatchProvider;
                    break;
                }
            }
        }
        if (batchProvider == null) {
            this.logger.error("No batch provider selected, cannot proceed with batch generation");
            return null;
        }
        BatchResult batchResult = (BatchResult)batchProvider.generateBatch((Map)input, (Map)config);
        if (batchResult == null) {
            this.logger.error("Batch generation failed, check logs for more details");
        }
        return batchResult;
    }

    protected void bindDefaultHtmlBatchProvider(BatchProvider batchProvider) {
        this.defaultHtmlBatchProvider = batchProvider;
    }

    protected void unbindDefaultHtmlBatchProvider(BatchProvider batchProvider) {
        if (this.defaultHtmlBatchProvider == batchProvider) {
            this.defaultHtmlBatchProvider = null;
        }
    }

    protected void bindDefaultPdfBatchProvider(BatchProvider batchProvider) {
        this.defaultPdfBatchProvider = batchProvider;
    }

    protected void unbindDefaultPdfBatchProvider(BatchProvider batchProvider) {
        if (this.defaultPdfBatchProvider == batchProvider) {
            this.defaultPdfBatchProvider = null;
        }
    }

    protected void bindDefaultCombinedBatchProvider(BatchProvider batchProvider) {
        this.defaultCombinedBatchProvider = batchProvider;
    }

    protected void unbindDefaultCombinedBatchProvider(BatchProvider batchProvider) {
        if (this.defaultCombinedBatchProvider == batchProvider) {
            this.defaultCombinedBatchProvider = null;
        }
    }

}