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.DataInterfaceVoreinstellungenGruppierungsnamen;
44 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenFeldbeschreibungen;
45 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenFeldnamen;
46 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenUntergruppierungsnamen;
47
48 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
49 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Feldbeschreibungen;
50
51 import org.fhw.cabaweb.webfrontend.configs.Keys;
52 import org.fhw.cabaweb.webfrontend.forms.simple.VoreinstellungenFeldbeschreibungForm;
53
54 /***
55 * <strong>Action</strong>-Klasse für die Edit VoreinstellungenFeldbeschreibung 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 EditVoreinstellungenFeldbeschreibungAction 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 DataInterfaceVoreinstellungenFeldbeschreibungen divfb = new DataInterfaceVoreinstellungenFeldbeschreibungen();
105 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
106 DataInterfaceVoreinstellungenFeldnamen divfn = new DataInterfaceVoreinstellungenFeldnamen();
107 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
108 DataInterfaceVoreinstellungenUntergruppierungsnamen divugn = new DataInterfaceVoreinstellungenUntergruppierungsnamen();
109 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
110 DataInterfaceVoreinstellungenGruppierungsnamen divgn = new DataInterfaceVoreinstellungenGruppierungsnamen();
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("EditVoreinstellungenFeldbeschreibungAction: Processing " + action + " action for Preset Fielddescription [" + feldnummer + "]");
198 }
199
200 Collection voreinstellungenFeldbeschreibungen = divfb.sucheKombination(projektnummer, feldnummer, gruppierungsnummer, untergruppierungsnummer, sprachnummer);
201 Iterator iter = voreinstellungenFeldbeschreibungen.iterator();
202 Voreinstellungen_Feldbeschreibungen voreinstellungenFeldbeschreibung = null;
203
204 if(iter.hasNext())
205 {
206 voreinstellungenFeldbeschreibung = (Voreinstellungen_Feldbeschreibungen) iter.next();
207 }
208
209 if ((voreinstellungenFeldbeschreibung == 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 (voreinstellungenFeldbeschreibung != null)
220 {
221 session.setAttribute(Keys.VOREINSTELLUNGENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY, voreinstellungenFeldbeschreibung);
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 voreinstellungenFeldnamen = 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 voreinstellungenFeldnamen = divfn.sucheAlle();
289
290 if (log.isDebugEnabled())
291 {
292 log.debug(" Found " + voreinstellungenFeldnamen.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 voreinstellungenFeldnamen = divfn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
318
319 if (log.isDebugEnabled())
320 {
321 log.debug(" Found " + voreinstellungenFeldnamen.size() + " Fieldnames");
322 }
323 }
324
325 if (voreinstellungenFeldnamen != null)
326 {
327 session.setAttribute(Keys.VOREINSTELLUNGENFELDNAMEN_KEY, voreinstellungenFeldnamen);
328 }
329
330 Collection voreinstellungenUntergruppierungsnamen = 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 voreinstellungenUntergruppierungsnamen = divugn.sucheAlle();
341
342 if (log.isDebugEnabled())
343 {
344 log.debug(" Found " + voreinstellungenUntergruppierungsnamen.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 voreinstellungenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
370
371 if (log.isDebugEnabled())
372 {
373 log.debug(" Found " + voreinstellungenUntergruppierungsnamen.size() + " Sub-Groupnames");
374 }
375 }
376
377 if (voreinstellungenUntergruppierungsnamen != null)
378 {
379 session.setAttribute(Keys.VOREINSTELLUNGENUNTERGRUPPIERUNGSNAMEN_KEY, voreinstellungenUntergruppierungsnamen);
380 }
381
382 Collection voreinstellungenGruppierungsnamen = 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 voreinstellungenGruppierungsnamen = divgn.sucheAlle();
393
394 if (log.isDebugEnabled())
395 {
396 log.debug(" Found " + voreinstellungenGruppierungsnamen.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 voreinstellungenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
422
423 if (log.isDebugEnabled())
424 {
425 log.debug(" Found " + voreinstellungenGruppierungsnamen.size() + " Groupnames");
426 }
427 }
428
429 if (voreinstellungenGruppierungsnamen != null)
430 {
431 session.setAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSNAMEN_KEY, voreinstellungenGruppierungsnamen);
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 VoreinstellungenFeldbeschreibungForm bean under key " + mapping.getAttribute());
446 }
447
448 form = new VoreinstellungenFeldbeschreibungForm();
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 VoreinstellungenFeldbeschreibungForm prvugbform = (VoreinstellungenFeldbeschreibungForm) form;
461 prvugbform.setAction(action);
462
463 if (!action.equals("Create"))
464 {
465 if (log.isDebugEnabled())
466 {
467 log.debug(" Populating form from " + voreinstellungenFeldbeschreibung);
468 }
469
470 try
471 {
472 PropertyUtils.copyProperties(prvugbform, voreinstellungenFeldbeschreibung);
473 prvugbform.setFeldnummer(voreinstellungenFeldbeschreibung.getVoreinstellungen_feldnamen().getFeldnummer());
474 prvugbform.setUntergruppierungsnummer(voreinstellungenFeldbeschreibung.getVoreinstellungen_feldnamen().getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsnummer());
475 prvugbform.setGruppierungsnummer(voreinstellungenFeldbeschreibung.getVoreinstellungen_feldnamen().getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer());
476 prvugbform.setProjektnummer(voreinstellungenFeldbeschreibung.getVoreinstellungen_feldnamen().getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer());
477 prvugbform.setSprachnummer(voreinstellungenFeldbeschreibung.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("VoreinstellungenFeldbeschreibungForm.populate", t);
486 throw new ServletException("VoreinstellungenFeldbeschreibungForm.populate", t);
487 }
488 catch (Throwable t)
489 {
490 log.error("VoreinstellungenFeldbeschreibungForm.populate", t);
491 throw new ServletException("VoreinstellungenFeldbeschreibungForm.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 }