KickJava   Java API By Example, From Geeks To Geeks.

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


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 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 JavaDoc 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 JavaDoc action = (String JavaDoc) request.getParameter("action");
79             if("create".equals(action)) {
80                 task = new ScheduledTaskModel();
81                 task.setId(new Integer JavaDoc(-1));
82                 taskForm.set("action", "create");
83                 taskForm.set("id", task.getId());
84             } else if ("update".equals(action)) {
85                 Integer JavaDoc taskId = (Integer JavaDoc) 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 JavaDoc 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