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