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.DataInterfaceVoreinstellungenFeldbeschreibungen;
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.VoreinstellungenFeldbeschreibungenForm;
43  import org.fhw.cabaweb.webfrontend.tools.Common;
44  
45  /***
46   * <strong>Action</strong>-Klasse f&uuml;r die List VoreinstellungenFeldbeschreibungen 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 14.07.2004
51   */
52  public final class ListVoreinstellungenFeldbeschreibungenAction 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          DataInterfaceVoreinstellungenFeldbeschreibungen divfb = (DataInterfaceVoreinstellungenFeldbeschreibungen) new DataInterfaceVoreinstellungenFeldbeschreibungen();
97          divfb.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("ListVoreinstellungenFeldbeschreibungenAction: Processing " + action + " action");
132         }
133 
134         /*** Dieser Collection werden alle gefundenen Projektbeschreibungen zugewiesen. */ 
135         Collection voreinstellungenFeldbeschreibungen = null;
136         if(isAdmin)
137         {
138             if (log.isDebugEnabled()) 
139             {
140                 log.debug(" User has Role: Administrator");
141                 log.debug(" Searching all Preset-Group Descriptions");
142             }
143 
144             voreinstellungenFeldbeschreibungen = divfb.sucheAlle();
145 
146             if (log.isDebugEnabled()) 
147             {
148                 log.debug(" Found " + voreinstellungenFeldbeschreibungen.size() + " Preset-Group Descriptions");
149             }
150         }
151         else if(isProjectleader)
152         {
153             if (log.isDebugEnabled()) 
154             {
155                 log.debug(" User has Role: Projectleader");
156                 log.debug(" Searching Preset-Group Descriptions 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             voreinstellungenFeldbeschreibungen = divfb.sucheKombination(((user.getProjektgruppe()).getProjekte()).getProjektnummer(), null, null, null, null);
174             
175             if (log.isDebugEnabled()) 
176             {
177                 log.debug(" Found " + voreinstellungenFeldbeschreibungen.size() + " Preset-Group Descriptions");
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 (voreinstellungenFeldbeschreibungen == null) 
190     	{
191             if (log.isDebugEnabled()) 
192             {
193                 log.debug(" No Preset-Group Descriptions registered");
194             }
195             
196     	    return (mapping.findForward("success"));
197     	}
198     	
199         if (voreinstellungenFeldbeschreibungen != null) 
200         {
201             session.setAttribute(Keys.VOREINSTELLUNGENFELDBESCHREIBUNGEN_KEY, voreinstellungenFeldbeschreibungen);
202         }
203     
204     	// Populate the Projektbeschreibungen Form
205     	if (form == null) 
206     	{
207             if (log.isDebugEnabled()) 
208             {
209                 log.debug(" Creating new VoreinstellungenFeldbeschreibungenForm bean under key " + mapping.getAttribute());
210             }
211             
212 	        form = new VoreinstellungenFeldbeschreibungenForm();
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         VoreinstellungenFeldbeschreibungenForm pgpform = (VoreinstellungenFeldbeschreibungenForm) form;
225 	    
226         if (action.equals("List")) 
227         {
228             if (log.isDebugEnabled()) 
229             {
230                 log.debug(" Populating form from " + voreinstellungenFeldbeschreibungen);
231             }
232             
233             try 
234             {
235                 pgpform.setVoreinstellungenFeldbeschreibungen(voreinstellungenFeldbeschreibungen);
236             } 
237             catch (Throwable t) 
238             {
239                 log.error("VoreinstellungenFeldbeschreibungenForm.populate", t);
240                 throw new ServletException("VoreinstellungenFeldbeschreibungenForm.populate", t);
241             }
242         }
243 
244         Common.Pager(request, voreinstellungenFeldbeschreibungen.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 }