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.commands;
35
36 import info.magnolia.cms.util.DateUtil;
37 import info.magnolia.commands.MgnlCommand;
38 import info.magnolia.context.Context;
39 import info.magnolia.module.workflow.WorkflowConstants;
40 import info.magnolia.module.workflow.WorkflowUtil;
41 import info.magnolia.module.workflow.flows.FlowDefinitionException;
42
43 import java.io.Serializable;
44 import java.text.ParseException;
45 import java.util.Calendar;
46 import java.util.Date;
47 import java.util.HashMap;
48 import java.util.Iterator;
49 import java.util.Map;
50
51 import openwfe.org.engine.workitem.AttributeUtils;
52 import openwfe.org.engine.workitem.LaunchItem;
53 import openwfe.org.engine.workitem.StringMapAttribute;
54
55 import org.apache.commons.lang.time.DateFormatUtils;
56 import org.apache.commons.lang.time.DateUtils;
57 import org.slf4j.Logger;
58 import org.slf4j.LoggerFactory;
59
60
61
62
63
64 public class FlowCommand extends MgnlCommand {
65 private static final Logger log = LoggerFactory.getLogger(FlowCommand.class);
66
67
68
69
70 private String workflowName = WorkflowConstants.DEFAULT_WORKFLOW;
71
72
73
74
75 private String dialogName = WorkflowConstants.DEFAULT_EDIT_DIALOG;
76
77 @Override
78 public boolean execute(Context ctx) throws FlowDefinitionException {
79
80 LaunchItem li = new LaunchItem();
81 prepareLaunchItem(ctx, li);
82 WorkflowUtil.launchFlow(li, getWorkflowName());
83 return true;
84 }
85
86
87
88
89
90
91 public void prepareLaunchItem(Context context, LaunchItem launchItem) {
92 Map map = context.getAttributes(Context.LOCAL_SCOPE);
93
94 Map serializableMap = new HashMap();
95 for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
96 Object key = iter.next();
97 Object val = map.get(key);
98 if (val instanceof Serializable) {
99
100 if(val instanceof String){
101 try{
102 Date date = DateUtils.parseDate((String)val, new String[]{DateUtil.YYYY_MM_DD_T_HH_MM_SS, DateUtil.YYYY_MM_DD});
103 Calendar cal = Calendar.getInstance();
104 cal.setTime(date);
105 val = DateFormatUtils.format(cal, WorkflowConstants.OPENWFE_DATE_FORMAT);
106 }
107 catch(ParseException e){
108
109 }
110 }
111 serializableMap.put(key, val);
112 }
113 }
114 serializableMap.put(WorkflowConstants.ATTRIBUTE_USERNAME, context.getUser().getName());
115 StringMapAttribute attrs = AttributeUtils.java2attributes(serializableMap);
116 launchItem.setAttributes(attrs);
117
118 launchItem.getAttributes().sput(WorkflowConstants.ATTRIBUTE_EDIT_DIALOG, getDialogName());
119 }
120
121 public String getWorkflowName() {
122 return workflowName;
123 }
124
125 public void setWorkflowName(String flowName) {
126 this.workflowName = flowName;
127 }
128
129
130 public String getDialogName() {
131 return this.dialogName;
132 }
133
134
135 public void setDialogName(String dialogName) {
136 this.dialogName = dialogName;
137 }
138
139 @Override
140 public void release() {
141 super.release();
142 workflowName = WorkflowConstants.DEFAULT_WORKFLOW;
143 dialogName = WorkflowConstants.DEFAULT_EDIT_DIALOG;
144 }
145 }