1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.itracker.web.actions.admin.project;
20
21 import java.io.IOException;
22 import java.lang.reflect.InvocationTargetException;
23 import java.util.HashMap;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import javax.servlet.ServletException;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30 import javax.servlet.http.HttpSession;
31
32 import org.apache.commons.beanutils.PropertyUtils;
33 import org.apache.log4j.Logger;
34 import org.apache.struts.action.ActionForm;
35 import org.apache.struts.action.ActionForward;
36 import org.apache.struts.action.ActionMapping;
37 import org.apache.struts.action.ActionMessage;
38 import org.apache.struts.action.ActionMessages;
39 import org.itracker.model.Project;
40 import org.itracker.model.ProjectScript;
41 import org.itracker.model.WorkflowScript;
42 import org.itracker.services.ConfigurationService;
43 import org.itracker.services.ProjectService;
44 import org.itracker.services.util.ProjectUtilities;
45 import org.itracker.services.util.UserUtilities;
46 import org.itracker.web.actions.base.ItrackerBaseAction;
47 import org.itracker.web.forms.ProjectScriptForm;
48 import org.itracker.web.util.Constants;
49
50
51
52 public class EditProjectScriptFormAction extends ItrackerBaseAction {
53 private static final Logger log = Logger.getLogger(EditProjectScriptFormAction.class);
54
55 public EditProjectScriptFormAction() {
56 }
57
58 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
59
60 ActionMessages errors = new ActionMessages();
61
62 if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) {
63 return mapping.findForward("unauthorized");
64 }
65 boolean isUpdate = false;
66 String pageTitleKey = "";
67 String pageTitleArg = "";
68 String action = "";
69 Project project = null;
70
71 try {
72 ProjectScriptForm projectScriptForm = (ProjectScriptForm) form;
73 final ProjectService projectService = getITrackerServices().getProjectService();
74 final ConfigurationService configurationService = getITrackerServices().getConfigurationService();
75
76 if(projectScriptForm == null) {
77 projectScriptForm = new ProjectScriptForm();
78 }
79 final List<ProjectScript> projectScripts;
80 final List<WorkflowScript> workflowScripts = configurationService.getWorkflowScripts();
81
82
83 action = request.getParameter("action");
84 if ( action == null )
85 action = (String) PropertyUtils.getSimpleProperty(projectScriptForm, "action");
86 projectScriptForm.setAction(action);
87
88 Integer projectId = (Integer) PropertyUtils.getSimpleProperty(projectScriptForm, "projectId");
89 projectScriptForm.setProjectId(projectId);
90 project = projectService.getProject(projectId);
91 projectScripts = project.getScripts();
92
93
94
95
96
97
98 pageTitleKey = "itracker.web.admin.editprojectscript.title.create";
99
100 HashMap<String,String> scriptDescs = new HashMap<String,String>();
101 HashMap<String,String> scriptItems = new HashMap<String,String>();
102 HashMap<String,String> ids = new HashMap<String,String>();
103 HashMap<String,String> fieldIds = new HashMap<String,String>();
104 HashMap<String,String> priorities = new HashMap<String,String>();
105
106
107
108 int i = 0;
109
110 for ( Iterator<WorkflowScript> wfsIterator = workflowScripts.iterator(); wfsIterator.hasNext(); i++) {
111 WorkflowScript workflowScript = (WorkflowScript) wfsIterator.next();
112 scriptDescs.put(String.valueOf(workflowScript.getId()), workflowScript.getName());
113 String idstr = "0";
114 String sdstr = "";
115 String fidstr = "";
116 String pristr = "";
117 for ( Iterator<ProjectScript> psIterator = projectScripts.iterator(); psIterator.hasNext(); ) {
118 ProjectScript chkprojectScript = psIterator.next();
119 if ( workflowScript.getId().equals(chkprojectScript.getScript()) ) {
120 idstr = String.valueOf(chkprojectScript.getId());
121 fidstr = String.valueOf(chkprojectScript.getFieldId());
122 pristr = String.valueOf(chkprojectScript.getPriority());
123 sdstr = "on";
124 }
125 }
126 scriptItems.put(String.valueOf(workflowScript.getId()), sdstr);
127 ids.put(String.valueOf(workflowScript.getId()), idstr);
128 fieldIds.put(String.valueOf(workflowScript.getId()), fidstr);
129 priorities.put(String.valueOf(workflowScript.getId()), pristr);
130 }
131
132
133
134
135
136
137
138
139
140
141
142 projectScriptForm.setScriptDescs(scriptDescs);
143 projectScriptForm.setScriptItems(scriptItems);
144 projectScriptForm.setId(ids);
145 projectScriptForm.setFieldId(fieldIds);
146 projectScriptForm.setPriority(priorities);
147
148 projectScriptForm.setCustomFields(configurationService.getCustomFields());
149 String prioritySizeStr = ProjectUtilities.getScriptPrioritySize();
150 int prioritySize = Integer.parseInt(prioritySizeStr);
151
152 HashMap<String,String> priorityList = new HashMap<String,String>();
153 for ( int j = 1; j <= prioritySize; j++ ) {
154 priorityList.put(String.valueOf(j), ProjectUtilities.getScriptPriorityLabelKey(j));
155 }
156 projectScriptForm.setPriorityList(priorityList);
157
158 if(errors.isEmpty()) {
159 HttpSession session = request.getSession(true);
160 request.setAttribute("projectScriptForm", projectScriptForm);
161 session.setAttribute(Constants.PROJECT_SCRIPT_KEY, project);
162 request.setAttribute("action",action);
163 saveToken(request);
164 request.setAttribute("pageTitleKey",pageTitleKey);
165 request.setAttribute("pageTitleArg",pageTitleArg);
166 return mapping.getInputForward();
167 }
168 } catch(RuntimeException e) {
169 log.error("Exception while the "+ action + " of ProjectScript form.", e);
170 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
171 } catch (IllegalAccessException e) {
172 log.error("Exception while the "+ action + " of ProjectScript form.", e);
173 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
174 } catch (InvocationTargetException e) {
175 log.error("Exception while the "+ action + " of ProjectScript form.", e);
176 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
177 } catch (NoSuchMethodException e) {
178 log.error("Exception while the "+ action + " of ProjectScript form.", e);
179 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
180 }
181
182 if(! errors.isEmpty()) {
183 saveErrors(request, errors);
184 }
185 request.setAttribute("pageTitleKey",pageTitleKey);
186 request.setAttribute("pageTitleArg",pageTitleArg);
187 request.setAttribute("isUpdate",isUpdate);
188 return mapping.findForward("error");
189 }
190
191 }