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.DataInterfaceProjektbeschreibungen;
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.ProjektbeschreibungenForm;
43  import org.fhw.cabaweb.webfrontend.tools.Common;
44  
45  /***
46   * <strong>Action</strong>-Klasse f&uuml;r die List Projektbeschreibungen 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 03.07.2004
51   */
52  public final class ListProjektbeschreibungenAction 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          DataInterfaceProjektbeschreibungen dip = (DataInterfaceProjektbeschreibungen) new DataInterfaceProjektbeschreibungen();
97          dip.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("ListProjektbeschreibungenAction: Processing " + action + " action");
132         }
133 
134         /*** Dieser Collection werden alle gefundenen Projektbeschreibungen zugewiesen. */ 
135         Collection projektbeschreibungen = null;
136         if(isAdmin)
137         {
138             if (log.isDebugEnabled()) 
139             {
140                 log.debug(" User has Role: Administrator");
141                 log.debug(" Searching all Project Desciptions");
142             }
143 
144             projektbeschreibungen = dip.sucheAlle();
145 
146             if (log.isDebugEnabled()) 
147             {
148                 log.debug(" Found " + projektbeschreibungen.size() + " Project Desciptions");
149             }
150         }
151         else if(isProjectleader)
152         {
153             if (log.isDebugEnabled()) 
154             {
155                 log.debug(" User has Role: Projectleader");
156                 log.debug(" Searching Project Desciptions 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             projektbeschreibungen = dip.sucheKombination(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), null);
174             
175             if (log.isDebugEnabled()) 
176             {
177                 log.debug(" Found " + projektbeschreibungen.size() + " Project Desciptions");
178             }
179         }
180         else if(isUser)
181         {
182             if (log.isDebugEnabled()) 
183             {
184                 log.debug(" User has Role: User");
185                 log.debug(" Searching Project Desciptions for Projectleader");
186             }
187             
188             Collection usernames = dig.sucheLogInName(username);
189             Iterator iter = usernames.iterator();
190             Gruppenmitglieder user = null;
191             
192             while (iter.hasNext())
193             {
194                 user = (Gruppenmitglieder) iter.next();
195             }         
196 
197             if (log.isDebugEnabled()) 
198             {
199                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
200             }
201 
202             projektbeschreibungen = dip.sucheKombination(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), null);
203             
204             if (log.isDebugEnabled()) 
205             {
206                 log.debug(" Found " + projektbeschreibungen.size() + " Project Desciptions");
207             }
208         }
209 
210     	if (projektbeschreibungen == null) 
211     	{
212             if (log.isDebugEnabled()) 
213             {
214                 log.debug(" No Project Desciptions registered");
215             }
216             
217     	    return (mapping.findForward("success"));
218     	}
219     	
220         if (projektbeschreibungen != null) 
221         {
222             session.setAttribute(Keys.PROJEKTBESCHREIBUNGEN_KEY, projektbeschreibungen);
223         }
224     
225     	// Populate the Projektbeschreibungen Form
226     	if (form == null) 
227     	{
228             if (log.isDebugEnabled()) 
229             {
230                 log.debug(" Creating new ProjektbeschreibungenForm bean under key " + mapping.getAttribute());
231             }
232             
233 	        form = new ProjektbeschreibungenForm();
234 	        
235             if ("request".equals(mapping.getScope())) 
236             {
237                 request.setAttribute(mapping.getAttribute(), form);
238             } 
239             else 
240             {
241                 session.setAttribute(mapping.getAttribute(), form);
242             }
243     	}
244 
245         ProjektbeschreibungenForm pbform = (ProjektbeschreibungenForm) form;
246 	    
247         if (action.equals("List")) 
248         {
249             if (log.isDebugEnabled()) 
250             {
251                 log.debug(" Populating form from " + projektbeschreibungen);
252             }
253             
254             try 
255             {
256                 pbform.setProjektbeschreibungen(projektbeschreibungen);
257             } 
258             catch (Throwable t) 
259             {
260                 log.error("ProjektbeschreibungenForm.populate", t);
261                 throw new ServletException("ProjektbeschreibungenForm.populate", t);
262             }
263         }
264 
265         Common.Pager(request, projektbeschreibungen.size());
266 
267 	    // Forward control to the list Projekt page
268         if (log.isDebugEnabled()) 
269         {
270             log.debug(" Forwarding to 'success' page");
271         }
272     	return (mapping.findForward("success"));
273     }
274 }