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 import org.apache.struts.validator.*; 35 36 import cowsultants.itracker.ejb.client.exceptions.*; 37 import cowsultants.itracker.ejb.client.interfaces.*; 38 import cowsultants.itracker.ejb.client.models.*; 39 import cowsultants.itracker.ejb.client.util.*; 40 import cowsultants.itracker.web.scheduler.*; 41 import cowsultants.itracker.web.util.*; 42 43 44 public class EditTaskFormAction extends ITrackerAction { 45 46 public EditTaskFormAction() { 47 } 48 49 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 50 ActionErrors errors = new ActionErrors(); 51 52 if(! isLoggedIn(request, response)) { 53 return mapping.findForward("login"); 54 } 55 56 try { 57 InitialContext ic = new InitialContext(); 58 59 Object shRef = ic.lookup("java:comp/env/" + SchedulerHandler.JNDI_NAME); 60 SchedulerHandlerHome shHome = (SchedulerHandlerHome) PortableRemoteObject.narrow(shRef, SchedulerHandlerHome.class); 61 SchedulerHandler sh = shHome.create(); 62 63 HttpSession session = request.getSession(true); 64 HashMap userPermissions = (HashMap) session.getAttribute(Constants.PERMISSIONS_KEY); 65 UserModel user = (UserModel) session.getAttribute(Constants.USER_KEY); 66 if(! UserUtilities.hasPermission(userPermissions, UserUtilities.PERMISSION_USER_ADMIN)) { 67 return mapping.findForward("unauthorized"); 68 } 69 70 71 ScheduledTaskModel task = null; 72 73 DynaValidatorForm taskForm = (DynaValidatorForm) form; 74 if(taskForm == null) { 75 taskForm = new DynaValidatorForm(); 76 } 77 78 String action = (String ) request.getParameter("action"); 79 if("create".equals(action)) { 80 task = new ScheduledTaskModel(); 81 task.setId(new Integer (-1)); 82 taskForm.set("action", "create"); 83 taskForm.set("id", task.getId()); 84 } else if ("update".equals(action)) { 85 Integer taskId = (Integer ) PropertyUtils.getSimpleProperty(form, "id"); 86 task = sh.getTask(taskId); 87 if(task == null) { 88 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidtask")); 89 } else { 90 taskForm.set("action", "update"); 91 taskForm.set("id", task.getId()); 92 if(! task.isAll(task.getMonths())) { 93 taskForm.set("months", task.joinString(task.getMonths())); 94 } 95 if(! task.isAll(task.getDaysOfMonth())) { 96 taskForm.set("daysOfMonth", task.joinString(task.getDaysOfMonth())); 97 } 98 if(! task.isAll(task.getHours())) { 99 taskForm.set("hours", task.joinString(task.getHours())); 100 } 101 if(! task.isAll(task.getMinutes())) { 102 taskForm.set("minutes", task.joinString(task.getMinutes())); 103 } 104 if(! task.isAll(task.getWeekdays())) { 105 taskForm.set("weekdays", task.joinString(task.getWeekdays())); 106 } 107 if(SchedulerUtilities.getClassKey(task.getClassName()) != null) { 108 taskForm.set("className", task.getClassName()); 109 } else { 110 taskForm.set("classNameText", task.getClassName()); 111 } 112 taskForm.set("args", task.getArgsAsString()); 113 } 114 } else { 115 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidaction")); 116 } 117 118 if(errors.isEmpty()) { 119 request.setAttribute("taskForm", taskForm); 120 session.setAttribute(Constants.TASK_KEY, task); 121 saveToken(request); 122 return mapping.getInputForward(); 123 } 124 } catch(Exception e) { 125 Logger.logError("Exception while creating edit task form.", e); 126 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); 127 } 128 129 if(! errors.isEmpty()) { 130 saveErrors(request, errors); 131 } 132 133 return mapping.findForward("error"); 134 } 135 136 } 137 | Popular Tags |