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