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.DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen;
45 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsnamen;
46
47 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
48 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsbeschreibungen;
49
50 import org.fhw.cabaweb.webfrontend.configs.Keys;
51 import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenUntergruppierungsbeschreibungForm;
52
53 /***
54 * <strong>Action</strong>-Klasse für die Edit ErgebnissdatenUntergruppierungsbeschreibung Action .
55 * Die Controller Klasse der Struts Model View Controller Architektur.
56 *
57 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
58 * @version Version 1.0 16.07.2004
59 */
60 public final class EditErgebnissdatenUntergruppierungsbeschreibungAction extends Action {
61
62 /***
63 * The <code>Log</code> instance for this application.
64 */
65 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.edit");
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 {
91 /*** Forwarding Action Variable mit null initialisieren */
92
93 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
94
95 /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
96
97 /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
98 * <code>ActionErrors</code> Objekt hinzugefügt.
99 */
100
101
102 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
103 DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen divugb = new DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen();
104 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
105 DataInterfaceErgebnissdatenUntergruppierungsnamen divugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
106 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
107 DataInterfaceErgebnissdatenGruppierungsnamen divgn = new DataInterfaceErgebnissdatenGruppierungsnamen();
108 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
109 DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
110 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
111 DataInterfaceProjekte dip = new DataInterfaceProjekte();
112 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
113 DataInterfaceSprachen dis = new DataInterfaceSprachen();
114 /*** Die Session der aktuellen Anfrage */
115 HttpSession session = request.getSession();
116 /*** Die übergebene Action */
117 String action = request.getParameter("action");
118
119 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
120 boolean isAdmin = request.isUserInRole("Administrator");
121 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
122 boolean isProjectleader = false;
123 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
124 boolean isUser = false;
125 /*** Zwischenspeichvaribale für den Namen des Benutzers */
126 String username = request.getRemoteUser();
127
128 if(!isAdmin)
129 {
130 isProjectleader = request.isUserInRole("Projektleiter");
131 }
132 if(!isAdmin && !isProjectleader)
133 {
134 isUser = request.isUserInRole("Benutzer");
135 }
136
137 if (action == null)
138 {
139 action = "Create";
140 }
141
142 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Integer) */
143 Integer untergruppierungsnummer = null;
144 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Request String) */
145 String ugrpnummer = request.getParameter("untergruppierungsnummer");
146
147 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Integer) */
148 Integer gruppierungsnummer = null;
149 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Request String) */
150 String grpnummer = request.getParameter("gruppierungsnummer");
151
152 /*** Zwischenspeichvaribale für die Projektnummer (Integer) */
153 Integer projektnummer = null;
154 /*** Zwischenspeichvaribale für die Projektnummer (Request String) */
155 String prjnummer = request.getParameter("projektnummer");
156
157 /*** Zwischenspeichvaribale für die Sprachnummer (Integer) */
158 Integer sprachnummer = null;
159 /*** Zwischenspeichvaribale für die Sprachnummer (Request String) */
160 String sprnummer = request.getParameter("sprachnummer");
161
162 if(ugrpnummer != null)
163 {
164 untergruppierungsnummer = new Integer(ugrpnummer);
165 }
166
167 if(grpnummer != null)
168 {
169 gruppierungsnummer = new Integer(grpnummer);
170 }
171
172 if(prjnummer != null)
173 {
174 projektnummer = new Integer(prjnummer);
175 }
176
177 if(sprnummer != null)
178 {
179 sprachnummer = new Integer(sprnummer);
180 }
181
182 if (log.isDebugEnabled())
183 {
184 log.debug("EditErgebnissdatenUntergruppierungsbeschreibungAction: Processing " + action + " action for Preset Sub-Groupdescription [" + untergruppierungsnummer + "]");
185 }
186
187 Collection ergebnissdatenUntergruppierungsbeschreibungen = divugb.sucheKombination(projektnummer, gruppierungsnummer, untergruppierungsnummer, sprachnummer);
188 Iterator iter = ergebnissdatenUntergruppierungsbeschreibungen.iterator();
189 Ergebnissdaten_Untergruppierungsbeschreibungen ergebnissdatenUntergruppierungsbeschreibung = null;
190
191 if(iter.hasNext())
192 {
193 ergebnissdatenUntergruppierungsbeschreibung = (Ergebnissdaten_Untergruppierungsbeschreibungen) iter.next();
194 }
195
196 if ((ergebnissdatenUntergruppierungsbeschreibung == null) && !action.equals("Create"))
197 {
198 if (log.isDebugEnabled())
199 {
200 log.debug(" No Preset Sub-Groupdescription for untergruppierungsnummer " + untergruppierungsnummer);
201 }
202
203 return (mapping.findForward("failure"));
204 }
205
206 if (ergebnissdatenUntergruppierungsbeschreibung != null)
207 {
208 session.setAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY, ergebnissdatenUntergruppierungsbeschreibung);
209 }
210
211 Collection projekte = null;
212
213 if(isAdmin)
214 {
215 if (log.isDebugEnabled())
216 {
217 log.debug(" User has Role: Administrator");
218 log.debug(" Searching all Projects");
219 }
220
221 projekte = dip.sucheAlle();
222
223 if (log.isDebugEnabled())
224 {
225 log.debug(" Found " + projekte.size() + " Projects");
226 }
227 }
228 else if(isProjectleader)
229 {
230 if (log.isDebugEnabled())
231 {
232 log.debug(" User is NOT Administrator");
233 log.debug(" Searching own Project");
234 }
235
236 Collection usernames = digm.sucheLogInName(username);
237 iter = usernames.iterator();
238 Gruppenmitglieder user = null;
239
240 if(iter.hasNext())
241 {
242 user = (Gruppenmitglieder) iter.next();
243 }
244
245 if (log.isDebugEnabled())
246 {
247 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
248 }
249
250 ArrayList projekteAL = new ArrayList();
251 projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
252 projekte = projekteAL;
253
254 if (log.isDebugEnabled())
255 {
256 log.debug(" Found " + projekte.size() + " Projects");
257 }
258 }
259
260 if (projekte != null)
261 {
262 session.setAttribute(Keys.PROJEKTE_KEY, projekte);
263 }
264
265 Collection ergebnissdatenUntergruppierungsnamen = null;
266
267 if(isAdmin)
268 {
269 if (log.isDebugEnabled())
270 {
271 log.debug(" User has Role: Administrator");
272 log.debug(" Searching all Sub-Groupnames");
273 }
274
275 ergebnissdatenUntergruppierungsnamen = divugn.sucheAlle();
276
277 if (log.isDebugEnabled())
278 {
279 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Sub-Groupnames");
280 }
281 }
282 else if(isProjectleader)
283 {
284 if (log.isDebugEnabled())
285 {
286 log.debug(" User is NOT Administrator");
287 log.debug(" Searching own Sub-Groupnames");
288 }
289
290 Collection usernames = digm.sucheLogInName(username);
291 iter = usernames.iterator();
292 Gruppenmitglieder user = null;
293
294 if(iter.hasNext())
295 {
296 user = (Gruppenmitglieder) iter.next();
297 }
298
299 if (log.isDebugEnabled())
300 {
301 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
302 }
303
304 ergebnissdatenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
305
306 if (log.isDebugEnabled())
307 {
308 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Sub-Groupnames");
309 }
310 }
311
312 if (ergebnissdatenUntergruppierungsnamen != null)
313 {
314 session.setAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSNAMEN_KEY, ergebnissdatenUntergruppierungsnamen);
315 }
316
317 Collection ergebnissdatenGruppierungsnamen = null;
318
319 if(isAdmin)
320 {
321 if (log.isDebugEnabled())
322 {
323 log.debug(" User has Role: Administrator");
324 log.debug(" Searching all Groupnames");
325 }
326
327 ergebnissdatenGruppierungsnamen = divgn.sucheAlle();
328
329 if (log.isDebugEnabled())
330 {
331 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
332 }
333 }
334 else if(isProjectleader)
335 {
336 if (log.isDebugEnabled())
337 {
338 log.debug(" User is NOT Administrator");
339 log.debug(" Searching own Groupnames");
340 }
341
342 Collection usernames = digm.sucheLogInName(username);
343 iter = usernames.iterator();
344 Gruppenmitglieder user = null;
345
346 if(iter.hasNext())
347 {
348 user = (Gruppenmitglieder) iter.next();
349 }
350
351 if (log.isDebugEnabled())
352 {
353 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
354 }
355
356 ergebnissdatenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
357
358 if (log.isDebugEnabled())
359 {
360 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
361 }
362 }
363
364 if (ergebnissdatenGruppierungsnamen != null)
365 {
366 session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSNAMEN_KEY, ergebnissdatenGruppierungsnamen);
367 }
368
369 Collection sprachen = dis.sucheAlle();
370 if (sprachen != null)
371 {
372 session.setAttribute(Keys.SPRACHEN_KEY, sprachen);
373 }
374
375
376 if (form == null)
377 {
378 if (log.isDebugEnabled())
379 {
380 log.debug(" Creating new ErgebnissdatenUntergruppierungsbeschreibungForm bean under key " + mapping.getAttribute());
381 }
382
383 form = new ErgebnissdatenUntergruppierungsbeschreibungForm();
384
385 if ("request".equals(mapping.getScope()))
386 {
387 request.setAttribute(mapping.getAttribute(), form);
388 }
389 else
390 {
391 session.setAttribute(mapping.getAttribute(), form);
392 }
393 }
394
395 ErgebnissdatenUntergruppierungsbeschreibungForm prvugbform = (ErgebnissdatenUntergruppierungsbeschreibungForm) form;
396 prvugbform.setAction(action);
397
398 if (!action.equals("Create"))
399 {
400 if (log.isDebugEnabled())
401 {
402 log.debug(" Populating form from " + ergebnissdatenUntergruppierungsbeschreibung);
403 }
404
405 try
406 {
407 PropertyUtils.copyProperties(prvugbform, ergebnissdatenUntergruppierungsbeschreibung);
408 prvugbform.setGruppierungsnummer(ergebnissdatenUntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer());
409 prvugbform.setUntergruppierungsnummer(ergebnissdatenUntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer());
410 prvugbform.setProjektnummer(ergebnissdatenUntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer());
411 prvugbform.setSprachnummer(ergebnissdatenUntergruppierungsbeschreibung.getSprachen().getSprachnummer());
412 prvugbform.setAction(action);
413 }
414 catch (InvocationTargetException e)
415 {
416 Throwable t = e.getTargetException();
417 if (t == null)
418 t = e;
419 log.error("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
420 throw new ServletException("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
421 }
422 catch (Throwable t)
423 {
424 log.error("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
425 throw new ServletException("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
426 }
427 }
428
429
430 if (log.isDebugEnabled())
431 {
432 log.debug(" Forwarding to 'success' page");
433 }
434 return (mapping.findForward("success"));
435 }
436 }