1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.fhw.cabaweb.webfrontend.actions.list;
20
21 import java.util.Collection;
22 import java.util.Iterator;
23
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27 import javax.servlet.http.HttpSession;
28
29 import org.apache.struts.action.Action;
30 import org.apache.struts.action.ActionForm;
31 import org.apache.struts.action.ActionForward;
32 import org.apache.struts.action.ActionMapping;
33
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36
37 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
38 import org.fhw.cabaweb.data.DataInterfaceProjektbeschreibungen;
39
40 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
41 import org.fhw.cabaweb.webfrontend.configs.Keys;
42 import org.fhw.cabaweb.webfrontend.forms.multiple.ProjektbeschreibungenForm;
43 import org.fhw.cabaweb.webfrontend.tools.Common;
44
45 /***
46 * <strong>Action</strong>-Klasse für die List Projektbeschreibungen Action .
47 * Die Controller Klasse der Struts Model View Controller Architektur.
48 *
49 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
50 * @version Version 1.0 03.07.2004
51 */
52 public final class ListProjektbeschreibungenAction extends Action {
53
54 /***
55 * The <code>Log</code> instance for this application.
56 */
57
58 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.list");
59
60
61 /***
62 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
63 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
64 * erzeugt.
65 *
66 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
67 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
68 * wenn die Anfrage bereits bearbeitet wurde.
69 *
70 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
71 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
72 * @param request Die HTTP Anfrage die wir gerade bearbeiten
73 * @param response The HTTP Antwort die wir erzeugen
74 *
75 * @return Die Action zu der wir weiterleiten
76 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
77 * bzw. die Business Logik einen Fehler verursacht
78 */
79 public ActionForward execute(ActionMapping mapping,
80 ActionForm form,
81 HttpServletRequest request,
82 HttpServletResponse response)
83 throws Exception {
84 /*** Forwarding Action Variable mit null initialisieren */
85
86 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
87
88 /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
89
90 /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
91 * <code>ActionErrors</code> Objekt hinzugefügt.
92 */
93
94
95 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
96 DataInterfaceProjektbeschreibungen dip = (DataInterfaceProjektbeschreibungen) new DataInterfaceProjektbeschreibungen();
97 dip.clearCache();
98 /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
99 DataInterfaceGruppenmitglieder dig = new DataInterfaceGruppenmitglieder();
100 dig.clearCache();
101 /*** Die Session der aktuellen Anfrage */
102 HttpSession session = request.getSession();
103 /*** Die übergebene Action */
104 String action = request.getParameter("action");
105
106 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
107 boolean isAdmin = request.isUserInRole("Administrator");
108 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
109 boolean isProjectleader = false;
110 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
111 boolean isUser = false;
112 /*** Zwischenspeichvaribale für den Namen des Benutzers */
113 String username = request.getRemoteUser();
114
115 if(!isAdmin)
116 {
117 isProjectleader = request.isUserInRole("Projektleiter");
118 }
119 if(!isAdmin && !isProjectleader)
120 {
121 isUser = request.isUserInRole("Benutzer");
122 }
123
124 if (action == null)
125 {
126 action = "List";
127 }
128
129 if (log.isDebugEnabled())
130 {
131 log.debug("ListProjektbeschreibungenAction: Processing " + action + " action");
132 }
133
134 /*** Dieser Collection werden alle gefundenen Projektbeschreibungen zugewiesen. */
135 Collection projektbeschreibungen = null;
136 if(isAdmin)
137 {
138 if (log.isDebugEnabled())
139 {
140 log.debug(" User has Role: Administrator");
141 log.debug(" Searching all Project Desciptions");
142 }
143
144 projektbeschreibungen = dip.sucheAlle();
145
146 if (log.isDebugEnabled())
147 {
148 log.debug(" Found " + projektbeschreibungen.size() + " Project Desciptions");
149 }
150 }
151 else if(isProjectleader)
152 {
153 if (log.isDebugEnabled())
154 {
155 log.debug(" User has Role: Projectleader");
156 log.debug(" Searching Project Desciptions for Projectleader");
157 }
158
159 Collection usernames = dig.sucheLogInName(username);
160 Iterator iter = usernames.iterator();
161 Gruppenmitglieder user = null;
162
163 while (iter.hasNext())
164 {
165 user = (Gruppenmitglieder) iter.next();
166 }
167
168 if (log.isDebugEnabled())
169 {
170 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
171 }
172
173 projektbeschreibungen = dip.sucheKombination(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), null);
174
175 if (log.isDebugEnabled())
176 {
177 log.debug(" Found " + projektbeschreibungen.size() + " Project Desciptions");
178 }
179 }
180 else if(isUser)
181 {
182 if (log.isDebugEnabled())
183 {
184 log.debug(" User has Role: User");
185 log.debug(" Searching Project Desciptions for Projectleader");
186 }
187
188 Collection usernames = dig.sucheLogInName(username);
189 Iterator iter = usernames.iterator();
190 Gruppenmitglieder user = null;
191
192 while (iter.hasNext())
193 {
194 user = (Gruppenmitglieder) iter.next();
195 }
196
197 if (log.isDebugEnabled())
198 {
199 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
200 }
201
202 projektbeschreibungen = dip.sucheKombination(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), null);
203
204 if (log.isDebugEnabled())
205 {
206 log.debug(" Found " + projektbeschreibungen.size() + " Project Desciptions");
207 }
208 }
209
210 if (projektbeschreibungen == null)
211 {
212 if (log.isDebugEnabled())
213 {
214 log.debug(" No Project Desciptions registered");
215 }
216
217 return (mapping.findForward("success"));
218 }
219
220 if (projektbeschreibungen != null)
221 {
222 session.setAttribute(Keys.PROJEKTBESCHREIBUNGEN_KEY, projektbeschreibungen);
223 }
224
225
226 if (form == null)
227 {
228 if (log.isDebugEnabled())
229 {
230 log.debug(" Creating new ProjektbeschreibungenForm bean under key " + mapping.getAttribute());
231 }
232
233 form = new ProjektbeschreibungenForm();
234
235 if ("request".equals(mapping.getScope()))
236 {
237 request.setAttribute(mapping.getAttribute(), form);
238 }
239 else
240 {
241 session.setAttribute(mapping.getAttribute(), form);
242 }
243 }
244
245 ProjektbeschreibungenForm pbform = (ProjektbeschreibungenForm) form;
246
247 if (action.equals("List"))
248 {
249 if (log.isDebugEnabled())
250 {
251 log.debug(" Populating form from " + projektbeschreibungen);
252 }
253
254 try
255 {
256 pbform.setProjektbeschreibungen(projektbeschreibungen);
257 }
258 catch (Throwable t)
259 {
260 log.error("ProjektbeschreibungenForm.populate", t);
261 throw new ServletException("ProjektbeschreibungenForm.populate", t);
262 }
263 }
264
265 Common.Pager(request, projektbeschreibungen.size());
266
267
268 if (log.isDebugEnabled())
269 {
270 log.debug(" Forwarding to 'success' page");
271 }
272 return (mapping.findForward("success"));
273 }
274 }