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.DataInterfaceVoreinstellungenGruppierungsnamen;
43 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenUntergruppierungsnamen;
44
45 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
46 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Untergruppierungsnamen;
47
48 import org.fhw.cabaweb.webfrontend.configs.Keys;
49 import org.fhw.cabaweb.webfrontend.forms.simple.VoreinstellungenUntergruppierungsnameForm;
50
51 /***
52 * <strong>Action</strong>-Klasse für die Edit VoreinstellungenUntergruppierungsname Action .
53 * Die Controller Klasse der Struts Model View Controller Architektur.
54 *
55 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
56 * @version Version 1.0 16.07.2004
57 */
58 public final class EditVoreinstellungenUntergruppierungsnameAction extends Action {
59
60 /***
61 * The <code>Log</code> instance for this application.
62 */
63 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.edit");
64
65 /***
66 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
67 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
68 * erzeugt.
69 *
70 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
71 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
72 * wenn die Anfrage bereits bearbeitet wurde.
73 *
74 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
75 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
76 * @param request Die HTTP Anfrage die wir gerade bearbeiten
77 * @param response The HTTP Antwort die wir erzeugen
78 *
79 * @return Die Action zu der wir weiterleiten
80 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
81 * bzw. die Business Logik einen Fehler verursacht
82 */
83 public ActionForward execute(ActionMapping mapping,
84 ActionForm form,
85 HttpServletRequest request,
86 HttpServletResponse response)
87 throws Exception
88 {
89 /*** Forwarding Action Variable mit null initialisieren */
90
91 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
92
93 /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
94
95 /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
96 * <code>ActionErrors</code> Objekt hinzugefügt.
97 */
98
99
100 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
101 DataInterfaceVoreinstellungenUntergruppierungsnamen divugn = new DataInterfaceVoreinstellungenUntergruppierungsnamen();
102 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
103 DataInterfaceVoreinstellungenGruppierungsnamen divgn = new DataInterfaceVoreinstellungenGruppierungsnamen();
104 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
105 DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
106 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
107 DataInterfaceProjekte dip = new DataInterfaceProjekte();
108 /*** Die Session der aktuellen Anfrage */
109 HttpSession session = request.getSession();
110 /*** Die übergebene Action */
111 String action = request.getParameter("action");
112
113 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
114 boolean isAdmin = request.isUserInRole("Administrator");
115 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
116 boolean isProjectleader = false;
117 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
118 boolean isUser = false;
119 /*** Zwischenspeichvaribale für den Namen des Benutzers */
120 String username = request.getRemoteUser();
121
122 if(!isAdmin)
123 {
124 isProjectleader = request.isUserInRole("Projektleiter");
125 }
126 if(!isAdmin && !isProjectleader)
127 {
128 isUser = request.isUserInRole("Benutzer");
129 }
130
131 if (action == null)
132 {
133 action = "Create";
134 }
135
136 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Integer) */
137 Integer untergruppierungsnummer = null;
138 /*** Zwischenspeichvaribale für die Untergruppierungsnummer (Request String) */
139 String ugrpnummer = request.getParameter("untergruppierungsnummer");
140
141 if(ugrpnummer != null)
142 {
143 untergruppierungsnummer = new Integer(ugrpnummer);
144 }
145
146 if (log.isDebugEnabled())
147 {
148 log.debug("EditVoreinstellungenUntergruppierungsnameAction: Processing " + action + " action for Preset Sub-Groupname [" + untergruppierungsnummer + "]");
149 }
150
151 Voreinstellungen_Untergruppierungsnamen voreinstellungenUntergruppierungsname = (Voreinstellungen_Untergruppierungsnamen) divugn.sucheUntergruppierungsnummer(untergruppierungsnummer);
152
153 if ((voreinstellungenUntergruppierungsname == null) && !action.equals("Create"))
154 {
155 if (log.isDebugEnabled())
156 {
157 log.debug(" No Preset Sub-Groupname for untergruppierungsnummer " + untergruppierungsnummer);
158 }
159
160 return (mapping.findForward("failure"));
161 }
162
163 if (voreinstellungenUntergruppierungsname != null)
164 {
165 session.setAttribute(Keys.VOREINSTELLUNGENUNTERGRUPPIERUNGSNAME_KEY, voreinstellungenUntergruppierungsname);
166 }
167
168 Collection projekte = null;
169
170 if(isAdmin)
171 {
172 if (log.isDebugEnabled())
173 {
174 log.debug(" User has Role: Administrator");
175 log.debug(" Searching all Projects");
176 }
177
178 projekte = dip.sucheAlle();
179
180 if (log.isDebugEnabled())
181 {
182 log.debug(" Found " + projekte.size() + " Projects");
183 }
184 }
185 else if(isProjectleader)
186 {
187 if (log.isDebugEnabled())
188 {
189 log.debug(" User is NOT Administrator");
190 log.debug(" Searching own Project");
191 }
192
193 Collection usernames = digm.sucheLogInName(username);
194 Iterator iter = usernames.iterator();
195 Gruppenmitglieder user = null;
196
197 if(iter.hasNext())
198 {
199 user = (Gruppenmitglieder) iter.next();
200 }
201
202 if (log.isDebugEnabled())
203 {
204 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
205 }
206
207 ArrayList projekteAL = new ArrayList();
208 projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
209 projekte = projekteAL;
210
211 if (log.isDebugEnabled())
212 {
213 log.debug(" Found " + projekte.size() + " Projects");
214 }
215 }
216
217 if (projekte != null)
218 {
219 session.setAttribute(Keys.PROJEKTE_KEY, projekte);
220 }
221
222 Collection voreinstellungenGruppierungsnamen = null;
223
224 if(isAdmin)
225 {
226 if (log.isDebugEnabled())
227 {
228 log.debug(" User has Role: Administrator");
229 log.debug(" Searching all Groupnames");
230 }
231
232 voreinstellungenGruppierungsnamen = divgn.sucheAlle();
233
234 if (log.isDebugEnabled())
235 {
236 log.debug(" Found " + voreinstellungenGruppierungsnamen.size() + " Groupnames");
237 }
238 }
239 else if(isProjectleader)
240 {
241 if (log.isDebugEnabled())
242 {
243 log.debug(" User is NOT Administrator");
244 log.debug(" Searching own Groupnames");
245 }
246
247 Collection usernames = digm.sucheLogInName(username);
248 Iterator iter = usernames.iterator();
249 Gruppenmitglieder user = null;
250
251 if(iter.hasNext())
252 {
253 user = (Gruppenmitglieder) iter.next();
254 }
255
256 if (log.isDebugEnabled())
257 {
258 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
259 }
260
261 voreinstellungenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
262
263 if (log.isDebugEnabled())
264 {
265 log.debug(" Found " + voreinstellungenGruppierungsnamen.size() + " Groupnames");
266 }
267 }
268
269 if (voreinstellungenGruppierungsnamen != null)
270 {
271 session.setAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSNAMEN_KEY, voreinstellungenGruppierungsnamen);
272 }
273
274
275 if (form == null)
276 {
277 if (log.isDebugEnabled())
278 {
279 log.debug(" Creating new VoreinstellungenUntergruppierungsnameForm bean under key " + mapping.getAttribute());
280 }
281
282 form = new VoreinstellungenUntergruppierungsnameForm();
283
284 if ("request".equals(mapping.getScope()))
285 {
286 request.setAttribute(mapping.getAttribute(), form);
287 }
288 else
289 {
290 session.setAttribute(mapping.getAttribute(), form);
291 }
292 }
293
294 VoreinstellungenUntergruppierungsnameForm prvugnform = (VoreinstellungenUntergruppierungsnameForm) form;
295 prvugnform.setAction(action);
296
297 if (!action.equals("Create"))
298 {
299 if (log.isDebugEnabled())
300 {
301 log.debug(" Populating form from " + voreinstellungenUntergruppierungsname);
302 }
303
304 try
305 {
306 PropertyUtils.copyProperties(prvugnform, voreinstellungenUntergruppierungsname);
307 prvugnform.setUntergruppierungsnummer(untergruppierungsnummer);
308 prvugnform.setGruppierungsnummer(voreinstellungenUntergruppierungsname.getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer());
309 prvugnform.setProjektnummer(voreinstellungenUntergruppierungsname.getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer());
310 prvugnform.setAction(action);
311 }
312 catch (InvocationTargetException e)
313 {
314 Throwable t = e.getTargetException();
315 if (t == null)
316 t = e;
317 log.error("VoreinstellungenUntergruppierungsnameForm.populate", t);
318 throw new ServletException("VoreinstellungenUntergruppierungsnameForm.populate", t);
319 }
320 catch (Throwable t)
321 {
322 log.error("VoreinstellungenUntergruppierungsnameForm.populate", t);
323 throw new ServletException("VoreinstellungenUntergruppierungsnameForm.populate", t);
324 }
325 }
326
327
328 if (log.isDebugEnabled())
329 {
330 log.debug(" Forwarding to 'success' page");
331 }
332 return (mapping.findForward("success"));
333 }
334 }