1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.fhw.cabaweb.webfrontend.actions;
21
22 import java.io.ByteArrayOutputStream;
23 import java.util.Collection;
24 import java.util.Iterator;
25
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31 import org.apache.struts.action.Action;
32 import org.apache.struts.action.ActionForm;
33 import org.apache.struts.action.ActionForward;
34 import org.apache.struts.action.ActionMapping;
35 import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
36 import org.fhw.cabaweb.data.DataInterfaceProjekte;
37 import org.fhw.cabaweb.data.DataInterfaceProjektgruppen;
38 import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
39 import org.fhw.cabaweb.ojb.dataobjects.Projekte;
40 import org.fhw.cabaweb.ojb.dataobjects.Projektgruppen;
41
42 /***
43 * Diese Action Klasse ist für den Download der Mitglieds- und Gruppendaten
44 *
45 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
46 * @version Version 1.0 19.09.2004
47 */
48 public final class MitgliedslisteAction extends Action
49 {
50
51 /*** Commons Logging Instanz */
52 private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.MitgliedslisteAction");
53
54 /***
55 * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
56 * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort
57 * erzeugt.
58 *
59 * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
60 * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein,
61 * wenn die Anfrage bereits bearbeitet wurde.
62 *
63 * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
64 * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
65 * @param request Die HTTP Anfrage die wir gerade bearbeiten
66 * @param response The HTTP Antwort die wir erzeugen
67 *
68 * @return Die Action zu der wir weiterleiten
69 * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
70 * bzw. die Business Logik einen Fehler verursacht
71 */
72 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
73 {
74 /*** Forwarding Action Variable mit null initialisieren */
75 ActionForward forward = null;
76 /*** Die Locale Variable (Sprache, Formatierung, etc.) */
77
78
79 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
80 DataInterfaceProjekte dip = new DataInterfaceProjekte();
81 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
82 DataInterfaceProjektgruppen dipg = new DataInterfaceProjektgruppen();
83 /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
84 DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
85 /*** Die Session der aktuellen Anfrage */
86
87 /*** Die übergebene Action */
88 String action = request.getParameter("action");
89
90 /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
91 boolean isAdmin = request.isUserInRole("Administrator");
92 /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
93 boolean isProjectleader = false;
94 /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
95 boolean isUser = false;
96 /*** Zwischenspeichvaribale für den Namen des Benutzers */
97 String username = request.getRemoteUser();
98
99 if (!isAdmin)
100 {
101 isProjectleader = request.isUserInRole("Projektleiter");
102 }
103 if (!isAdmin && !isProjectleader)
104 {
105 isUser = request.isUserInRole("Benutzer");
106 }
107
108 Collection usernames = digm.sucheLogInName(username);
109 Iterator iter = usernames.iterator();
110 Gruppenmitglieder user = null;
111
112 if (iter.hasNext())
113 {
114 user = (Gruppenmitglieder) iter.next();
115 }
116
117 if (action == null)
118 {
119 action = "Liste";
120 }
121
122 /*** Zwischenspeichvaribale für die Projektnummer (Integer) */
123 Integer projektnummer = null;
124 /*** Zwischenspeichvaribale für die Projektnummer (Request String) */
125 String prjnummer = request.getParameter("projektnummer");
126
127 if (prjnummer != null)
128 {
129 projektnummer = new Integer(prjnummer);
130 }
131
132 if (isAdmin)
133 {
134 if (log.isDebugEnabled())
135 {
136 log.debug(" User has Role: Administrator");
137 log.debug(" Erzeuge Ausgabe fuer " + projektnummer);
138 }
139
140 Projekte projekt = (Projekte) dip.sucheProjektnummer(projektnummer);
141
142 if (projekt == null)
143 {
144 if (log.isDebugEnabled())
145 {
146 log.debug(" No Project for projektnummer " + projektnummer);
147 }
148
149 return (mapping.findForward("failure"));
150 }
151
152 if (log.isDebugEnabled())
153 {
154 log.debug(" Formatiere TEXT Ausgabe");
155 }
156
157 ByteArrayOutputStream baos = new ByteArrayOutputStream();
158
159 String projektdaten = "Projekt: " + projekt.getProjektname();
160
161 baos.write(projektdaten.getBytes());
162 baos.write('\n');
163
164 Collection projektgruppen = dipg.sucheProjektnummer(projektnummer);
165 iter = projektgruppen.iterator();
166 Projektgruppen projektgruppe = null;
167
168 while (iter.hasNext())
169 {
170 projektgruppe = (Projektgruppen) iter.next();
171
172 String projektgruppendaten = "Projektgruppe: " + projektgruppe.getGruppenname() + "\nPasswort: " + projektgruppe.getPasswort();
173
174 baos.write("--------------------------------------------".getBytes());
175 baos.write('\n');
176 baos.write(projektgruppendaten.getBytes());
177 baos.write("\n----------\n".getBytes());
178
179 Collection gruppenmitglieder = digm.sucheGruppennummer(projektgruppe.getGruppennummer());
180 Iterator iter2 = gruppenmitglieder.iterator();
181 Gruppenmitglieder gruppenmitglied = null;
182
183 while (iter2.hasNext())
184 {
185 gruppenmitglied = (Gruppenmitglieder) iter2.next();
186
187 String benutzer = gruppenmitglied.getMitgliedsname() + ", " + gruppenmitglied.getMitgliedsvorname();
188 String adresse = gruppenmitglied.getMitgliedsadresse1() + "\n" + gruppenmitglied.getMitgliedsadresse2() + "\n" + gruppenmitglied.getMitgliedsplz() + " " + gruppenmitglied.getMitgliedsort();
189 String daten = "Matrikelnummer: " + gruppenmitglied.getMitgliedskennzeichen() + "\n" + gruppenmitglied.getMitgliedsemailadresse();
190
191 baos.write(benutzer.getBytes());
192 baos.write('\n');
193 baos.write(adresse.getBytes());
194 baos.write('\n');
195 baos.write(daten.getBytes());
196 baos.write("\n----------\n".getBytes());
197 }
198 }
199
200
201 response.setContentType("text");
202
203 if (log.isDebugEnabled())
204 {
205 log.debug(" Gebe TEXT zurueck");
206 }
207
208
209 response.setContentLength(baos.size());
210 response.getOutputStream().write(baos.toByteArray());
211 response.getOutputStream().flush();
212 }
213 else if (isProjectleader)
214 {
215 if (log.isDebugEnabled())
216 {
217 log.debug(" User has Role: Projectleader");
218 log.debug(" Erzeuge Ausgabe fuer " + user.getProjektgruppe().getProjekte().getProjektnummer());
219 }
220
221 Projekte projekt = user.getProjektgruppe().getProjekte();
222
223 if (projekt == null)
224 {
225 if (log.isDebugEnabled())
226 {
227 log.debug(" No Project for Projectleader");
228 }
229
230 return (mapping.findForward("failure"));
231 }
232
233 if (log.isDebugEnabled())
234 {
235 log.debug(" Formatiere TEXT Ausgabe");
236 }
237
238 ByteArrayOutputStream baos = new ByteArrayOutputStream();
239
240 String projektdaten = "Projekt: " + projekt.getProjektname();
241
242 baos.write(projektdaten.getBytes());
243 baos.write('\n');
244
245 Collection projektgruppen = dipg.sucheProjektnummer(projekt.getProjektnummer());
246 iter = projektgruppen.iterator();
247 Projektgruppen projektgruppe = null;
248
249 while (iter.hasNext())
250 {
251 projektgruppe = (Projektgruppen) iter.next();
252
253 String projektgruppendaten = "Projektgruppe: " + projektgruppe.getGruppenname() + "\nPasswort: " + projektgruppe.getPasswort();
254
255 baos.write("--------------------------------------------".getBytes());
256 baos.write('\n');
257 baos.write(projektgruppendaten.getBytes());
258 baos.write("\n----------\n".getBytes());
259
260 Collection gruppenmitglieder = digm.sucheGruppennummer(projektgruppe.getGruppennummer());
261 Iterator iter2 = gruppenmitglieder.iterator();
262 Gruppenmitglieder gruppenmitglied = null;
263
264 while (iter2.hasNext())
265 {
266 gruppenmitglied = (Gruppenmitglieder) iter2.next();
267
268 String benutzer = gruppenmitglied.getMitgliedsname() + ", " + gruppenmitglied.getMitgliedsvorname();
269 String adresse = gruppenmitglied.getMitgliedsadresse1() + "\n" + gruppenmitglied.getMitgliedsadresse2() + "\n" + gruppenmitglied.getMitgliedsplz() + " " + gruppenmitglied.getMitgliedsort();
270 String daten = "Matrikelnummer: " + gruppenmitglied.getMitgliedskennzeichen() + "\n" + gruppenmitglied.getMitgliedsemailadresse();
271
272 baos.write(benutzer.getBytes());
273 baos.write('\n');
274 baos.write(adresse.getBytes());
275 baos.write('\n');
276 baos.write(daten.getBytes());
277 baos.write("\n----------\n".getBytes());
278 }
279 }
280
281
282 response.setContentType("text");
283
284 if (log.isDebugEnabled())
285 {
286 log.debug(" Gebe TEXT zurueck");
287 }
288
289
290 response.setContentLength(baos.size());
291 response.getOutputStream().write(baos.toByteArray());
292 response.getOutputStream().flush();
293 }
294
295 if (log.isDebugEnabled())
296 {
297 log.debug(" Verarbeitung abgeschlossen");
298 }
299
300 return forward;
301 }
302 }