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 import java.util.LinkedList;
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.DataInterfaceProjekte;
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.ProjekteForm;
44 import org.fhw.cabaweb.webfrontend.tools.Common;
45
46 /***
47 * <strong>Action</strong>-Klasse für die List Projekte 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 03.06.2004
52 */
53 public final class ListProjekteAction 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 DataInterfaceProjekte dip = new DataInterfaceProjekte();
98 dip.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 if(!isAdmin && !isProjectleader)
121 {
122 isUser = request.isUserInRole("Benutzer");
123 }
124
125 if (action == null)
126 {
127 action = "List";
128 }
129
130 if (log.isDebugEnabled())
131 {
132 log.debug("ListProjekteAction: Processing " + action + " action");
133 }
134
135 /*** Dieser Collection werden alle gefundenen Projekte zugewiesen. */
136 Collection projekte = null;
137 if(isAdmin)
138 {
139 if (log.isDebugEnabled())
140 {
141 log.debug(" User has Role: Administrator");
142 log.debug(" Searching all Projects");
143 }
144
145 projekte = dip.sucheAlle();
146
147 if (log.isDebugEnabled())
148 {
149 log.debug(" Found " + projekte.size() + " Projects");
150 }
151 }
152 else if(isProjectleader)
153 {
154 if (log.isDebugEnabled())
155 {
156 log.debug(" User has Role: Projectleader");
157 log.debug(" Searching Project of Projectleader");
158 }
159
160 Collection usernames = dig.sucheLogInName(username);
161 Iterator iter = usernames.iterator();
162 Gruppenmitglieder user = null;
163
164 while (iter.hasNext())
165 {
166 user = (Gruppenmitglieder) iter.next();
167 }
168
169 if (log.isDebugEnabled())
170 {
171 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
172 }
173
174 projekte = new LinkedList();
175 projekte.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
176
177 if (log.isDebugEnabled())
178 {
179 log.debug(" Found " + projekte.size() + " Projects");
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
191 if (projekte == null)
192 {
193 if (log.isDebugEnabled())
194 {
195 log.debug(" No Projects registered");
196 }
197
198 return (mapping.findForward("success"));
199 }
200
201 if (projekte != null)
202 {
203 session.setAttribute(Keys.PROJEKTE_KEY, projekte);
204 }
205
206
207 if (form == null)
208 {
209 if (log.isDebugEnabled())
210 {
211 log.debug(" Creating new ProjekteForm bean under key " + mapping.getAttribute());
212 }
213
214 form = new ProjekteForm();
215
216 if ("request".equals(mapping.getScope()))
217 {
218 request.setAttribute(mapping.getAttribute(), form);
219 }
220 else
221 {
222 session.setAttribute(mapping.getAttribute(), form);
223 }
224 }
225
226 ProjekteForm prjeform = (ProjekteForm) form;
227
228 if (action.equals("List"))
229 {
230 if (log.isDebugEnabled())
231 {
232 log.debug(" Populating form from " + projekte);
233 }
234
235 try
236 {
237 prjeform.setProjekte(projekte);
238 }
239 catch (Throwable t)
240 {
241 log.error("ProjekteForm.populate", t);
242 throw new ServletException("ProjekteForm.populate", t);
243 }
244 }
245
246 Common.Pager(request, projekte.size());
247
248
249 if (log.isDebugEnabled())
250 {
251 log.debug(" Forwarding to 'success' page");
252 }
253 return (mapping.findForward("success"));
254 }
255 }