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.edit;
20
21 import java.lang.reflect.InvocationTargetException;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Iterator;
25
26 import javax.servlet.ServletException;
27 import javax.servlet.http.HttpServletRequest;
28 import javax.servlet.http.HttpServletResponse;
29 import javax.servlet.http.HttpSession;
30
31 import org.apache.struts.action.Action;
32 import org.apache.struts.action.ActionForm;
33 import org.apache.struts.action.ActionForward;
34 import org.apache.struts.action.ActionMapping;
35
36 import org.apache.commons.beanutils.PropertyUtils;
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39
40 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
41 import org.fhw.cabaweb.data.DataInterfaceProjekte;
42 import org.fhw.cabaweb.data.DataInterfaceSprachen;
43 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsnamen;
44 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenFeldbeschreibungen;
45 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenFeldnamen;
46 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsnamen;
47
48 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
49 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldbeschreibungen;
50
51 import org.fhw.cabaweb.webfrontend.configs.Keys;
52 import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenFeldbeschreibungForm;
53
54 /***
55 * <strong>Action</strong>-Klasse für die Edit ErgebnissdatenFeldbeschreibung Action .
56 * Die Controller Klasse der Struts Model View Controller Architektur.
57 *
58 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
59 * @version Version 1.0 16.07.2004
60 */
61 public final class EditErgebnissdatenFeldbeschreibungAction extends Action {
62
63 /***
64 * The <code>Log</code> instance for this application.
65 */
66 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.edit");
67
68 /***
69 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
70 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
71 * erzeugt.
72 *
73 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
74 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
75 * wenn die Anfrage bereits bearbeitet wurde.
76 *
77 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
78 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
79 * @param request Die HTTP Anfrage die wir gerade bearbeiten
80 * @param response The HTTP Antwort die wir erzeugen
81 *
82 * @return Die Action zu der wir weiterleiten
83 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
84 * bzw. die Business Logik einen Fehler verursacht
85 */
86 public ActionForward execute(ActionMapping mapping,
87 ActionForm form,
88 HttpServletRequest request,
89 HttpServletResponse response)
90 throws Exception
91 {
92 /*** Forwarding Action Variable mit null initialisieren */
93
94 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
95
96 /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
97
98 /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
99 * <code>ActionErrors</code> Objekt hinzugefügt.
100 */
101
102
103 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
104 DataInterfaceErgebnissdatenFeldbeschreibungen divfb = new DataInterfaceErgebnissdatenFeldbeschreibungen();
105 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
106 DataInterfaceErgebnissdatenFeldnamen divfn = new DataInterfaceErgebnissdatenFeldnamen();
107 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
108 DataInterfaceErgebnissdatenUntergruppierungsnamen divugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
109 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
110 DataInterfaceErgebnissdatenGruppierungsnamen divgn = new DataInterfaceErgebnissdatenGruppierungsnamen();
111 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
112 DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
113 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
114 DataInterfaceProjekte dip = new DataInterfaceProjekte();
115 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
116 DataInterfaceSprachen dis = new DataInterfaceSprachen();
117 /*** Die Session der aktuellen Anfrage */
118 HttpSession session = request.getSession();
119 /*** Die übergebene Action */
120 String action = request.getParameter("action");
121
122 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
123 boolean isAdmin = request.isUserInRole("Administrator");
124 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
125 boolean isProjectleader = false;
126 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
127 boolean isUser = false;
128 /*** Zwischenspeichvaribale für den Namen des Benutzers */
129 String username = request.getRemoteUser();
130
131 if(!isAdmin)
132 {
133 isProjectleader = request.isUserInRole("Projektleiter");
134 }
135 if(!isAdmin && !isProjectleader)
136 {
137 isUser = request.isUserInRole("Benutzer");
138 }
139
140 if (action == null)
141 {
142 action = "Create";
143 }
144
145 /*** Zwischenspeichvaribale für die Feldnummer (Integer) */
146 Integer feldnummer = null;
147 /*** Zwischenspeichvaribale für die Feldnummer (Request String) */
148 String fnummer = request.getParameter("feldnummer");
149
150 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Integer) */
151 Integer untergruppierungsnummer = null;
152 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Request String) */
153 String ugrpnummer = request.getParameter("untergruppierungsnummer");
154
155 /*** Zwischenspeichvaribale für die Feldnummer (Integer) */
156 Integer gruppierungsnummer = null;
157 /*** Zwischenspeichvaribale für die Feldnummer (Request String) */
158 String grpnummer = request.getParameter("gruppierungsnummer");
159
160 /*** Zwischenspeichvaribale für die Projektnummer (Integer) */
161 Integer projektnummer = null;
162 /*** Zwischenspeichvaribale für die Projektnummer (Request String) */
163 String prjnummer = request.getParameter("projektnummer");
164
165 /*** Zwischenspeichvaribale für die Sprachnummer (Integer) */
166 Integer sprachnummer = null;
167 /*** Zwischenspeichvaribale für die Sprachnummer (Request String) */
168 String sprnummer = request.getParameter("sprachnummer");
169
170 if(fnummer != null)
171 {
172 feldnummer = new Integer(fnummer);
173 }
174
175 if(ugrpnummer != null)
176 {
177 untergruppierungsnummer = new Integer(ugrpnummer);
178 }
179
180 if(grpnummer != null)
181 {
182 gruppierungsnummer = new Integer(grpnummer);
183 }
184
185 if(prjnummer != null)
186 {
187 projektnummer = new Integer(prjnummer);
188 }
189
190 if(sprnummer != null)
191 {
192 sprachnummer = new Integer(sprnummer);
193 }
194
195 if (log.isDebugEnabled())
196 {
197 log.debug("EditErgebnissdatenFeldbeschreibungAction: Processing " + action + " action for Preset Fielddescription [" + feldnummer + "]");
198 }
199
200 Collection ergebnissdatenFeldbeschreibungen = divfb.sucheKombination(projektnummer, feldnummer, gruppierungsnummer, untergruppierungsnummer, sprachnummer);
201 Iterator iter = ergebnissdatenFeldbeschreibungen.iterator();
202 Ergebnissdaten_Feldbeschreibungen ergebnissdatenFeldbeschreibung = null;
203
204 if(iter.hasNext())
205 {
206 ergebnissdatenFeldbeschreibung = (Ergebnissdaten_Feldbeschreibungen) iter.next();
207 }
208
209 if ((ergebnissdatenFeldbeschreibung == null) && !action.equals("Create"))
210 {
211 if (log.isDebugEnabled())
212 {
213 log.debug(" No Preset Fielddescription for feldnummer " + feldnummer);
214 }
215
216 return (mapping.findForward("failure"));
217 }
218
219 if (ergebnissdatenFeldbeschreibung != null)
220 {
221 session.setAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY, ergebnissdatenFeldbeschreibung);
222 }
223
224 Collection projekte = null;
225
226 if(isAdmin)
227 {
228 if (log.isDebugEnabled())
229 {
230 log.debug(" User has Role: Administrator");
231 log.debug(" Searching all Projects");
232 }
233
234 projekte = dip.sucheAlle();
235
236 if (log.isDebugEnabled())
237 {
238 log.debug(" Found " + projekte.size() + " Projects");
239 }
240 }
241 else if(isProjectleader)
242 {
243 if (log.isDebugEnabled())
244 {
245 log.debug(" User is NOT Administrator");
246 log.debug(" Searching own Project");
247 }
248
249 Collection usernames = digm.sucheLogInName(username);
250 iter = usernames.iterator();
251 Gruppenmitglieder user = null;
252
253 if(iter.hasNext())
254 {
255 user = (Gruppenmitglieder) iter.next();
256 }
257
258 if (log.isDebugEnabled())
259 {
260 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
261 }
262
263 ArrayList projekteAL = new ArrayList();
264 projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
265 projekte = projekteAL;
266
267 if (log.isDebugEnabled())
268 {
269 log.debug(" Found " + projekte.size() + " Projects");
270 }
271 }
272
273 if (projekte != null)
274 {
275 session.setAttribute(Keys.PROJEKTE_KEY, projekte);
276 }
277
278 Collection ergebnissdatenFeldnamen = null;
279
280 if(isAdmin)
281 {
282 if (log.isDebugEnabled())
283 {
284 log.debug(" User has Role: Administrator");
285 log.debug(" Searching all Fieldnames");
286 }
287
288 ergebnissdatenFeldnamen = divfn.sucheAlle();
289
290 if (log.isDebugEnabled())
291 {
292 log.debug(" Found " + ergebnissdatenFeldnamen.size() + " Fieldnames");
293 }
294 }
295 else if(isProjectleader)
296 {
297 if (log.isDebugEnabled())
298 {
299 log.debug(" User is NOT Administrator");
300 log.debug(" Searching own Fieldnames");
301 }
302
303 Collection usernames = digm.sucheLogInName(username);
304 iter = usernames.iterator();
305 Gruppenmitglieder user = null;
306
307 if(iter.hasNext())
308 {
309 user = (Gruppenmitglieder) iter.next();
310 }
311
312 if (log.isDebugEnabled())
313 {
314 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
315 }
316
317 ergebnissdatenFeldnamen = divfn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
318
319 if (log.isDebugEnabled())
320 {
321 log.debug(" Found " + ergebnissdatenFeldnamen.size() + " Fieldnames");
322 }
323 }
324
325 if (ergebnissdatenFeldnamen != null)
326 {
327 session.setAttribute(Keys.ERGEBNISSDATENFELDNAMEN_KEY, ergebnissdatenFeldnamen);
328 }
329
330 Collection ergebnissdatenUntergruppierungsnamen = null;
331
332 if(isAdmin)
333 {
334 if (log.isDebugEnabled())
335 {
336 log.debug(" User has Role: Administrator");
337 log.debug(" Searching all Sub-Groupnames");
338 }
339
340 ergebnissdatenUntergruppierungsnamen = divugn.sucheAlle();
341
342 if (log.isDebugEnabled())
343 {
344 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Sub-Groupnames");
345 }
346 }
347 else if(isProjectleader)
348 {
349 if (log.isDebugEnabled())
350 {
351 log.debug(" User is NOT Administrator");
352 log.debug(" Searching own Sub-Groupnames");
353 }
354
355 Collection usernames = digm.sucheLogInName(username);
356 iter = usernames.iterator();
357 Gruppenmitglieder user = null;
358
359 if(iter.hasNext())
360 {
361 user = (Gruppenmitglieder) iter.next();
362 }
363
364 if (log.isDebugEnabled())
365 {
366 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
367 }
368
369 ergebnissdatenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
370
371 if (log.isDebugEnabled())
372 {
373 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Sub-Groupnames");
374 }
375 }
376
377 if (ergebnissdatenUntergruppierungsnamen != null)
378 {
379 session.setAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSNAMEN_KEY, ergebnissdatenUntergruppierungsnamen);
380 }
381
382 Collection ergebnissdatenGruppierungsnamen = null;
383
384 if(isAdmin)
385 {
386 if (log.isDebugEnabled())
387 {
388 log.debug(" User has Role: Administrator");
389 log.debug(" Searching all Groupnames");
390 }
391
392 ergebnissdatenGruppierungsnamen = divgn.sucheAlle();
393
394 if (log.isDebugEnabled())
395 {
396 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
397 }
398 }
399 else if(isProjectleader)
400 {
401 if (log.isDebugEnabled())
402 {
403 log.debug(" User is NOT Administrator");
404 log.debug(" Searching own Groupnames");
405 }
406
407 Collection usernames = digm.sucheLogInName(username);
408 iter = usernames.iterator();
409 Gruppenmitglieder user = null;
410
411 if(iter.hasNext())
412 {
413 user = (Gruppenmitglieder) iter.next();
414 }
415
416 if (log.isDebugEnabled())
417 {
418 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
419 }
420
421 ergebnissdatenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
422
423 if (log.isDebugEnabled())
424 {
425 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
426 }
427 }
428
429 if (ergebnissdatenGruppierungsnamen != null)
430 {
431 session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSNAMEN_KEY, ergebnissdatenGruppierungsnamen);
432 }
433
434 Collection sprachen = dis.sucheAlle();
435 if (sprachen != null)
436 {
437 session.setAttribute(Keys.SPRACHEN_KEY, sprachen);
438 }
439
440
441 if (form == null)
442 {
443 if (log.isDebugEnabled())
444 {
445 log.debug(" Creating new ErgebnissdatenFeldbeschreibungForm bean under key " + mapping.getAttribute());
446 }
447
448 form = new ErgebnissdatenFeldbeschreibungForm();
449
450 if ("request".equals(mapping.getScope()))
451 {
452 request.setAttribute(mapping.getAttribute(), form);
453 }
454 else
455 {
456 session.setAttribute(mapping.getAttribute(), form);
457 }
458 }
459
460 ErgebnissdatenFeldbeschreibungForm prvugbform = (ErgebnissdatenFeldbeschreibungForm) form;
461 prvugbform.setAction(action);
462
463 if (!action.equals("Create"))
464 {
465 if (log.isDebugEnabled())
466 {
467 log.debug(" Populating form from " + ergebnissdatenFeldbeschreibung);
468 }
469
470 try
471 {
472 PropertyUtils.copyProperties(prvugbform, ergebnissdatenFeldbeschreibung);
473 prvugbform.setFeldnummer(ergebnissdatenFeldbeschreibung.getErgebnissdaten_feldnamen().getFeldnummer());
474 prvugbform.setUntergruppierungsnummer(ergebnissdatenFeldbeschreibung.getErgebnissdaten_feldnamen().getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer());
475 prvugbform.setGruppierungsnummer(ergebnissdatenFeldbeschreibung.getErgebnissdaten_feldnamen().getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer());
476 prvugbform.setProjektnummer(ergebnissdatenFeldbeschreibung.getErgebnissdaten_feldnamen().getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer());
477 prvugbform.setSprachnummer(ergebnissdatenFeldbeschreibung.getSprachen().getSprachnummer());
478 prvugbform.setAction(action);
479 }
480 catch (InvocationTargetException e)
481 {
482 Throwable t = e.getTargetException();
483 if (t == null)
484 t = e;
485 log.error("ErgebnissdatenFeldbeschreibungForm.populate", t);
486 throw new ServletException("ErgebnissdatenFeldbeschreibungForm.populate", t);
487 }
488 catch (Throwable t)
489 {
490 log.error("ErgebnissdatenFeldbeschreibungForm.populate", t);
491 throw new ServletException("ErgebnissdatenFeldbeschreibungForm.populate", t);
492 }
493 }
494
495
496 if (log.isDebugEnabled())
497 {
498 log.debug(" Forwarding to 'success' page");
499 }
500 return (mapping.findForward("success"));
501 }
502 }