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.ArrayList;
22 import java.util.Collection;
23 import java.util.Iterator;
24
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.servlet.http.HttpSession;
29
30 import org.apache.struts.action.Action;
31 import org.apache.struts.action.ActionForm;
32 import org.apache.struts.action.ActionForward;
33 import org.apache.struts.action.ActionMapping;
34
35 import org.apache.commons.logging.Log;
36 import org.apache.commons.logging.LogFactory;
37
38 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
39 import org.fhw.cabaweb.data.DataInterfaceProjektgruppen;
40 import org.fhw.cabaweb.data.DataInterfaceReportnamen;
41 import org.fhw.cabaweb.data.DataInterfaceSprachen;
42 import org.fhw.cabaweb.data.constants.Constants;
43
44 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
45 import org.fhw.cabaweb.ojb.dataobjects.Projektgruppen;
46 import org.fhw.cabaweb.ojb.dataobjects.Reportnamen;
47 import org.fhw.cabaweb.ojb.dataobjects.Sprachen;
48 import org.fhw.cabaweb.webfrontend.configs.Keys;
49 import org.fhw.cabaweb.webfrontend.forms.multiple.ProjektgruppenForm;
50 import org.fhw.cabaweb.webfrontend.tools.Common;
51
52 /***
53 * <strong>Action</strong>-Klasse für die Liste downloadbaren Resultate Action .
54 * Die Controller Klasse der Struts Model View Controller Architektur.
55 *
56 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
57 * @version Version 1.0 11.09.2004
58 */
59 public final class ListResultatDownloadsAction extends Action {
60
61 /***
62 * The <code>Log</code> instance for this application.
63 */
64 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.list");
65
66
67 /***
68 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
69 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
70 * erzeugt.
71 *
72 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
73 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
74 * wenn die Anfrage bereits bearbeitet wurde.
75 *
76 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
77 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
78 * @param request Die HTTP Anfrage die wir gerade bearbeiten
79 * @param response The HTTP Antwort die wir erzeugen
80 *
81 * @return Die Action zu der wir weiterleiten
82 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
83 * bzw. die Business Logik einen Fehler verursacht
84 */
85 public ActionForward execute(ActionMapping mapping,
86 ActionForm form,
87 HttpServletRequest request,
88 HttpServletResponse response)
89 throws Exception {
90 /*** Forwarding Action Variable mit null initialisieren */
91
92 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
93
94 /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
95
96 /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
97 * <code>ActionErrors</code> Objekt hinzugefügt.
98 */
99
100
101 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
102 DataInterfaceProjektgruppen dipg = (DataInterfaceProjektgruppen) new DataInterfaceProjektgruppen();
103 dipg.clearCache();
104 /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
105 DataInterfaceGruppenmitglieder dig = new DataInterfaceGruppenmitglieder();
106 dig.clearCache();
107 /*** Data Interface für Reportnamen (indirekter Zugriff auf die OJB Ebene) initialisieren */
108 DataInterfaceReportnamen dirn = new DataInterfaceReportnamen();
109 dirn.clearCache();
110 /*** Data Interface für Sprachen (indirekter Zugriff auf die OJB Ebene) initialisieren */
111 DataInterfaceSprachen dis = new DataInterfaceSprachen();
112 dis.clearCache();
113 /*** Die Session der aktuellen Anfrage */
114 HttpSession session = request.getSession();
115 /*** Die übergebene Action */
116 String action = request.getParameter("action");
117
118 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
119 boolean isAdmin = request.isUserInRole("Administrator");
120 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
121 boolean isProjectleader = false;
122 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
123 boolean isUser = false;
124 /*** Zwischenspeichvaribale für den Namen des Benutzers */
125 String username = request.getRemoteUser();
126
127 if(!isAdmin)
128 {
129 isProjectleader = request.isUserInRole("Projektleiter");
130 }
131 if(!isAdmin && !isProjectleader)
132 {
133 isUser = request.isUserInRole("Benutzer");
134 }
135
136 if (action == null)
137 {
138 action = "List";
139 }
140
141 if (log.isDebugEnabled())
142 {
143 log.debug("ListProjektgruppenAction: Processing " + action + " action");
144 }
145
146 form = null;
147 session.setAttribute(Keys.PROJEKTGRUPPEN_KEY, null);
148 Iterator iter = null;
149
150 Collection usernames = dig.sucheLogInName(username);
151 iter = usernames.iterator();
152 Gruppenmitglieder user = null;
153
154 if (iter.hasNext())
155 {
156 user = (Gruppenmitglieder) iter.next();
157 }
158
159 /*** Dieser Collection werden alle gefundenen Reportnamen zugewiesen. */
160 Collection reportnamen = dirn.sucheBezeichnung(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), Constants.QUARTALSREPORT_KEY);
161 iter = reportnamen.iterator();
162 Reportnamen reportname = null;
163
164 if (iter.hasNext())
165 {
166 reportname = (Reportnamen) iter.next();
167 }
168
169 if (reportname == null)
170 {
171 if (log.isDebugEnabled())
172 {
173 log.debug(" No Reportname found : " + Constants.QUARTALSREPORT_KEY);
174 }
175 }
176
177 if (reportname != null)
178 {
179 session.setAttribute(Keys.REPORTNAME_KEY, reportname);
180 }
181
182 /*** Dieser Collection werden alle gefundenen Reportnamen zugewiesen. */
183 Collection reportnamen2 = dirn.sucheBezeichnung(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), Constants.BEWERTUNGSUEBERBLICK_KEY);
184 iter = reportnamen2.iterator();
185 Reportnamen reportname2 = null;
186
187 if (iter.hasNext())
188 {
189 reportname2 = (Reportnamen) iter.next();
190 }
191
192 if (reportname2 == null)
193 {
194 if (log.isDebugEnabled())
195 {
196 log.debug(" No Reportname found : " + Constants.BEWERTUNGSUEBERBLICK_KEY);
197 }
198 }
199
200 if (reportname != null)
201 {
202 session.setAttribute(Keys.REPORTNAME2_KEY, reportname2);
203 }
204
205 /*** Dieser Collection werden alle gefundenen Projektbeschreibungen zugewiesen. */
206 Collection projektgruppen = null;
207 if(isAdmin)
208 {
209 if (log.isDebugEnabled())
210 {
211 log.debug(" User has Role: Administrator");
212 log.debug(" Searching all Projectgroups");
213 }
214
215 projektgruppen = dipg.sucheAlle();
216 iter = projektgruppen.iterator();
217 Projektgruppen projektgruppe = null;
218
219 while (iter.hasNext())
220 {
221 projektgruppe = (Projektgruppen) iter.next();
222
223 if(projektgruppe.getGruppenname().compareTo("Default") == 0 || projektgruppe.getGruppenname().compareTo("Administratorgruppe") == 0 || projektgruppe.getGruppenname().compareTo("Projektleiter") == 0)
224 {
225 iter.remove();
226 }
227 }
228
229 if (log.isDebugEnabled())
230 {
231 log.debug(" Found " + projektgruppen.size() + " Projectgroups");
232 }
233 }
234 else if(isProjectleader)
235 {
236 if (log.isDebugEnabled())
237 {
238 log.debug(" User has Role: Projectleader");
239 log.debug(" Searching Projectgroups for Projectleader");
240 }
241
242 if (log.isDebugEnabled())
243 {
244 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
245 }
246
247 projektgruppen = dipg.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
248 iter = projektgruppen.iterator();
249 Projektgruppen projektgruppe = null;
250
251 while (iter.hasNext())
252 {
253 projektgruppe = (Projektgruppen) iter.next();
254
255 if(projektgruppe.getGruppenname().compareTo("Default") == 0 || projektgruppe.getGruppenname().compareTo("Administratorgruppe") == 0 || projektgruppe.getGruppenname().compareTo("Projektleiter") == 0)
256 {
257 iter.remove();
258 }
259 }
260
261 if (log.isDebugEnabled())
262 {
263 log.debug(" Found " + projektgruppen.size() + " Projectgroups");
264 }
265 }
266 else if(isUser)
267 {
268 if (log.isDebugEnabled())
269 {
270 log.debug(" User has Role: User");
271 log.debug(" Do not Search");
272 }
273
274 if (log.isDebugEnabled())
275 {
276 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
277 }
278
279 ArrayList projektgruppenAL = new ArrayList();
280 projektgruppenAL.add(user.getProjektgruppe());
281 projektgruppen = projektgruppenAL;
282
283 iter = projektgruppen.iterator();
284 Projektgruppen projektgruppe = null;
285
286 while (iter.hasNext())
287 {
288 projektgruppe = (Projektgruppen) iter.next();
289
290 if(projektgruppe.getGruppenname().compareTo("Default") == 0 || projektgruppe.getGruppenname().compareTo("Administratorgruppe") == 0 || projektgruppe.getGruppenname().compareTo("Projektleiter") == 0)
291 {
292 iter.remove();
293 }
294 }
295
296 if (log.isDebugEnabled())
297 {
298 log.debug(" Found " + projektgruppen.size() + " Projectgroup");
299 }
300 }
301
302 if (projektgruppen == null)
303 {
304 if (log.isDebugEnabled())
305 {
306 log.debug(" No Projectgroups registered");
307 }
308
309 return (mapping.findForward("success"));
310 }
311
312 if (projektgruppen != null)
313 {
314 session.setAttribute(Keys.PROJEKTGRUPPEN_KEY, projektgruppen);
315 }
316
317 Collection sprachen = dis.sucheSprachname(Constants.DEUTSCH_KEY);
318 iter = sprachen.iterator();
319 Sprachen sprache = null;
320
321 if (iter.hasNext())
322 {
323 sprache = (Sprachen) iter.next();
324 }
325
326 if (sprache == null)
327 {
328 if (log.isDebugEnabled())
329 {
330 log.debug(" No Language found: " + Constants.DEUTSCH_KEY);
331 }
332 }
333
334 if (sprache != null)
335 {
336 session.setAttribute(Keys.SPRACHE_KEY, sprache);
337 }
338
339
340 if (form == null)
341 {
342 if (log.isDebugEnabled())
343 {
344 log.debug(" Creating new ProjektgruppenForm bean under key " + mapping.getAttribute());
345 }
346
347 form = new ProjektgruppenForm();
348
349 if ("request".equals(mapping.getScope()))
350 {
351 request.setAttribute(mapping.getAttribute(), form);
352 }
353 else
354 {
355 session.setAttribute(mapping.getAttribute(), form);
356 }
357 }
358
359 ProjektgruppenForm pgpform = (ProjektgruppenForm) form;
360
361 if (action.equals("List"))
362 {
363 if (log.isDebugEnabled())
364 {
365 log.debug(" Populating form from " + projektgruppen);
366 }
367
368 try
369 {
370 pgpform.setProjektgruppen(projektgruppen);
371 }
372 catch (Throwable t)
373 {
374 log.error("ProjektgruppenForm.populate", t);
375 throw new ServletException("ProjektgruppenForm.populate", t);
376 }
377 }
378
379 Common.Pager(request, projektgruppen.size());
380
381
382 if (log.isDebugEnabled())
383 {
384 log.debug(" Forwarding to 'success' page");
385 }
386 return (mapping.findForward("success"));
387 }
388 }