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.DataInterfaceVoreinstellungenGruppierungsbeschreibungen;
44 import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenGruppierungsnamen;
45
46 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47 import org.fhw.cabaweb.ojb.dataobjects.Sprachen;
48 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Gruppierungsbeschreibungen;
49 import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Gruppierungsnamen;
50
51 import org.fhw.cabaweb.tools.StringUtilities;
52 import org.fhw.cabaweb.webfrontend.configs.Keys;
53 import org.fhw.cabaweb.webfrontend.forms.simple.VoreinstellungenGruppierungsbeschreibungForm;
54
55 /***
56 * <strong>Action</strong>-Klasse für die Save VoreinstellungenGruppierungsbeschreibung 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 19.07.2004
61 */
62 public final class SaveVoreinstellungenGruppierungsbeschreibungAction 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 DataInterfaceVoreinstellungenGruppierungsbeschreibungen divgb = new DataInterfaceVoreinstellungenGruppierungsbeschreibungen();
99 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
100 DataInterfaceVoreinstellungenGruppierungsnamen divgn = new DataInterfaceVoreinstellungenGruppierungsnamen();
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 VoreinstellungenGruppierungsbeschreibungForm vgbform = (VoreinstellungenGruppierungsbeschreibungForm) form;
111 /*** Die übergebene Action */
112 String action = vgbform.getAction();
113
114 /*** Zwischenspeichvaribale für den Rückgabewert */
115 boolean returnvalue = false;
116 /*** Zwischenspeichvaribale für das VoreinstellungenGruppierungsbeschreibung */
117 Voreinstellungen_Gruppierungsbeschreibungen voreinstellungengruppierungsbeschreibung = 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("SaveVoreinstellungenGruppierungsbeschreibungAction: 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.VOREINSTELLUNGENGRUPPIERUNGSBESCHREIBUNG_KEY);
168 return (mapping.findForward("success"));
169 }
170
171 voreinstellungengruppierungsbeschreibung = (Voreinstellungen_Gruppierungsbeschreibungen) session.getAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSBESCHREIBUNG_KEY);
172
173 if (voreinstellungengruppierungsbeschreibung == null)
174 {
175 if (log.isDebugEnabled())
176 {
177 log.debug(" In Session saved Groupdescription is NULL.");
178 }
179
180 voreinstellungengruppierungsbeschreibung = new Voreinstellungen_Gruppierungsbeschreibungen();
181 }
182
183
184 if (log.isDebugEnabled())
185 {
186 log.debug(" Populating database from form bean");
187 }
188
189 try
190 {
191 PropertyUtils.copyProperties(voreinstellungengruppierungsbeschreibung, vgbform);
192 voreinstellungengruppierungsbeschreibung.setVoreinstellungen_gruppierungsnamen((Voreinstellungen_Gruppierungsnamen) divgn.sucheGruppierungsnummer(vgbform.getGruppierungsnummer()));
193 voreinstellungengruppierungsbeschreibung.setSprachen((Sprachen) dis.sucheSprachnummer(vgbform.getSprachnummer()));
194 }
195 catch (InvocationTargetException e)
196 {
197 Throwable t = e.getTargetException();
198 if (t == null)
199 t = e;
200 log.error("VoreinstellungenGruppierungsbeschreibungForm.populate", t);
201 throw new ServletException("VoreinstellungenGruppierungsbeschreibungForm.populate", t);
202 }
203 catch (Throwable t)
204 {
205 log.error("VoreinstellungenGruppierungsbeschreibungForm.populate", t);
206 throw new ServletException("VoreinstellungenGruppierungsbeschreibungForm.populate", t);
207 }
208
209 voreinstellungengruppierungsbeschreibung.setKurzbeschreibung(StringUtilities.convertUTF8String(voreinstellungengruppierungsbeschreibung.getKurzbeschreibung()));
210 voreinstellungengruppierungsbeschreibung.setBeschreibung(StringUtilities.convertUTF8String(voreinstellungengruppierungsbeschreibung.getBeschreibung()));
211
212 if ("Create".equals(action) && (isAdmin || isProjectleader))
213 {
214 if (log.isDebugEnabled())
215 {
216 log.debug("Creating a new Groupdescription: " + voreinstellungengruppierungsbeschreibung);
217 }
218
219 returnvalue = divgb.erzeugen(voreinstellungengruppierungsbeschreibung);
220 session.removeAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSBESCHREIBUNG_KEY);
221
222 if (!returnvalue)
223 {
224 if (log.isDebugEnabled())
225 {
226 log.debug(" Groupdescription creation failed");
227 }
228
229 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.voreinstellungengruppierungsbeschreibung.create"));
230 return (null);
231 }
232 }
233
234 if (action.equals("Delete") && isAdmin)
235 {
236 if (log.isDebugEnabled())
237 {
238 log.debug(" Deleting existing Groupdescription [ " + voreinstellungengruppierungsbeschreibung.getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektname() + ", "
239 + voreinstellungengruppierungsbeschreibung.getVoreinstellungen_gruppierungsnamen().getGruppierungsname() + ", " + voreinstellungengruppierungsbeschreibung.getSprachen().getSprachname()
240 + " ] " + voreinstellungengruppierungsbeschreibung.getKurzbeschreibung() + ", " + voreinstellungengruppierungsbeschreibung.getBeschreibung());
241 }
242
243 returnvalue = divgb.loeschen(voreinstellungengruppierungsbeschreibung);
244 session.removeAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSBESCHREIBUNG_KEY);
245
246 if (!returnvalue)
247 {
248 if (log.isDebugEnabled())
249 {
250 log.debug(" Groupdescription deletion failed");
251 }
252
253 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.voreinstellungengruppierungsbeschreibung.delete"));
254 return (null);
255 }
256 }
257
258 if (action.equals("Edit") && (isAdmin || isProjectleader))
259 {
260 if (log.isDebugEnabled())
261 {
262 log.debug(" Editing existing Groupdescription [ " + voreinstellungengruppierungsbeschreibung.getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektname() + ", "
263 + voreinstellungengruppierungsbeschreibung.getVoreinstellungen_gruppierungsnamen().getGruppierungsname() + ", " + voreinstellungengruppierungsbeschreibung.getSprachen().getSprachname()
264 + " ] " + voreinstellungengruppierungsbeschreibung.getKurzbeschreibung() + ", " + voreinstellungengruppierungsbeschreibung.getBeschreibung());
265 }
266
267 Collection usernames = dig.sucheLogInName(username);
268 Iterator iter = usernames.iterator();
269 Gruppenmitglieder user = null;
270
271 while (iter.hasNext())
272 {
273 user = (Gruppenmitglieder) iter.next();
274 }
275
276 if(isProjectleader && voreinstellungengruppierungsbeschreibung.getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer().equals(((user.getProjektgruppe()).getProjekte()).getProjektnummer()) || isAdmin)
277 {
278 if (log.isDebugEnabled())
279 {
280 log.debug(" Groupdescription editing is being processed");
281 }
282
283 returnvalue = divgb.editieren(voreinstellungengruppierungsbeschreibung);
284 }
285 else
286 {
287 if (log.isDebugEnabled())
288 {
289 log.debug(" User not authorized to edit Groupdescription");
290 }
291 }
292
293 session.removeAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSBESCHREIBUNG_KEY);
294
295 if (!returnvalue)
296 {
297 if (log.isDebugEnabled())
298 {
299 log.debug(" Groupdescription editing failed");
300 }
301
302 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.voreinstellungengruppierungsbeschreibung.edit"));
303 return (null);
304 }
305 }
306
307
308 if (mapping.getAttribute() != null)
309 {
310 if ("request".equals(mapping.getScope()))
311 request.removeAttribute(mapping.getAttribute());
312 else
313 session.removeAttribute(mapping.getAttribute());
314 }
315 session.removeAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSBESCHREIBUNG_KEY);
316
317
318 if (log.isDebugEnabled())
319 {
320 log.debug(" Forwarding to 'success' page");
321 }
322 return (mapping.findForward("success"));
323 }
324 }