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.DataInterfaceErgebnissdatenUntergruppierungsnamen;
42 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
43 import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenFeldnamen;
44
45 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
46 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldnamen;
47 import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_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.ErgebnissdatenFeldnameForm;
52
53 /***
54 * <strong>Action</strong>-Klasse für die Save ErgebnissdatenFeldname 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 SaveErgebnissdatenFeldnameAction 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 DataInterfaceErgebnissdatenUntergruppierungsnamen dieugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
97 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
98 DataInterfaceErgebnissdatenFeldnamen diefn = new DataInterfaceErgebnissdatenFeldnamen();
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 ErgebnissdatenFeldnameForm efnform = (ErgebnissdatenFeldnameForm) form;
107 /*** Die übergebene Action */
108 String action = efnform.getAction();
109
110 /*** Zwischenspeichvaribale für den Rückgabewert */
111 boolean returnvalue = false;
112 /*** Zwischenspeichvaribale für das ErgebnissdatenFeldname */
113 Ergebnissdaten_Feldnamen ergebnissdatenfeldname = 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("SaveErgebnissdatenFeldnameAction: 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.ERGEBNISSDATENFELDNAME_KEY);
164 return (mapping.findForward("success"));
165 }
166
167 ergebnissdatenfeldname = (Ergebnissdaten_Feldnamen) session.getAttribute(Keys.ERGEBNISSDATENFELDNAME_KEY);
168
169 if (ergebnissdatenfeldname == null)
170 {
171 if (log.isDebugEnabled())
172 {
173 log.debug(" In Session saved Fieldname is NULL.");
174 }
175
176 ergebnissdatenfeldname = new Ergebnissdaten_Feldnamen();
177 }
178
179
180 if (log.isDebugEnabled())
181 {
182 log.debug(" Populating database from form bean");
183 }
184
185 try
186 {
187 log.debug(efnform.getFeldnamebenutzer());
188 log.debug(efnform.getGruppierungsnummer());
189 log.debug(efnform.getUntergruppierungsnummer());
190 PropertyUtils.copyProperties(ergebnissdatenfeldname, efnform);
191 ergebnissdatenfeldname.setFeldname_benutzer(efnform.getFeldnamebenutzer());
192 ergebnissdatenfeldname.setErgebnissdaten_untergruppierungsnamen((Ergebnissdaten_Untergruppierungsnamen) dieugn.sucheUntergruppierungsnummer(efnform.getUntergruppierungsnummer()));
193 }
194 catch (InvocationTargetException e)
195 {
196 Throwable t = e.getTargetException();
197 if (t == null)
198 t = e;
199 log.error("ErgebnissdatenFeldnameForm.populate", t);
200 throw new ServletException("ErgebnissdatenFeldnameForm.populate", t);
201 }
202 catch (Throwable t)
203 {
204 log.error("ErgebnissdatenFeldnameForm.populate", t);
205 throw new ServletException("ErgebnissdatenFeldnameForm.populate", t);
206 }
207
208 ergebnissdatenfeldname.setFeldname(StringUtilities.convertUTF8String(ergebnissdatenfeldname.getFeldname()));
209 ergebnissdatenfeldname.setFeldname_benutzer(StringUtilities.convertUTF8String(ergebnissdatenfeldname.getFeldname_benutzer()));
210 ergebnissdatenfeldname.setTabellenname(StringUtilities.convertUTF8String(ergebnissdatenfeldname.getTabellenname()));
211
212 if ("Create".equals(action) && (isAdmin || isProjectleader))
213 {
214 if (log.isDebugEnabled())
215 {
216 log.debug("Creating a new Fieldname: " + ergebnissdatenfeldname);
217 }
218
219 returnvalue = diefn.erzeugen(ergebnissdatenfeldname);
220 session.removeAttribute(Keys.ERGEBNISSDATENFELDNAME_KEY);
221
222 if (!returnvalue)
223 {
224 if (log.isDebugEnabled())
225 {
226 log.debug(" Fieldname creation failed");
227 }
228
229 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.ergebnissdatenfeldname.create"));
230 return (null);
231 }
232 }
233
234 if (action.equals("Delete") && isAdmin)
235 {
236 if (log.isDebugEnabled())
237 {
238 log.debug(" Deleting existing Fieldname [ " + ergebnissdatenfeldname.getFeldnummer() + ", " + ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektname()
239 + ", " + ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsname()
240 + ", " + ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsname()
241 + " ] " + ergebnissdatenfeldname.getReihenfolge() + ", " + ergebnissdatenfeldname.getFeldname() + " -> " + ergebnissdatenfeldname.getFeldname_benutzer());
242 }
243
244 returnvalue = diefn.loeschen(ergebnissdatenfeldname);
245 session.removeAttribute(Keys.ERGEBNISSDATENFELDNAME_KEY);
246
247 if (!returnvalue)
248 {
249 if (log.isDebugEnabled())
250 {
251 log.debug(" Fieldname deletion failed");
252 }
253
254 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.ergebnissdatenfeldname.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 Fieldname [ " + ergebnissdatenfeldname.getFeldnummer() + ", " + ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektname()
264 + ", " + ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsname()
265 + ", " + ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsname()
266 + " ] " + ergebnissdatenfeldname.getReihenfolge() + ", " + ergebnissdatenfeldname.getFeldname() + " -> " + ergebnissdatenfeldname.getFeldname_benutzer());
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 && ergebnissdatenfeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer().equals(((user.getProjektgruppe()).getProjekte()).getProjektnummer()) || isAdmin)
279 {
280 if (log.isDebugEnabled())
281 {
282 log.debug(" Fieldname editing is being processed");
283 }
284
285 returnvalue = diefn.editieren(ergebnissdatenfeldname);
286 }
287 else
288 {
289 if (log.isDebugEnabled())
290 {
291 log.debug(" User not authorized to edit Fieldname");
292 }
293 }
294
295 session.removeAttribute(Keys.ERGEBNISSDATENFELDNAME_KEY);
296
297 if (!returnvalue)
298 {
299 if (log.isDebugEnabled())
300 {
301 log.debug(" Fieldname editing failed");
302 }
303
304 response.sendError(HttpServletResponse.SC_BAD_REQUEST, messages.getMessage("error.ergebnissdatenfeldname.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.ERGEBNISSDATENFELDNAME_KEY);
318
319
320 if (log.isDebugEnabled())
321 {
322 log.debug(" Forwarding to 'success' page");
323 }
324 return (mapping.findForward("success"));
325 }
326 }