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