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.DataInterfaceErgebnissdatenFeldnamen;
43 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsnamen;
44 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsnamen;
45
46 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldnamen;
48
49 import org.fhw.cabaweb.webfrontend.configs.Keys;
50 import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenFeldnameForm;
51
52 /***
53 * <strong>Action</strong>-Klasse für die Edit ErgebnissdatenFeldname 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 16.07.2004
58 */
59 public final class EditErgebnissdatenFeldnameAction 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.edit");
65
66 /***
67 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
68 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
69 * erzeugt.
70 *
71 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
72 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
73 * wenn die Anfrage bereits bearbeitet wurde.
74 *
75 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
76 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
77 * @param request Die HTTP Anfrage die wir gerade bearbeiten
78 * @param response The HTTP Antwort die wir erzeugen
79 *
80 * @return Die Action zu der wir weiterleiten
81 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
82 * bzw. die Business Logik einen Fehler verursacht
83 */
84 public ActionForward execute(ActionMapping mapping,
85 ActionForm form,
86 HttpServletRequest request,
87 HttpServletResponse response)
88 throws Exception
89 {
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 DataInterfaceErgebnissdatenFeldnamen divfn = new DataInterfaceErgebnissdatenFeldnamen();
103 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
104 DataInterfaceErgebnissdatenGruppierungsnamen divgn = new DataInterfaceErgebnissdatenGruppierungsnamen();
105 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
106 DataInterfaceErgebnissdatenUntergruppierungsnamen divugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
107 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
108 DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
109 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
110 DataInterfaceProjekte dip = new DataInterfaceProjekte();
111 /*** Die Session der aktuellen Anfrage */
112 HttpSession session = request.getSession();
113 /*** Die übergebene Action */
114 String action = request.getParameter("action");
115
116 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
117 boolean isAdmin = request.isUserInRole("Administrator");
118 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
119 boolean isProjectleader = false;
120 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
121 boolean isUser = false;
122 /*** Zwischenspeichvaribale für den Namen des Benutzers */
123 String username = request.getRemoteUser();
124
125 if(!isAdmin)
126 {
127 isProjectleader = request.isUserInRole("Projektleiter");
128 }
129 if(!isAdmin && !isProjectleader)
130 {
131 isUser = request.isUserInRole("Benutzer");
132 }
133
134 if (action == null)
135 {
136 action = "Create";
137 }
138
139 /*** Zwischenspeichvaribale für die Feldnummer (Integer) */
140 Integer feldnummer = null;
141 /*** Zwischenspeichvaribale für die Feldnummer (Request String) */
142 String fnummer = request.getParameter("feldnummer");
143
144 if(fnummer != null)
145 {
146 feldnummer = new Integer(fnummer);
147 }
148
149 if (log.isDebugEnabled())
150 {
151 log.debug("EditErgebnissdatenFeldnameAction: Processing " + action + " action for Preset Fieldname [" + feldnummer + "]");
152 }
153
154 Ergebnissdaten_Feldnamen ergebnissdatenFeldname = (Ergebnissdaten_Feldnamen) divfn.sucheFeldnummer(feldnummer);
155
156 if ((ergebnissdatenFeldname == null) && !action.equals("Create"))
157 {
158 if (log.isDebugEnabled())
159 {
160 log.debug(" No Preset Fieldname for feldnummer " + feldnummer);
161 }
162
163 return (mapping.findForward("failure"));
164 }
165
166 if (ergebnissdatenFeldname != null)
167 {
168 session.setAttribute(Keys.ERGEBNISSDATENFELDNAME_KEY, ergebnissdatenFeldname);
169 }
170
171 Collection projekte = null;
172
173 if(isAdmin)
174 {
175 if (log.isDebugEnabled())
176 {
177 log.debug(" User has Role: Administrator");
178 log.debug(" Searching all Projects");
179 }
180
181 projekte = dip.sucheAlle();
182
183 if (log.isDebugEnabled())
184 {
185 log.debug(" Found " + projekte.size() + " Projects");
186 }
187 }
188 else if(isProjectleader)
189 {
190 if (log.isDebugEnabled())
191 {
192 log.debug(" User is NOT Administrator");
193 log.debug(" Searching own Project");
194 }
195
196 Collection usernames = digm.sucheLogInName(username);
197 Iterator iter = usernames.iterator();
198 Gruppenmitglieder user = null;
199
200 if(iter.hasNext())
201 {
202 user = (Gruppenmitglieder) iter.next();
203 }
204
205 if (log.isDebugEnabled())
206 {
207 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
208 }
209
210 ArrayList projekteAL = new ArrayList();
211 projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
212 projekte = projekteAL;
213
214 if (log.isDebugEnabled())
215 {
216 log.debug(" Found " + projekte.size() + " Projects");
217 }
218 }
219
220 if (projekte != null)
221 {
222 session.setAttribute(Keys.PROJEKTE_KEY, projekte);
223 }
224
225 Collection ergebnissdatenGruppierungsnamen = null;
226
227 if(isAdmin)
228 {
229 if (log.isDebugEnabled())
230 {
231 log.debug(" User has Role: Administrator");
232 log.debug(" Searching all Groupnames");
233 }
234
235 ergebnissdatenGruppierungsnamen = divgn.sucheAlle();
236
237 if (log.isDebugEnabled())
238 {
239 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
240 }
241 }
242 else if(isProjectleader)
243 {
244 if (log.isDebugEnabled())
245 {
246 log.debug(" User is NOT Administrator");
247 log.debug(" Searching own Groupnames");
248 }
249
250 Collection usernames = digm.sucheLogInName(username);
251 Iterator iter = usernames.iterator();
252 Gruppenmitglieder user = null;
253
254 if(iter.hasNext())
255 {
256 user = (Gruppenmitglieder) iter.next();
257 }
258
259 if (log.isDebugEnabled())
260 {
261 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
262 }
263
264 ergebnissdatenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
265
266 if (log.isDebugEnabled())
267 {
268 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
269 }
270 }
271
272 if (ergebnissdatenGruppierungsnamen != null)
273 {
274 session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSNAMEN_KEY, ergebnissdatenGruppierungsnamen);
275 }
276
277 Collection ergebnissdatenUntergruppierungsnamen = null;
278
279 if(isAdmin)
280 {
281 if (log.isDebugEnabled())
282 {
283 log.debug(" User has Role: Administrator");
284 log.debug(" Searching all Groupnames");
285 }
286
287 ergebnissdatenUntergruppierungsnamen = divugn.sucheAlle();
288
289 if (log.isDebugEnabled())
290 {
291 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Groupnames");
292 }
293 }
294 else if(isProjectleader)
295 {
296 if (log.isDebugEnabled())
297 {
298 log.debug(" User is NOT Administrator");
299 log.debug(" Searching own Groupnames");
300 }
301
302 Collection usernames = digm.sucheLogInName(username);
303 Iterator iter = usernames.iterator();
304 Gruppenmitglieder user = null;
305
306 if(iter.hasNext())
307 {
308 user = (Gruppenmitglieder) iter.next();
309 }
310
311 if (log.isDebugEnabled())
312 {
313 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
314 }
315
316 ergebnissdatenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
317
318 if (log.isDebugEnabled())
319 {
320 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Groupnames");
321 }
322 }
323
324 if (ergebnissdatenUntergruppierungsnamen != null)
325 {
326 session.setAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSNAMEN_KEY, ergebnissdatenUntergruppierungsnamen);
327 }
328
329 ArrayList tablenames = new ArrayList();
330 tablenames.add(0, "Ergebnissdaten_Double");
331 tablenames.add(1, "Ergebnissdaten_Integer");
332
333 if (tablenames != null)
334 {
335 session.setAttribute(Keys.TABELLENNAMEN_KEY, tablenames);
336 }
337
338 ArrayList fieldnames = new ArrayList();
339 String base = "double";
340 fieldnames.add(0, "");
341
342 for(int i = 1; i <= 200; i++)
343 {
344 fieldnames.add(i, base + i);
345 }
346
347 base = "integer";
348
349 for(int i = 1; i <= 200; i++)
350 {
351 fieldnames.add(i+200, base + i);
352 }
353
354 if (fieldnames != null)
355 {
356 session.setAttribute(Keys.TABELLEN_FELDNAMEN_KEY, fieldnames);
357 }
358
359 ArrayList numbers = new ArrayList();
360 for(int i = 0; i <= 1000; i++)
361 {
362 numbers.add(i, new Integer(i));
363 }
364
365 if (numbers != null)
366 {
367 session.setAttribute(Keys.NUMBERS_KEY, numbers);
368 }
369
370
371 if (form == null)
372 {
373 if (log.isDebugEnabled())
374 {
375 log.debug(" Creating new ErgebnissdatenFeldnameForm bean under key " + mapping.getAttribute());
376 }
377
378 form = new ErgebnissdatenFeldnameForm();
379
380 if ("request".equals(mapping.getScope()))
381 {
382 request.setAttribute(mapping.getAttribute(), form);
383 }
384 else
385 {
386 session.setAttribute(mapping.getAttribute(), form);
387 }
388 }
389
390 ErgebnissdatenFeldnameForm prvfform = (ErgebnissdatenFeldnameForm) form;
391 prvfform.setAction(action);
392
393 if (!action.equals("Create"))
394 {
395 if (log.isDebugEnabled())
396 {
397 log.debug(" Populating form from " + ergebnissdatenFeldname);
398 }
399
400 try
401 {
402 PropertyUtils.copyProperties(prvfform, ergebnissdatenFeldname);
403 prvfform.setFeldnummer(feldnummer);
404 prvfform.setUntergruppierungsnummer(ergebnissdatenFeldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer());
405 prvfform.setGruppierungsnummer(ergebnissdatenFeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer());
406 prvfform.setProjektnummer(ergebnissdatenFeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer());
407 prvfform.setFeldnamebenutzer(ergebnissdatenFeldname.getFeldname_benutzer());
408 prvfform.setAction(action);
409 }
410 catch (InvocationTargetException e)
411 {
412 Throwable t = e.getTargetException();
413 if (t == null)
414 t = e;
415 log.error("ErgebnissdatenFeldnameForm.populate", t);
416 throw new ServletException("ErgebnissdatenFeldnameForm.populate", t);
417 }
418 catch (Throwable t)
419 {
420 log.error("ErgebnissdatenFeldnameForm.populate", t);
421 throw new ServletException("ErgebnissdatenFeldnameForm.populate", t);
422 }
423 }
424
425
426 if (log.isDebugEnabled())
427 {
428 log.debug(" Forwarding to 'success' page");
429 }
430 return (mapping.findForward("success"));
431 }
432 }