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.DataInterfaceVoreinstellungenFeldnamen;
43 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenGruppierungsnamen;
44 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenUntergruppierungsnamen;
45
46 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Feldnamen;
48
49 import org.fhw.cabaweb.webfrontend.configs.Keys;
50 import org.fhw.cabaweb.webfrontend.forms.simple.VoreinstellungenFeldnameForm;
51
52 /***
53 * <strong>Action</strong>-Klasse für die Edit VoreinstellungenFeldname 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 EditVoreinstellungenFeldnameAction 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 DataInterfaceVoreinstellungenFeldnamen divfn = new DataInterfaceVoreinstellungenFeldnamen();
103 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
104 DataInterfaceVoreinstellungenGruppierungsnamen divgn = new DataInterfaceVoreinstellungenGruppierungsnamen();
105 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
106 DataInterfaceVoreinstellungenUntergruppierungsnamen divugn = new DataInterfaceVoreinstellungenUntergruppierungsnamen();
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("EditVoreinstellungenFeldnameAction: Processing " + action + " action for Preset Fieldname [" + feldnummer + "]");
152 }
153
154 Voreinstellungen_Feldnamen voreinstellungenFeldname = (Voreinstellungen_Feldnamen) divfn.sucheFeldnummer(feldnummer);
155
156 if ((voreinstellungenFeldname == 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 (voreinstellungenFeldname != null)
167 {
168 session.setAttribute(Keys.VOREINSTELLUNGENFELDNAME_KEY, voreinstellungenFeldname);
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 voreinstellungenGruppierungsnamen = 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 voreinstellungenGruppierungsnamen = divgn.sucheAlle();
236
237 if (log.isDebugEnabled())
238 {
239 log.debug(" Found " + voreinstellungenGruppierungsnamen.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 voreinstellungenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
265
266 if (log.isDebugEnabled())
267 {
268 log.debug(" Found " + voreinstellungenGruppierungsnamen.size() + " Groupnames");
269 }
270 }
271
272 if (voreinstellungenGruppierungsnamen != null)
273 {
274 session.setAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSNAMEN_KEY, voreinstellungenGruppierungsnamen);
275 }
276
277 Collection voreinstellungenUntergruppierungsnamen = 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 voreinstellungenUntergruppierungsnamen = divugn.sucheAlle();
288
289 if (log.isDebugEnabled())
290 {
291 log.debug(" Found " + voreinstellungenUntergruppierungsnamen.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 voreinstellungenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
317
318 if (log.isDebugEnabled())
319 {
320 log.debug(" Found " + voreinstellungenUntergruppierungsnamen.size() + " Groupnames");
321 }
322 }
323
324 if (voreinstellungenUntergruppierungsnamen != null)
325 {
326 session.setAttribute(Keys.VOREINSTELLUNGENUNTERGRUPPIERUNGSNAMEN_KEY, voreinstellungenUntergruppierungsnamen);
327 }
328
329 ArrayList tablenames = new ArrayList();
330 tablenames.add(0, "Voreinstellungen_Double");
331 tablenames.add(1, "Voreinstellungen_Integer");
332 tablenames.add(2, "Voreinstellungen_String");
333
334 if (tablenames != null)
335 {
336 session.setAttribute(Keys.TABELLENNAMEN_KEY, tablenames);
337 }
338
339 ArrayList fieldnames = new ArrayList();
340 String base = "double";
341 fieldnames.add(0, "");
342
343 for(int i = 1; i <= 225; i++)
344 {
345 fieldnames.add(i, base + i);
346 }
347
348 base = "integer";
349
350 for(int i = 1; i <= 200; i++)
351 {
352 fieldnames.add(i+200, base + i);
353 }
354
355 base = "string";
356
357 for(int i = 1; i <= 200; i++)
358 {
359 fieldnames.add(i+400, base + i);
360 }
361
362 if (fieldnames != null)
363 {
364 session.setAttribute(Keys.TABELLEN_FELDNAMEN_KEY, fieldnames);
365 }
366
367 ArrayList numbers = new ArrayList();
368 for(int i = 0; i <= 1000; i++)
369 {
370 numbers.add(i, new Integer(i));
371 }
372
373 if (numbers != null)
374 {
375 session.setAttribute(Keys.NUMBERS_KEY, numbers);
376 }
377
378
379 if (form == null)
380 {
381 if (log.isDebugEnabled())
382 {
383 log.debug(" Creating new VoreinstellungenFeldnameForm bean under key " + mapping.getAttribute());
384 }
385
386 form = new VoreinstellungenFeldnameForm();
387
388 if ("request".equals(mapping.getScope()))
389 {
390 request.setAttribute(mapping.getAttribute(), form);
391 }
392 else
393 {
394 session.setAttribute(mapping.getAttribute(), form);
395 }
396 }
397
398 VoreinstellungenFeldnameForm prvfform = (VoreinstellungenFeldnameForm) form;
399 prvfform.setAction(action);
400
401 if (!action.equals("Create"))
402 {
403 if (log.isDebugEnabled())
404 {
405 log.debug(" Populating form from " + voreinstellungenFeldname);
406 }
407
408 try
409 {
410 PropertyUtils.copyProperties(prvfform, voreinstellungenFeldname);
411 prvfform.setFeldnummer(feldnummer);
412 prvfform.setUntergruppierungsnummer(voreinstellungenFeldname.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsnummer());
413 prvfform.setGruppierungsnummer(voreinstellungenFeldname.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer());
414 prvfform.setProjektnummer(voreinstellungenFeldname.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer());
415 prvfform.setFeldnamebenutzer(voreinstellungenFeldname.getFeldname_benutzer());
416 prvfform.setAction(action);
417 }
418 catch (InvocationTargetException e)
419 {
420 Throwable t = e.getTargetException();
421 if (t == null)
422 t = e;
423 log.error("VoreinstellungenFeldnameForm.populate", t);
424 throw new ServletException("VoreinstellungenFeldnameForm.populate", t);
425 }
426 catch (Throwable t)
427 {
428 log.error("VoreinstellungenFeldnameForm.populate", t);
429 throw new ServletException("VoreinstellungenFeldnameForm.populate", t);
430 }
431 }
432
433
434 if (log.isDebugEnabled())
435 {
436 log.debug(" Forwarding to 'success' page");
437 }
438 return (mapping.findForward("success"));
439 }
440 }