AbstractBatchProvider.java
4.65 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
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.adobe.aemds.guide.batch.api.BatchConfig
* com.adobe.aemds.guide.batch.api.BatchInput
* com.adobe.aemds.guide.batch.api.BatchProvider
* com.adobe.aemds.guide.batch.api.PostProcessor
* com.adobe.aemds.guide.batch.api.RecordSplitter
* com.adobe.aemds.guide.storage.api.StorageProvider
* com.adobe.aemfd.docmanager.Document
* org.apache.sling.api.resource.Resource
* org.apache.sling.api.resource.ValueMap
* org.apache.sling.jcr.api.SlingRepository
* 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.BatchInput;
import com.adobe.aemds.guide.batch.api.BatchProvider;
import com.adobe.aemds.guide.batch.api.PostProcessor;
import com.adobe.aemds.guide.batch.api.RecordSplitter;
import com.adobe.aemds.guide.batch.impl.DepthBasedRecordSplitter;
import com.adobe.aemds.guide.storage.api.StorageProvider;
import com.adobe.aemfd.docmanager.Document;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.jcr.api.SlingRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class AbstractBatchProvider
implements BatchProvider {
private Logger logger = LoggerFactory.getLogger(AbstractBatchProvider.class);
public Map<Document, String> getDataXMLs(BatchInput batchInput, BatchConfig batchConfig) {
Map dataXMLs = new LinkedHashMap<Document, String>();
String recordIdentifier = this.getRecordIdentifier(batchConfig);
List dataRecords = batchInput.getDataXMLs();
if (dataRecords != null) {
this.logger.debug("BatchInput " + (Object)batchInput + " has supplied individual data records");
for (Document dataRecord : dataRecords) {
RecordSplitter recordSplitter = batchConfig.getRecordSplitter();
if (recordSplitter == null) {
recordSplitter = new DepthBasedRecordSplitter();
recordSplitter.configure((Object)0, recordIdentifier);
}
dataXMLs.putAll(recordSplitter.split(dataRecord));
}
} else {
Document dataXML = batchInput.getDataXML();
if (dataXML != null) {
this.logger.debug("BatchInput " + (Object)batchInput + " has supplied a single large data XML");
RecordSplitter recordSplitter = batchConfig.getRecordSplitter();
if (recordSplitter == null) {
recordSplitter = new DepthBasedRecordSplitter();
recordSplitter.configure((Object)1, recordIdentifier);
}
dataXMLs = recordSplitter.split(dataXML);
}
}
return dataXMLs;
}
public StorageProvider getStorageProvider(BatchConfig batchConfig, StorageProvider defaultStorageProvider) {
StorageProvider storageProvider = batchConfig.getStorageProvider();
if (storageProvider == null) {
storageProvider = defaultStorageProvider;
}
return storageProvider;
}
public PostProcessor getPostProcessor(BatchConfig batchConfig, PostProcessor defaultPostProcessor) {
PostProcessor postProcessor = batchConfig.getPostProcessor();
if (postProcessor == null) {
postProcessor = defaultPostProcessor;
}
return postProcessor;
}
public RecordSplitter getRecordSplitter(BatchConfig batchConfig, RecordSplitter defaultRecordSplitter) {
RecordSplitter recordSplitter = batchConfig.getRecordSplitter();
if (recordSplitter == null) {
recordSplitter = defaultRecordSplitter;
}
return recordSplitter;
}
public String getRecordIdentifier(BatchConfig batchConfig) {
String recordIdentifier = batchConfig.getRecordIdentifier();
if (recordIdentifier == null) {
recordIdentifier = "id";
}
return recordIdentifier;
}
public /* varargs */ List<String> asList(String ... str) {
return Arrays.asList(str);
}
public void safelyDispose(Document doc) {
if (doc != null) {
doc.dispose();
}
}
public static String getLetterRef(Resource adaptiveDocument) {
ValueMap guideProps = (ValueMap)adaptiveDocument.adaptTo(ValueMap.class);
return guideProps != null ? (String)guideProps.get((Object)"letterRef") : null;
}
protected abstract SlingRepository getSlingRepository();
}