BatchGeneratorServiceImpl.java
5.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
* 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;
}
}
}