KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cowsultants > itracker > web > actions > EditReportAction


1 /*
2  * This software was designed and created by Jason Carroll.
3  * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4  * The author can be reached at jcarroll@cowsultants.com
5  * ITracker website: http://www.cowsultants.com
6  * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it only under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  */

18
19 package cowsultants.itracker.web.actions;
20
21 import java.io.*;
22 import java.rmi.*;
23 import java.util.*;
24 import javax.ejb.*;
25 import javax.rmi.*;
26 import javax.naming.*;
27 import javax.servlet.*;
28 import javax.servlet.http.*;
29
30 import org.apache.commons.beanutils.*;
31 import org.apache.struts.action.*;
32 import org.apache.struts.upload.*;
33 import org.apache.struts.util.*;
34
35 import cowsultants.itracker.ejb.client.exceptions.*;
36 import cowsultants.itracker.ejb.client.interfaces.*;
37 import cowsultants.itracker.ejb.client.models.*;
38 import cowsultants.itracker.ejb.client.resources.*;
39 import cowsultants.itracker.ejb.client.util.*;
40 import cowsultants.itracker.web.util.*;
41
42
43 public class EditReportAction extends ITrackerAction {
44
45     public EditReportAction() {
46     }
47
48     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
49         ActionErrors errors = new ActionErrors();
50
51         if(! isLoggedIn(request, response)) {
52             return mapping.findForward("login");
53         }
54         if(! isTokenValid(request)) {
55             Logger.logDebug("Invalid request token while editing report.");
56             return mapping.findForward("listreports");
57         }
58         resetToken(request);
59
60         HttpSession session = request.getSession(true);
61         ReportModel report = null;
62         try {
63             InitialContext ic = new InitialContext();
64
65             Object JavaDoc rhRef = ic.lookup("java:comp/env/" + ReportHandler.JNDI_NAME);
66             ReportHandlerHome rhHome = (ReportHandlerHome) PortableRemoteObject.narrow(rhRef, ReportHandlerHome.class);
67             ReportHandler rh = rhHome.create();
68
69             HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY);
70             if(! UserUtilities.hasPermission(userPermissions, UserUtilities.PERMISSION_USER_ADMIN)) {
71                 return mapping.findForward("unauthorized");
72             }
73             report = (ReportModel) session.getAttribute(Constants.REPORT_KEY);
74
75             report = new ReportModel();
76             report.setId((Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "id"));
77             report.setName((String JavaDoc) PropertyUtils.getSimpleProperty(form, "name"));
78             report.setNameKey((String JavaDoc) PropertyUtils.getSimpleProperty(form, "nameKey"));
79             report.setDescription((String JavaDoc) PropertyUtils.getSimpleProperty(form, "description"));
80             report.setDataType(((Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "dataType") != null ? ((Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "dataType")).intValue() : ReportUtilities.DATATYPE_ISSUE));
81             report.setReportType(((Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "reportType") != null ? ((Integer JavaDoc) PropertyUtils.getSimpleProperty(form, "reportType")).intValue() : ReportUtilities.REPORTTYPE_JFREE));
82
83             try {
84                 FormFile file = (FormFile) PropertyUtils.getSimpleProperty(form, "fileData");
85                 report.setFileData(file.getFileData());
86             } catch(Exception JavaDoc e) {
87                 Logger.logError("Exception while verifying import data.", e);
88                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.missingdatafile"));
89             }
90
91             String JavaDoc className = (String JavaDoc) PropertyUtils.getSimpleProperty(form, "className");
92             if(className == null || className.equals("")) {
93                 report.setClassName("");
94             } else {
95                 report.setClassName((String JavaDoc) PropertyUtils.getSimpleProperty(form, "className"));
96             }
97
98             String JavaDoc action = (String JavaDoc) request.getParameter("action");
99             if("create".equals(action)) {
100                 report = rh.createReport(report);
101             } else if ("update".equals(action)) {
102                 report = rh.updateReport(report);
103             }
104
105             if(report == null) {
106                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.save"));
107             } else if("create".equals(action)) {
108                 // If it was a create, add a new language key in the base for it.
109
Object JavaDoc scRef = ic.lookup("java:comp/env/" + SystemConfiguration.JNDI_NAME);
110                 SystemConfigurationHome scHome = (SystemConfigurationHome) PortableRemoteObject.narrow(scRef, SystemConfigurationHome.class);
111                 SystemConfiguration sc = scHome.create();
112
113                 sc.updateLanguageItem(new LanguageModel(ITrackerResources.BASE_LOCALE, report.getNameKey(), report.getName()));
114                 ITrackerResources.clearKeyFromBundles(report.getNameKey(), true);
115             }
116         } catch(Exception JavaDoc e) {
117             Logger.logError("Exception processing form data", e);
118             errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.save"));
119         }
120
121         if(! errors.isEmpty()) {
122             saveErrors(request, errors);
123             saveToken(request);
124             return mapping.getInputForward();
125         }
126
127         session.removeAttribute(Constants.REPORT_KEY);
128         return mapping.findForward("listreportsadmin");
129     }
130
131 }
132   
Popular Tags