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