View Javadoc

1   package org.itracker.web.actions.admin.report;
2   
3   import java.io.IOException;
4   import java.lang.reflect.InvocationTargetException;
5   import java.util.Map;
6   import java.util.Set;
7   
8   import javax.servlet.ServletException;
9   import javax.servlet.http.HttpServletRequest;
10  import javax.servlet.http.HttpServletResponse;
11  import javax.servlet.http.HttpSession;
12  
13  import org.apache.commons.beanutils.PropertyUtils;
14  import org.apache.log4j.Logger;
15  import org.apache.struts.action.ActionForm;
16  import org.apache.struts.action.ActionForward;
17  import org.apache.struts.action.ActionMapping;
18  import org.apache.struts.action.ActionMessage;
19  import org.apache.struts.action.ActionMessages;
20  import org.itracker.model.PermissionType;
21  import org.itracker.model.Report;
22  import org.itracker.services.ReportService;
23  import org.itracker.services.util.UserUtilities;
24  import org.itracker.web.actions.base.ItrackerBaseAction;
25  import org.itracker.web.forms.ReportForm;
26  import org.itracker.web.util.Constants;
27  
28  //TODO: Action Cleanup
29  
30  public class EditReportFormAction extends ItrackerBaseAction {
31  	private static final Logger log = Logger.getLogger(EditReportFormAction.class);
32  	
33      public EditReportFormAction() {
34      }
35  
36  	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37  		ActionMessages errors = new ActionMessages();
38  		
39          try {
40              ReportService reportService = getITrackerServices().getReportService();
41  
42              HttpSession session = request.getSession(true);
43              String action = (String) request.getParameter("action");
44              Map<Integer, Set<PermissionType>> userPermissionsMap = getUserPermissions(session);
45              // TODO: never used, therefore commented, task added
46              // UserModel user = (UserModel) session.getAttribute(Constants.USER_KEY);
47              
48              if(! UserUtilities.hasPermission(userPermissionsMap, UserUtilities.PERMISSION_USER_ADMIN)) {
49                  return mapping.findForward("unauthorized");
50              }
51              Report report = (Report) session.getAttribute(Constants.REPORT_KEY);
52              String pageTitleKey = "";
53              String pageTitleArg = "";
54              if(action != null && action.equals("update")) {
55                 pageTitleKey = "itracker.web.admin.editreport.title.update";
56                 // pageTitleArg = report.getId().toString();
57              } else {
58                 pageTitleKey = "itracker.web.admin.editreport.title.create";
59              }
60              request.setAttribute("pageTitleKey",pageTitleKey); 
61              request.setAttribute("pageTitleArg",pageTitleArg); 
62  
63              report = null;
64  
65              ReportForm reportForm = (ReportForm) form;
66              if(reportForm == null) {
67                  reportForm = new ReportForm();
68              }
69  
70              
71              if("create".equals(action)) {
72                  report = new Report();
73                  report.setId(-1); 
74                  reportForm.setAction("create");
75                  reportForm.setId(report.getId()); 
76              } else if ("update".equals(action)) {
77                  Integer reportId = (Integer) PropertyUtils.getSimpleProperty(form, "id");
78                  report = reportService.getReportDAO().findByPrimaryKey(reportId);
79                  if(report == null) {
80                  	errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.invalidreport"));
81                  } else {
82                      reportForm.setAction("update");
83                      reportForm.setId(report.getId());
84                      reportForm.setName(report.getName());
85                      reportForm.setNameKey(report.getNameKey());
86                      reportForm.setDescription(report.getDescription());
87                      reportForm.setReportType(report.getReportType());
88                      reportForm.setDataType(report.getDataType());
89                      reportForm.setClassName(report.getClassName());
90                      //reportForm.setFileData(new String((byte[]) report.getFileData()));
91                  }
92              } else {
93              	errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.invalidaction"));
94              }
95  
96              if(errors.isEmpty()) {
97                  request.setAttribute("reportForm", reportForm);
98                  session.setAttribute(Constants.REPORT_KEY, report);
99                  saveToken(request);
100                 return mapping.getInputForward();
101             }
102         } catch(RuntimeException e) {
103             log.error("Exception while creating edit report form.", e);
104             errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
105         } catch (IllegalAccessException e) {
106             log.error("Exception while creating edit report form.", e);
107             errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
108 		} catch (InvocationTargetException e) {
109             log.error("Exception while creating edit report form.", e);
110             errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
111 		} catch (NoSuchMethodException e) {
112             log.error("Exception while creating edit report form.", e);
113             errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
114 		}
115 
116         if(! errors.isEmpty()) {
117         	saveErrors(request, errors);
118         }
119 
120         return mapping.findForward("error");
121     }
122 
123 }
124