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  
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&uuml;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  //    private static Log log = LogFactory.getLog(this.class);
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  //        ActionForward forward = null;
84          /*** Die Locale Variable (Sprache, Formatierung, etc.) */
85  //        Locale locale = getLocale(request);
86          /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
87  //        MessageResources messages = getResources(request);
88          /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
89           *  <code>ActionErrors</code> Objekt hinzugefügt. 
90           */ 
91  //        ActionErrors errors = new ActionErrors();
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     	// Populate the Project Form
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 	    // Forward control to the list Projekt page
228         if (log.isDebugEnabled()) 
229         {
230             log.debug(" Forwarding to 'success' page");
231         }
232     	return (mapping.findForward("success"));
233     }
234 }