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