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 package info.magnolia.module.workflow.setup;
35
36 import info.magnolia.cms.core.Content;
37 import info.magnolia.cms.core.ItemType;
38 import info.magnolia.cms.util.ClasspathResourcesUtil;
39 import info.magnolia.cms.util.ContentUtil;
40 import info.magnolia.module.InstallContext;
41 import info.magnolia.module.delta.AbstractTask;
42 import info.magnolia.module.delta.TaskExecutionException;
43 import info.magnolia.module.workflow.WorkflowConstants;
44 import org.apache.commons.io.IOUtils;
45
46 import javax.jcr.RepositoryException;
47 import java.io.IOException;
48 import java.io.InputStream;
49
50
51
52
53
54
55
56
57 public class InstallWorkflowDefinitionTask extends AbstractTask {
58 private final String flowName;
59 private final String resourcePath;
60
61 public InstallWorkflowDefinitionTask(String taskName, String taskDescription, String flowName, String resourcePath) {
62 super(taskName, taskDescription);
63 this.flowName = flowName;
64 this.resourcePath = resourcePath;
65 }
66
67 public void execute(InstallContext ctx) throws TaskExecutionException {
68 InputStream stream = null;
69 try {
70 stream = ClasspathResourcesUtil.getStream(resourcePath);
71 final String wfDef = IOUtils.toString(stream);
72
73
74 final Content wfModuleNode = ctx.getModulesNode().getChildByName("workflow");
75 final Content cfg = ContentUtil.getOrCreateContent(wfModuleNode, "config", ItemType.CONTENT);
76
77 final Content flows = ContentUtil.getOrCreateContent(cfg, "flows", ItemType.CONTENT);
78 final Content flowNode = ContentUtil.getOrCreateContent(flows, flowName, ItemType.CONTENTNODE);
79 flowNode.createNodeData(WorkflowConstants.FLOW_VALUE, wfDef);
80 } catch (IOException e) {
81 ctx.error("Could not read default activation workflow definition", e);
82 } catch (RepositoryException e) {
83 ctx.error("Could not store default activation workflow definition", e);
84 } finally {
85 if (stream != null) {
86 try {
87 stream.close();
88 } catch (IOException e) {
89 }
90 }
91 }
92 }
93 }