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.util.*; 39 import cowsultants.itracker.web.scheduler.*; 40 import cowsultants.itracker.web.util.*; 41 42 43 public class EditTaskAction extends ITrackerAction { 44 45 public EditTaskAction() { 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 task."); 56 return mapping.findForward("listtasks"); 57 } 58 resetToken(request); 59 60 HttpSession session = request.getSession(true); 61 ScheduledTaskModel task = null; 62 try { 63 InitialContext ic = new InitialContext(); 64 65 Object shRef = ic.lookup("java:comp/env/" + SchedulerHandler.JNDI_NAME); 66 SchedulerHandlerHome shHome = (SchedulerHandlerHome) PortableRemoteObject.narrow(shRef, SchedulerHandlerHome.class); 67 SchedulerHandler sh = shHome.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 task = (ScheduledTaskModel) session.getAttribute(Constants.TASK_KEY); 74 75 task = new ScheduledTaskModel(); 76 task.setId((Integer ) PropertyUtils.getSimpleProperty(form, "id")); 77 task.setMonths((String ) PropertyUtils.getSimpleProperty(form, "months")); 78 task.setDaysOfMonth((String ) PropertyUtils.getSimpleProperty(form, "daysOfMonth")); 79 task.setHours((String ) PropertyUtils.getSimpleProperty(form, "hours")); 80 task.setMinutes((String ) PropertyUtils.getSimpleProperty(form, "minutes")); 81 task.setWeekdays((String ) PropertyUtils.getSimpleProperty(form, "weekdays")); 82 83 String className = (String ) PropertyUtils.getSimpleProperty(form, "className"); 84 if(className != null && ! className.equals("")) { 85 task.setClassName(className); 86 } else { 87 task.setClassName((String ) PropertyUtils.getSimpleProperty(form, "classNameText")); 88 } 89 task.setArgs((String ) PropertyUtils.getSimpleProperty(form, "args")); 90 91 String action = (String ) request.getParameter("action"); 92 if("create".equals(action)) { 93 task = sh.createTask(task); 94 } else if ("update".equals(action)) { 95 task = sh.updateTask(task); 96 } 97 98 if(task == null) { 99 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.save")); 100 } else if("update".equals(action)) { 101 Scheduler.removeTask(task.getId().intValue()); 102 } 103 Scheduler.addTask(task); 104 } catch(Exception e) { 105 Logger.logError("Exception processing form data", e); 106 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.save")); 107 } 108 109 if(! errors.isEmpty()) { 110 saveErrors(request, errors); 111 saveToken(request); 112 return mapping.getInputForward(); 113 } 114 115 session.removeAttribute(Constants.TASK_KEY); 116 return mapping.findForward("listtasks"); 117 } 118 119 } 120 | Popular Tags |