DeleteDamAssetProcess.java
4.36 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
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.day.cq.dam.commons.process.AbstractAssetWorkflowProcess
* com.day.cq.workflow.PayloadMap
* com.day.cq.workflow.WorkflowException
* com.day.cq.workflow.WorkflowSession
* com.day.cq.workflow.exec.WorkItem
* com.day.cq.workflow.exec.WorkflowData
* com.day.cq.workflow.metadata.MetaDataMap
* javax.jcr.Item
* javax.jcr.RepositoryException
* javax.jcr.Session
* org.apache.commons.lang.StringUtils
* org.apache.felix.scr.annotations.Component
* org.apache.felix.scr.annotations.Property
* org.apache.felix.scr.annotations.Reference
* org.apache.felix.scr.annotations.ReferencePolicy
* org.apache.felix.scr.annotations.Service
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.day.cq.dam.core.process;
import com.day.cq.dam.commons.process.AbstractAssetWorkflowProcess;
import com.day.cq.workflow.PayloadMap;
import com.day.cq.workflow.WorkflowException;
import com.day.cq.workflow.WorkflowSession;
import com.day.cq.workflow.exec.WorkItem;
import com.day.cq.workflow.exec.WorkflowData;
import com.day.cq.workflow.metadata.MetaDataMap;
import java.util.ArrayList;
import javax.jcr.Item;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.commons.lang.StringUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component(metatype=0)
@Service
@Property(name="process.label", value={"Delete Dam Asset"})
public class DeleteDamAssetProcess
extends AbstractAssetWorkflowProcess {
private static final Logger log = LoggerFactory.getLogger(DeleteDamAssetProcess.class);
@Reference(policy=ReferencePolicy.STATIC)
private PayloadMap payloadMap;
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaData) throws WorkflowException {
String[] args = this.buildArguments(metaData);
if (args.length == 2) {
String srcPrefix = args[0];
String dstPrefix = args[1];
try {
Session session = workflowSession.getSession();
String srcPath = workItem.getWorkflowData().getPayload().toString();
String dstPath = srcPath.replaceAll(srcPrefix, dstPrefix);
if (session.itemExists(dstPath) && !this.payloadMap.isInWorkflow(dstPath, true)) {
session.getItem(dstPath).remove();
session.save();
}
}
catch (RepositoryException e) {
log.error("execute: error while deleting asset; work item [{}]: ", (Object)workItem.getId(), (Object)e);
}
} else {
throw new IllegalArgumentException("Insufficient arguments specified");
}
}
public String[] buildArguments(MetaDataMap metaData) {
String processArgs = (String)metaData.get(Arguments.PROCESS_ARGS.name(), String.class);
if (processArgs != null && !processArgs.equals("")) {
return processArgs.split(",");
}
ArrayList<String> arguments = new ArrayList<String>();
String sourceRoot = (String)metaData.get(Arguments.SOURCE_ROOT.name(), String.class);
String destinationRoot = (String)metaData.get(Arguments.DESTINATION_ROOT.name(), String.class);
if (StringUtils.isNotBlank((String)sourceRoot)) {
arguments.add(this.appendSlash(sourceRoot));
}
if (StringUtils.isNotBlank((String)destinationRoot)) {
arguments.add(this.appendSlash(destinationRoot));
}
return arguments.toArray(new String[arguments.size()]);
}
private String appendSlash(String path) {
if (!path.endsWith("/")) {
path = path + "/";
}
return path;
}
protected void bindPayloadMap(PayloadMap payloadMap) {
this.payloadMap = payloadMap;
}
protected void unbindPayloadMap(PayloadMap payloadMap) {
if (this.payloadMap == payloadMap) {
this.payloadMap = null;
}
}
public static enum Arguments {
PROCESS_ARGS,
SOURCE_ROOT,
DESTINATION_ROOT;
private Arguments() {
}
}
}