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 public boolean execute(Context ctx) throws FlowDefinitionException {
78
79 LaunchItem li = new LaunchItem();
80 prepareLaunchItem(ctx, li);
81 WorkflowUtil.launchFlow(li, getWorkflowName());
82 return true;
83 }
84
85
86
87
88
89
90 public void prepareLaunchItem(Context context, LaunchItem launchItem) {
91 Map map = context.getAttributes(Context.LOCAL_SCOPE);
92
93 Map serializableMap = new HashMap();
94 for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
95 Object key = iter.next();
96 Object val = map.get(key);
97 if (val instanceof Serializable) {
98
99 if(val instanceof String){
100 try{
101 Date date = DateUtils.parseDate((String)val, new String[]{DateUtil.YYYY_MM_DD_T_HH_MM_SS, DateUtil.YYYY_MM_DD});
102 Calendar cal = Calendar.getInstance();
103 cal.setTime(date);
104 val = DateFormatUtils.format(cal, WorkflowConstants.OPENWFE_DATE_FORMAT);
105 }
106 catch(ParseException e){
107
108 }
109 }
110 serializableMap.put(key, val);
111 }
112 }
113 serializableMap.put(WorkflowConstants.ATTRIBUTE_USERNAME, context.getUser().getName());
114 StringMapAttribute attrs = AttributeUtils.java2attributes(serializableMap);
115 launchItem.setAttributes(attrs);
116
117 launchItem.getAttributes().sput(WorkflowConstants.ATTRIBUTE_EDIT_DIALOG, getDialogName());
118 }
119
120 public String getWorkflowName() {
121 return workflowName;
122 }
123
124 public void setWorkflowName(String flowName) {
125 this.workflowName = flowName;
126 }
127
128
129 public String getDialogName() {
130 return this.dialogName;
131 }
132
133
134 public void setDialogName(String dialogName) {
135 this.dialogName = dialogName;
136 }
137
138 @Override
139 public void release() {
140 super.release();
141 workflowName = WorkflowConstants.DEFAULT_WORKFLOW;
142 dialogName = WorkflowConstants.DEFAULT_EDIT_DIALOG;
143 }
144 }