1 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 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 ) PropertyUtils.getSimpleProperty(form, "id")); 77 report.setName((String ) PropertyUtils.getSimpleProperty(form, "name")); 78 report.setNameKey((String ) PropertyUtils.getSimpleProperty(form, "nameKey")); 79 report.setDescription((String ) PropertyUtils.getSimpleProperty(form, "description")); 80 report.setDataType(((Integer ) PropertyUtils.getSimpleProperty(form, "dataType") != null ? ((Integer ) PropertyUtils.getSimpleProperty(form, "dataType")).intValue() : ReportUtilities.DATATYPE_ISSUE)); 81 report.setReportType(((Integer ) PropertyUtils.getSimpleProperty(form, "reportType") != null ? ((Integer ) 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 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 className = (String ) PropertyUtils.getSimpleProperty(form, "className"); 92 if(className == null || className.equals("")) { 93 report.setClassName(""); 94 } else { 95 report.setClassName((String ) PropertyUtils.getSimpleProperty(form, "className")); 96 } 97 98 String action = (String ) 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 Object 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 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 |