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