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