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