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.configuration;
20
21 import java.io.IOException;
22 import java.util.List;
23
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27 import javax.servlet.http.HttpSession;
28
29 import org.apache.commons.beanutils.PropertyUtils;
30 import org.apache.log4j.Logger;
31 import org.apache.struts.action.ActionForm;
32 import org.apache.struts.action.ActionForward;
33 import org.apache.struts.action.ActionMapping;
34 import org.apache.struts.action.ActionMessage;
35 import org.apache.struts.action.ActionMessages;
36 import org.itracker.core.resources.ITrackerResources;
37 import org.itracker.model.Configuration;
38 import org.itracker.model.Issue;
39 import org.itracker.model.User;
40 import org.itracker.services.ConfigurationService;
41 import org.itracker.services.IssueService;
42 import org.itracker.services.exceptions.SystemConfigurationException;
43 import org.itracker.services.util.IssueUtilities;
44 import org.itracker.services.util.SystemConfigurationUtilities;
45 import org.itracker.services.util.UserUtilities;
46 import org.itracker.web.actions.base.ItrackerBaseAction;
47 import org.itracker.web.util.Constants;
48
49
50 public class RemoveConfigurationItemAction extends ItrackerBaseAction {
51 private static final Logger log = Logger.getLogger(RemoveConfigurationItemAction.class);
52
53
54 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
55 ActionMessages errors = new ActionMessages();
56
57
58 if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) {
59 return mapping.findForward("unauthorized");
60 }
61
62 try {
63 ConfigurationService configurationService = getITrackerServices().getConfigurationService();
64
65 Integer configId = (Integer) PropertyUtils.getSimpleProperty(form, "id");
66 if(configId == null || configId.intValue() <= 0) {
67 throw new SystemConfigurationException("Invalid configuration id.");
68 }
69
70 Configuration configItem = configurationService.getConfigurationItem(configId);
71 if(configItem == null) {
72 throw new SystemConfigurationException("Invalid configuration id.");
73 }
74
75 String key = null;
76 if(configItem.getType() == SystemConfigurationUtilities.TYPE_SEVERITY) {
77 key = ITrackerResources.KEY_BASE_SEVERITY + configItem.getValue();
78
79
80
81 try {
82 String currConfigValue = configItem.getValue();
83 String newConfigValue = null;
84
85 List<Configuration> configItems = configurationService.getConfigurationItemsByType(SystemConfigurationUtilities.TYPE_SEVERITY);
86 for(int i = 0; i < configItems.size(); i++) {
87 if(configItems.get(i) != null && configId.equals(configItems.get(i).getId())) {
88 if(i == 0 && (i + 1) < configItems.size()) {
89 newConfigValue = configItems.get(i+1).getValue();
90 break;
91 } else if(i > 0) {
92 newConfigValue = configItems.get(i-1).getValue();
93 break;
94 }
95 }
96 }
97
98 int currSeverity = Integer.parseInt(currConfigValue);
99 int newSeverity = Integer.parseInt(newConfigValue);
100 log.debug("Promoting issues in severity " + IssueUtilities.getSeverityName(currSeverity) + " to " + IssueUtilities.getSeverityName(newSeverity));
101
102 HttpSession session = request.getSession(true);
103 User currUser = (User) session.getAttribute(Constants.USER_KEY);
104 Integer currUserId = (currUser == null ? -1 : currUser.getId());
105
106 IssueService issueService = getITrackerServices().getIssueService();
107 List<Issue> issues = issueService.getIssuesWithSeverity(currSeverity);
108 for(int i = 0; i < issues.size(); i++) {
109 if(issues.get(i) != null) {
110 issues.get(i).setSeverity(newSeverity);
111
112 issues.add(issueService.systemUpdateIssue(issues.get(i), currUserId));
113 }
114 }
115 } catch(Exception e) {
116 log.debug("Exception while promoting issues with severity " + configItem.getValue(), e);
117 }
118 } else if(configItem.getType() == SystemConfigurationUtilities.TYPE_STATUS) {
119 key = ITrackerResources.KEY_BASE_STATUS + configItem.getValue();
120
121
122
123
124
125 try {
126 String currConfigValue = configItem.getValue();
127 String newConfigValue = null;
128
129 List<Configuration> configItems = configurationService.getConfigurationItemsByType(SystemConfigurationUtilities.TYPE_STATUS);
130 for(int i = 0; i < configItems.size(); i++) {
131 if(configItems.get(i) != null && configId.equals(configItems.get(i).getId())) {
132 if(i == 0 && (i + 1) < configItems.size()) {
133 newConfigValue = configItems.get(i+1).getValue();
134 break;
135 } else if(i > 0) {
136 newConfigValue = configItems.get(i-1).getValue();
137 break;
138 }
139 }
140 }
141
142 int currStatus = Integer.parseInt(currConfigValue);
143 int newStatus = Integer.parseInt(newConfigValue);
144 log.debug("Promoting issues in status " + IssueUtilities.getStatusName(currStatus) + " to " + IssueUtilities.getStatusName(newStatus));
145
146 HttpSession session = request.getSession(true);
147 User currUser = (User) session.getAttribute(Constants.USER_KEY);
148 Integer currUserId = (currUser == null ? -1 : currUser.getId());
149
150 IssueService issueService = getITrackerServices().getIssueService();
151 List<Issue> issues = issueService.getIssuesWithStatus(currStatus);
152 for(int i = 0; i < issues.size(); i++) {
153 if(issues.get(i) != null) {
154 issues.get(i).setStatus(newStatus);
155
156
157
158
159
160
161 issues.add(issueService.systemUpdateIssue(issues.get(i), currUserId));
162 }
163 }
164 } catch(Exception e) {
165 log.debug("Exception while promoting issues with status " + configItem.getValue(), e);
166 }
167 } else if(configItem.getType() == SystemConfigurationUtilities.TYPE_RESOLUTION) {
168 key = ITrackerResources.KEY_BASE_RESOLUTION + configItem.getValue();
169
170
171 } else {
172 throw new SystemConfigurationException("Unsupported configuration item type " + configItem.getType() + " found.");
173 }
174
175 configurationService.removeConfigurationItem(configItem.getId());
176 if(key != null) {
177 configurationService.removeLanguageKey(key);
178 ITrackerResources.clearKeyFromBundles(key, false);
179 }
180
181 return mapping.findForward("listconfiguration");
182 } catch(SystemConfigurationException sce) {
183 log.debug(sce.getMessage(), sce);
184 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.invalidconfiguration"));
185 } catch(NumberFormatException nfe) {
186 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.invalidconfiguration"));
187 log.debug("Invalid configuration item id " + request.getParameter("id") + " specified.");
188 } catch(Exception e) {
189 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
190 log.error("System Error.", e);
191 }
192 if(! errors.isEmpty()) {
193 saveErrors(request, errors);
194 }
195 return mapping.findForward("error");
196 }
197
198 }
199