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