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