View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   //CabaWeb
3   //Copyright (C) 2004  Thomas Vogt <Thomas.Vogt@TVC-Software.com>
4   //
5   //This library is free software; you can redistribute it and/or
6   //modify it under the terms of the GNU Lesser General Public
7   //License as published by the Free Software Foundation; either
8   //version 2.1 of the License, or (at your option) any later version.
9   //
10  //This library is distributed in the hope that it will be useful,
11  //but WITHOUT ANY WARRANTY; without even the implied warranty of
12  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  //Lesser General Public License for more details.
14  //
15  //You should have received a copy of the GNU Lesser General Public
16  //License along with this library; if not, write to the Free Software
17  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  package org.fhw.cabaweb.webfrontend.actions.list;
20  
21  import java.util.Collection;
22  import java.util.Iterator;
23  
24  import javax.servlet.ServletException;
25  import javax.servlet.http.HttpServletRequest;
26  import javax.servlet.http.HttpServletResponse;
27  import javax.servlet.http.HttpSession;
28  
29  import org.apache.struts.action.Action;
30  import org.apache.struts.action.ActionForm;
31  import org.apache.struts.action.ActionForward;
32  import org.apache.struts.action.ActionMapping;
33  
34  import org.apache.commons.logging.Log;
35  import org.apache.commons.logging.LogFactory;
36  
37  import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
38  
39  import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
40  import org.fhw.cabaweb.webfrontend.configs.Keys;
41  import org.fhw.cabaweb.webfrontend.forms.multiple.GruppenmitgliederForm;
42  import org.fhw.cabaweb.webfrontend.tools.Common;
43  
44  /***
45   * <strong>Action</strong>-Klasse f&uuml;r die List Gruppenmitglieder Action .
46   * Die Controller Klasse der Struts Model View Controller Architektur.
47   *
48   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
49   * @version Version 1.0 06.07.2004
50   */
51  public final class ListGruppenmitgliederAction extends Action {
52  
53      /***
54       * The <code>Log</code> instance for this application.
55       */
56  
57      private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.list");
58  //    private static Log log = LogFactory.getLog(this.class);
59  
60      /***
61       * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
62       * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort 
63       * erzeugt.  
64       * 
65       * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
66       * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein, 
67       * wenn die Anfrage bereits bearbeitet wurde.
68       * 
69       * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
70       * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
71       * @param request Die HTTP Anfrage die wir gerade bearbeiten
72       * @param response The HTTP Antwort die wir erzeugen
73       *
74       * @return Die Action zu der wir weiterleiten
75       * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
76       *            bzw. die Business Logik einen Fehler verursacht 
77       */
78      public ActionForward execute(ActionMapping mapping,
79  				                 ActionForm form,
80                                   HttpServletRequest request,
81                                   HttpServletResponse response)
82      throws Exception {
83          /*** Forwarding Action Variable mit null initialisieren */
84  //        ActionForward forward = null;
85          /*** Die Locale Variable (Sprache, Formatierung, etc.) */
86  //        Locale locale = getLocale(request);
87          /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
88  //        MessageResources messages = getResources(request);
89          /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
90           *  <code>ActionErrors</code> Objekt hinzugefügt. 
91           */ 
92  //        ActionErrors errors = new ActionErrors();
93  
94          /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
95          DataInterfaceGruppenmitglieder dig = new DataInterfaceGruppenmitglieder();
96          dig.clearCache();
97          /*** Die Session der aktuellen Anfrage */
98          HttpSession session = request.getSession();
99          /*** Die übergebene Action */
100         String action = request.getParameter("action");
101 
102         /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
103         boolean isAdmin = request.isUserInRole("Administrator");
104         /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
105         boolean isProjectleader = false;
106         /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
107         boolean isUser = false;
108         /*** Zwischenspeichvaribale für den Namen des Benutzers */
109         String username = request.getRemoteUser();
110 
111         if(!isAdmin)
112         {
113             isProjectleader = request.isUserInRole("Projektleiter");
114         }
115         if(!isAdmin && !isProjectleader)
116         {
117             isUser = request.isUserInRole("Benutzer");
118         }
119         
120     	if (action == null) 
121     	{
122     	    action = "List";
123         }
124 
125         if (log.isDebugEnabled()) 
126         {
127             log.debug("ListGruppenmitgliederAction: Processing " + action + " action");
128         }
129 
130         /*** Dieser Collection werden alle gefundenen Gruppenmitglieder zugewiesen. */ 
131         Collection gruppenmitglieder = null;
132         if(isAdmin)
133         {
134             if (log.isDebugEnabled()) 
135             {
136                 log.debug(" User has Role: Administrator");
137                 log.debug(" Searching all Group Members");
138             }
139 
140             gruppenmitglieder = dig.sucheAlle();
141 
142             if (log.isDebugEnabled()) 
143             {
144                 log.debug(" Found " + gruppenmitglieder.size() + " Group Members");
145             }
146         }
147         else if(isProjectleader)
148         {
149             if (log.isDebugEnabled()) 
150             {
151                 log.debug(" User has Role: Projectleader");
152                 log.debug(" Searching Group Members for Projectleader");
153             }
154             
155             Collection usernames = dig.sucheLogInName(username);
156             Iterator iter = usernames.iterator();
157             Gruppenmitglieder user = null;
158             
159             while (iter.hasNext())
160             {
161                 user = (Gruppenmitglieder) iter.next();
162             }         
163 
164             if (log.isDebugEnabled()) 
165             {
166                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
167             }
168 
169             gruppenmitglieder = dig.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
170             
171             if (log.isDebugEnabled()) 
172             {
173                 log.debug(" Found " + gruppenmitglieder.size() + " Group Members");
174             }
175         }
176         else if(isUser)
177         {
178             if (log.isDebugEnabled()) 
179             {
180                 log.debug(" User has Role: User");
181                 log.debug(" Searching Group Members for User");
182             }
183 
184             Collection usernames = dig.sucheLogInName(username);
185             Iterator iter = usernames.iterator();
186             Gruppenmitglieder user = null;
187             
188             while (iter.hasNext())
189             {
190                 user = (Gruppenmitglieder) iter.next();
191             }         
192 
193             if (log.isDebugEnabled()) 
194             {
195                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
196             }
197 
198             gruppenmitglieder = dig.sucheGruppennummer((user.getProjektgruppe()).getGruppennummer());
199             
200             if (log.isDebugEnabled()) 
201             {
202                 log.debug(" Found " + gruppenmitglieder.size() + " Group Members");
203             }
204         }
205 
206     	if (gruppenmitglieder == null) 
207     	{
208             if (log.isDebugEnabled()) 
209             {
210                 log.debug(" No Group Members registered");
211             }
212             
213     	    return (mapping.findForward("success"));
214     	}
215     	
216         if (gruppenmitglieder != null) 
217         {
218             session.setAttribute(Keys.GRUPPENMITGLIEDER_KEY, gruppenmitglieder);
219         }
220     
221     	// Populate the Gruppenmitglieder Form
222     	if (form == null) 
223     	{
224             if (log.isDebugEnabled()) 
225             {
226                 log.debug(" Creating new GruppenmitgliederForm bean under key " + mapping.getAttribute());
227             }
228             
229 	        form = new GruppenmitgliederForm();
230 	        
231             if ("request".equals(mapping.getScope())) 
232             {
233                 request.setAttribute(mapping.getAttribute(), form);
234             } 
235             else 
236             {
237                 session.setAttribute(mapping.getAttribute(), form);
238             }
239     	}
240 
241         GruppenmitgliederForm gmform = (GruppenmitgliederForm) form;
242 	    
243         if (action.equals("List")) 
244         {
245             if (log.isDebugEnabled()) 
246             {
247                 log.debug(" Populating form from " + gruppenmitglieder);
248             }
249             
250             try 
251             {
252                 gmform.setGruppenmitglieder(gruppenmitglieder);
253             } 
254             catch (Throwable t) 
255             {
256                 log.error("GruppenmitgliederForm.populate", t);
257                 throw new ServletException("GruppenmitgliederForm.populate", t);
258             }
259         }
260 
261         Common.Pager(request, gruppenmitglieder.size());
262 
263 	    // Forward control to the list Projekt page
264         if (log.isDebugEnabled()) 
265         {
266             log.debug(" Forwarding to 'success' page");
267         }
268     	return (mapping.findForward("success"));
269     }
270 }