EditIssueFormAction.java
- /*
- * This software was designed and created by Jason Carroll.
- * Copyright (c) 2002, 2003, 2004 Jason Carroll.
- * The author can be reached at jcarroll@cowsultants.com
- * ITracker website: http://www.cowsultants.com
- * ITracker forums: http://www.cowsultants.com/phpBB/index.php
- *
- * This program is free software; you can redistribute it and/or modify
- * it only under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
- package org.itracker.web.actions.project;
- import org.apache.log4j.Logger;
- import org.apache.struts.action.*;
- import org.itracker.model.*;
- import org.itracker.model.util.IssueUtilities;
- import org.itracker.services.IssueService;
- import org.itracker.services.UserService;
- import org.itracker.web.actions.base.ItrackerBaseAction;
- import org.itracker.web.forms.IssueForm;
- import org.itracker.web.util.*;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.IOException;
- import java.util.List;
- import java.util.Locale;
- import java.util.Map;
- import java.util.Set;
- /**
- * This class populates an IssueForm object for display by the edit issue page.
- */
- public class EditIssueFormAction extends ItrackerBaseAction {
- private static final Logger log = Logger.getLogger(EditIssueFormAction.class);
- /* (non-Javadoc)
- * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- if (log.isDebugEnabled()) {
- log.debug("execute: called with mapping: " + mapping + ", form: "
- + form + ", request: " + request + ", response: "
- + response);
- }
- ActionMessages errors = new ActionMessages();
- try {
- IssueService issueService = ServletContextUtils.getItrackerServices().getIssueService();
- UserService userService = ServletContextUtils.getItrackerServices().getUserService();
- Integer issueId = new Integer(
- (request.getParameter("id") == null ? "-1" : (request
- .getParameter("id"))));
- Issue issue;
- try {
- issue = issueService.getIssue(issueId);
- } catch (Exception ex) {
- issue = null;
- }
- if (issue == null) {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
- "itracker.web.error.invalidissue"));
- saveErrors(request, errors);
- return mapping.findForward("error");
- }
- Project project = issueService.getIssueProject(issueId);
- if (project == null) {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
- "itracker.web.error.invalidproject"));
- } else if (project.getStatus() != Status.ACTIVE) {
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
- "itracker.web.error.projectlocked"));
- } else {
- HttpSession session = request.getSession(true);
- User currUser = (User) session.getAttribute(Constants.USER_KEY);
- Map<Integer, Set<PermissionType>> userPermissions = RequestHelper.getUserPermissions(session);
- Locale locale = getLocale(request);
- List<NameValuePair> ownersList = EditIssueActionUtil
- .getAssignableIssueOwnersList(issue, project, currUser,
- locale, userService, userPermissions);
- if (!IssueUtilities.canEditIssue(issue, currUser.getId(),
- userPermissions)) {
- log
- .debug("Unauthorized user requested access to edit issue for project "
- + project.getId());
- return mapping.findForward("unauthorized");
- }
- IssueForm issueForm = (IssueForm) form;
- if (issueForm == null) {
- issueForm = new IssueForm();
- }
- Map<Integer, List<NameValuePair>> listOptions = EditIssueActionUtil.getListOptions(
- request, issue, ownersList, userPermissions, issue
- .getProject(), currUser);
- issueForm.setupIssueForm(issue, listOptions, request, errors);
- IssueNavigationUtil.setupNextPreviousIssueInRequest(request, issue, issueService);
- IssueForm.setupJspEnv(mapping, issueForm, request,
- issue, issueService, userService, userPermissions,
- listOptions, errors);
- log.debug("Forwarding to edit issue form for issue "
- + issue.getId());
- // TODO: Sort attachments
- // Collections.sort(attachments,
- // IssueAttachment.CREATE_DATE_COMPARATOR);
- saveToken(request);
- if (issue == null) {
- return mapping.findForward("error");
- }
- if (errors.isEmpty()) {
- log.info("EditIssueFormAction: Forward: InputForward");
- saveErrors(request, errors);
- return mapping.getInputForward();
- }
- }
- } catch (Exception e) {
- log.error("Exception while creating edit issue form.", e);
- errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
- "itracker.web.error.system"));
- }
- if (!errors.isEmpty()) {
- saveErrors(request, errors);
- }
- log.info("EditIssueFormAction: Forward: Error");
- return mapping.findForward("error");
- }
- }