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.save;
20
21 import java.lang.reflect.InvocationTargetException;
22 import java.util.Collection;
23 import java.util.Iterator;
24
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.servlet.http.HttpSession;
29
30 import org.apache.struts.action.Action;
31 import org.apache.struts.action.ActionForm;
32 import org.apache.struts.action.ActionForward;
33 import org.apache.struts.action.ActionMapping;
34
35 import org.apache.struts.util.MessageResources;
36
37 import org.apache.commons.beanutils.PropertyUtils;
38 import org.apache.commons.logging.Log;
39 import org.apache.commons.logging.LogFactory;
40
41 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
42 import org.fhw.cabaweb.data.DataInterfaceSprachen;
43 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen;
44 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsnamen;
45
46 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47 import org.fhw.cabaweb.ojb.dataobjects.Sprachen;
48 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsbeschreibungen;
49 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Untergruppierungsnamen;
50
51 import org.fhw.cabaweb.tools.StringUtilities;
52 import org.fhw.cabaweb.webfrontend.configs.Keys;
53 import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenUntergruppierungsbeschreibungForm;
54
55 /***
56 * <strong>Action</strong>-Klasse für die Save ErgebnissdatenUntergruppierungsbeschreibung Action .
57 * Die Controller Klasse der Struts Model View Controller Architektur.
58 *
59 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
60 * @version Version 1.0 20.07.2004
61 */
62 public final class SaveErgebnissdatenUntergruppierungsbeschreibungAction extends Action {
63
64 /***
65 * The <code>Log</code> instance for this application.
66 */
67 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.save");
68
69 /***
70 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
71 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
72 * erzeugt.
73 *
74 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
75 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
76 * wenn die Anfrage bereits bearbeitet wurde.
77 *
78 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
79 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
80 * @param request Die HTTP Anfrage die wir gerade bearbeiten
81 * @param response The HTTP Antwort die wir erzeugen
82 *
83 * @return Die Action zu der wir weiterleiten
84 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
85 * bzw. die Business Logik einen Fehler verursacht
86 */
87 public ActionForward execute(ActionMapping mapping,
88 ActionForm form,
89 HttpServletRequest request,
90 HttpServletResponse response)
91 throws Exception {
92 /*** Forwarding Action Variable mit null initialisieren */
93
94 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
95
96
97 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
98 DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen divugb = new DataInterfaceErgebnissdatenUntergruppierungsbeschreibungen();
99 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
100 DataInterfaceErgebnissdatenUntergruppierungsnamen divugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
101 /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
102 DataInterfaceGruppenmitglieder dig = new DataInterfaceGruppenmitglieder();
103 /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
104 DataInterfaceSprachen dis = new DataInterfaceSprachen();
105 /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
106 MessageResources messages = getResources(request);
107 /*** Die Session der aktuellen Anfrage */
108 HttpSession session = request.getSession();
109 /*** Das übergebene Formular */
110 ErgebnissdatenUntergruppierungsbeschreibungForm vugbform = (ErgebnissdatenUntergruppierungsbeschreibungForm) form;
111 /*** Die übergebene Action */
112 String action = vugbform.getAction();
113
114 /*** Zwischenspeichvaribale für den Rückgabewert */
115 boolean returnvalue = false;
116 /*** Zwischenspeichvaribale für das ErgebnissdatenUntergruppierungsbeschreibung */
117 Ergebnissdaten_Untergruppierungsbeschreibungen ergebnissdatenuntergruppierungsbeschreibung = null;
118
119 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
120 boolean isAdmin = request.isUserInRole("Administrator");
121 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
122 boolean isProjectleader = false;
123 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
124 boolean isUser = false;
125 /*** Zwischenspeichvaribale für den Namen des Benutzers */
126 String username = request.getRemoteUser();
127
128 if(!isAdmin)
129 {
130 isProjectleader = request.isUserInRole("Projektleiter");
131 }
132 if(!isAdmin && !isProjectleader)
133 {
134 isUser = request.isUserInRole("Benutzer");
135 }
136
137 if (action == null)
138 {
139 action = "?";
140 }
141
142 if (log.isDebugEnabled())
143 {
144 log.debug("SaveErgebnissdatenUntergruppierungsbeschreibungAction: Processing " + action + " action");
145 if(isAdmin)
146 {
147 log.debug(" User has Role: Administrator");
148 }
149 else if(isProjectleader)
150 {
151 log.debug(" User has Role: Projectleader");
152 }
153 else if(isUser)
154 {
155 log.debug(" User has Role: User");
156 }
157 }
158
159
160 if (isCancelled(request))
161 {
162 if (log.isDebugEnabled())
163 {
164 log.debug(" Transaction '" + action + "' was cancelled");
165 }
166
167 session.removeAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY);
168 return (mapping.findForward("success"));
169 }
170
171 ergebnissdatenuntergruppierungsbeschreibung = (Ergebnissdaten_Untergruppierungsbeschreibungen) session.getAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY);
172
173 if (ergebnissdatenuntergruppierungsbeschreibung == null)
174 {
175 if (log.isDebugEnabled())
176 {
177 log.debug(" In Session saved Sub-Groupdescription is NULL.");
178 }
179
180 ergebnissdatenuntergruppierungsbeschreibung = new Ergebnissdaten_Untergruppierungsbeschreibungen();
181 }
182
183
184 if (log.isDebugEnabled())
185 {
186 log.debug(" Populating database from form bean");
187 }
188
189 try
190 {
191 PropertyUtils.copyProperties(ergebnissdatenuntergruppierungsbeschreibung, vugbform);
192 ergebnissdatenuntergruppierungsbeschreibung.setErgebnissdaten_untergruppierungsnamen((Ergebnissdaten_Untergruppierungsnamen) divugn.sucheUntergruppierungsnummer(vugbform.getUntergruppierungsnummer()));
193 ergebnissdatenuntergruppierungsbeschreibung.setSprachen((Sprachen) dis.sucheSprachnummer(vugbform.getSprachnummer()));
194 }
195 catch (InvocationTargetException e)
196 {
197 Throwable t = e.getTargetException();
198 if (t == null)
199 t = e;
200 log.error("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
201 throw new ServletException("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
202 }
203 catch (Throwable t)
204 {
205 log.error("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
206 throw new ServletException("ErgebnissdatenUntergruppierungsbeschreibungForm.populate", t);
207 }
208
209 ergebnissdatenuntergruppierungsbeschreibung.setKurzbeschreibung(StringUtilities.convertUTF8String(ergebnissdatenuntergruppierungsbeschreibung.getKurzbeschreibung()));
210 ergebnissdatenuntergruppierungsbeschreibung.setBeschreibung(StringUtilities.convertUTF8String(ergebnissdatenuntergruppierungsbeschreibung.getBeschreibung()));
211
212 if ("Create".equals(action) && (isAdmin || isProjectleader))
213 {
214 if (log.isDebugEnabled())
215 {
216 log.debug("Creating a new Sub-Groupdescription: " + ergebnissdatenuntergruppierungsbeschreibung);
217 }
218
219 returnvalue = divugb.erzeugen(ergebnissdatenuntergruppierungsbeschreibung);
220 session.removeAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY);
221
222 if (!returnvalue)
223 {
224 if (log.isDebugEnabled())
225 {
226 log.debug(" Sub-Groupdescription creation failed");
227 }
228
229 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.ergebnissdatenuntergruppierungsbeschreibung.create"));
230 return (null);
231 }
232 }
233
234 if (action.equals("Delete") && isAdmin)
235 {
236 if (log.isDebugEnabled())
237 {
238 log.debug(" Deleting existing Sub-Groupdescription [ " + ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektname()
239 + ", " + ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsname()
240 + ", " + ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsname() + ", " + ergebnissdatenuntergruppierungsbeschreibung.getSprachen().getSprachname()
241 + " ] " + ergebnissdatenuntergruppierungsbeschreibung.getKurzbeschreibung() + ", " + ergebnissdatenuntergruppierungsbeschreibung.getBeschreibung());
242 }
243
244 returnvalue = divugb.loeschen(ergebnissdatenuntergruppierungsbeschreibung);
245 session.removeAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY);
246
247 if (!returnvalue)
248 {
249 if (log.isDebugEnabled())
250 {
251 log.debug(" Sub-Groupdescription deletion failed");
252 }
253
254 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.ergebnissdatenuntergruppierungsbeschreibung.delete"));
255 return (null);
256 }
257 }
258
259 if (action.equals("Edit") && (isAdmin || isProjectleader))
260 {
261 if (log.isDebugEnabled())
262 {
263 log.debug(" Editing existing Sub-Groupdescription [ " + ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektname()
264 + ", " + ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsname()
265 + ", " + ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsname() + ", " + ergebnissdatenuntergruppierungsbeschreibung.getSprachen().getSprachname()
266 + " ] " + ergebnissdatenuntergruppierungsbeschreibung.getKurzbeschreibung() + ", " + ergebnissdatenuntergruppierungsbeschreibung.getBeschreibung());
267 }
268
269 Collection usernames = dig.sucheLogInName(username);
270 Iterator iter = usernames.iterator();
271 Gruppenmitglieder user = null;
272
273 while (iter.hasNext())
274 {
275 user = (Gruppenmitglieder) iter.next();
276 }
277
278 if(isProjectleader && ergebnissdatenuntergruppierungsbeschreibung.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().equals(((user.getProjektgruppe()).getProjekte()).getProjektnummer()) || isAdmin)
279 {
280 if (log.isDebugEnabled())
281 {
282 log.debug(" Sub-Groupdescription editing is being processed");
283 }
284
285 returnvalue = divugb.editieren(ergebnissdatenuntergruppierungsbeschreibung);
286 }
287 else
288 {
289 if (log.isDebugEnabled())
290 {
291 log.debug(" User not authorized to edit Sub-Groupdescription");
292 }
293 }
294
295 session.removeAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY);
296
297 if (!returnvalue)
298 {
299 if (log.isDebugEnabled())
300 {
301 log.debug(" Sub-Groupdescription editing failed");
302 }
303
304 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.ergebnissdatenuntergruppierungsbeschreibung.edit"));
305 return (null);
306 }
307 }
308
309
310 if (mapping.getAttribute() != null)
311 {
312 if ("request".equals(mapping.getScope()))
313 request.removeAttribute(mapping.getAttribute());
314 else
315 session.removeAttribute(mapping.getAttribute());
316 }
317 session.removeAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSBESCHREIBUNG_KEY);
318
319
320 if (log.isDebugEnabled())
321 {
322 log.debug(" Forwarding to 'success' page");
323 }
324 return (mapping.findForward("success"));
325 }
326 }