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