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.DataInterfaceErgebnissdatenGruppierungsbeschreibungen;
44 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsnamen;
45
46 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Gruppierungsbeschreibungen;
48
49 import org.fhw.cabaweb.webfrontend.configs.Keys;
50 import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenGruppierungsbeschreibungForm;
51
52 /***
53 * <strong>Action</strong>-Klasse für die Edit ErgebnissdatenGruppierungsbeschreibung 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 EditErgebnissdatenGruppierungsbeschreibungAction 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 DataInterfaceErgebnissdatenGruppierungsbeschreibungen divgb = new DataInterfaceErgebnissdatenGruppierungsbeschreibungen();
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 DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
107 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
108 DataInterfaceProjekte dip = new DataInterfaceProjekte();
109 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
110 DataInterfaceSprachen dis = new DataInterfaceSprachen();
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 Gruppierungsnummer (Integer) */
140 Integer gruppierungsnummer = null;
141 /*** Zwischenspeichvaribale für die Gruppierungsnummer (Request String) */
142 String grpnummer = request.getParameter("gruppierungsnummer");
143
144 /*** Zwischenspeichvaribale für die Projektnummer (Integer) */
145 Integer projektnummer = null;
146 /*** Zwischenspeichvaribale für die Projektnummer (Request String) */
147 String prjnummer = request.getParameter("projektnummer");
148
149 /*** Zwischenspeichvaribale für die Sprachnummer (Integer) */
150 Integer sprachnummer = null;
151 /*** Zwischenspeichvaribale für die Sprachnummer (Request String) */
152 String sprnummer = request.getParameter("sprachnummer");
153
154 if(grpnummer != null)
155 {
156 gruppierungsnummer = new Integer(grpnummer);
157 }
158
159 if(prjnummer != null)
160 {
161 projektnummer = new Integer(prjnummer);
162 }
163
164 if(sprnummer != null)
165 {
166 sprachnummer = new Integer(sprnummer);
167 }
168
169 if (log.isDebugEnabled())
170 {
171 log.debug("EditErgebnissdatenGruppierungsbeschreibungAction: Processing " + action + " action for Preset Groupdescription [" + gruppierungsnummer + "]");
172 }
173
174 Collection ergebnissdatenGruppierungsbeschreibungen = divgb.sucheKombination(projektnummer, gruppierungsnummer, sprachnummer);
175 Iterator iter = ergebnissdatenGruppierungsbeschreibungen.iterator();
176 Ergebnissdaten_Gruppierungsbeschreibungen ergebnissdatenGruppierungsbeschreibung = null;
177
178 if(iter.hasNext())
179 {
180 ergebnissdatenGruppierungsbeschreibung = (Ergebnissdaten_Gruppierungsbeschreibungen) iter.next();
181 }
182
183 if ((ergebnissdatenGruppierungsbeschreibung == null) && !action.equals("Create"))
184 {
185 if (log.isDebugEnabled())
186 {
187 log.debug(" No Preset Groupdescription for gruppierungsnummer " + gruppierungsnummer);
188 }
189
190 return (mapping.findForward("failure"));
191 }
192
193 if (ergebnissdatenGruppierungsbeschreibung != null)
194 {
195 session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSBESCHREIBUNG_KEY, ergebnissdatenGruppierungsbeschreibung);
196 }
197
198 Collection projekte = null;
199
200 if(isAdmin)
201 {
202 if (log.isDebugEnabled())
203 {
204 log.debug(" User has Role: Administrator");
205 log.debug(" Searching all Projects");
206 }
207
208 projekte = dip.sucheAlle();
209
210 if (log.isDebugEnabled())
211 {
212 log.debug(" Found " + projekte.size() + " Projects");
213 }
214 }
215 else if(isProjectleader)
216 {
217 if (log.isDebugEnabled())
218 {
219 log.debug(" User is NOT Administrator");
220 log.debug(" Searching own Project");
221 }
222
223 Collection usernames = digm.sucheLogInName(username);
224 iter = usernames.iterator();
225 Gruppenmitglieder user = null;
226
227 if(iter.hasNext())
228 {
229 user = (Gruppenmitglieder) iter.next();
230 }
231
232 if (log.isDebugEnabled())
233 {
234 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
235 }
236
237 ArrayList projekteAL = new ArrayList();
238 projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
239 projekte = projekteAL;
240
241 if (log.isDebugEnabled())
242 {
243 log.debug(" Found " + projekte.size() + " Projects");
244 }
245 }
246
247 if (projekte != null)
248 {
249 session.setAttribute(Keys.PROJEKTE_KEY, projekte);
250 }
251
252 Collection ergebnissdatenGruppierungsnamen = null;
253
254 if(isAdmin)
255 {
256 if (log.isDebugEnabled())
257 {
258 log.debug(" User has Role: Administrator");
259 log.debug(" Searching all Groupnames");
260 }
261
262 ergebnissdatenGruppierungsnamen = divgn.sucheAlle();
263
264 if (log.isDebugEnabled())
265 {
266 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
267 }
268 }
269 else if(isProjectleader)
270 {
271 if (log.isDebugEnabled())
272 {
273 log.debug(" User is NOT Administrator");
274 log.debug(" Searching own Groupnames");
275 }
276
277 Collection usernames = digm.sucheLogInName(username);
278 iter = usernames.iterator();
279 Gruppenmitglieder user = null;
280
281 if(iter.hasNext())
282 {
283 user = (Gruppenmitglieder) iter.next();
284 }
285
286 if (log.isDebugEnabled())
287 {
288 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
289 }
290
291 ergebnissdatenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
292
293 if (log.isDebugEnabled())
294 {
295 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
296 }
297 }
298
299 if (ergebnissdatenGruppierungsnamen != null)
300 {
301 session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSNAMEN_KEY, ergebnissdatenGruppierungsnamen);
302 }
303
304 Collection sprachen = dis.sucheAlle();
305 if (sprachen != null)
306 {
307 session.setAttribute(Keys.SPRACHEN_KEY, sprachen);
308 }
309
310
311 if (form == null)
312 {
313 if (log.isDebugEnabled())
314 {
315 log.debug(" Creating new ErgebnissdatenGruppierungsbeschreibungForm bean under key " + mapping.getAttribute());
316 }
317
318 form = new ErgebnissdatenGruppierungsbeschreibungForm();
319
320 if ("request".equals(mapping.getScope()))
321 {
322 request.setAttribute(mapping.getAttribute(), form);
323 }
324 else
325 {
326 session.setAttribute(mapping.getAttribute(), form);
327 }
328 }
329
330 ErgebnissdatenGruppierungsbeschreibungForm prvgnform = (ErgebnissdatenGruppierungsbeschreibungForm) form;
331 prvgnform.setAction(action);
332
333 if (!action.equals("Create"))
334 {
335 if (log.isDebugEnabled())
336 {
337 log.debug(" Populating form from " + ergebnissdatenGruppierungsbeschreibung);
338 }
339
340 try
341 {
342 PropertyUtils.copyProperties(prvgnform, ergebnissdatenGruppierungsbeschreibung);
343 prvgnform.setGruppierungsnummer(ergebnissdatenGruppierungsbeschreibung.getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer());
344 prvgnform.setProjektnummer(ergebnissdatenGruppierungsbeschreibung.getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer());
345 prvgnform.setSprachnummer(ergebnissdatenGruppierungsbeschreibung.getSprachen().getSprachnummer());
346 prvgnform.setAction(action);
347 }
348 catch (InvocationTargetException e)
349 {
350 Throwable t = e.getTargetException();
351 if (t == null)
352 t = e;
353 log.error("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
354 throw new ServletException("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
355 }
356 catch (Throwable t)
357 {
358 log.error("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
359 throw new ServletException("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
360 }
361 }
362
363
364 if (log.isDebugEnabled())
365 {
366 log.debug(" Forwarding to 'success' page");
367 }
368 return (mapping.findForward("success"));
369 }
370 }