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