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.edit;
20  
21  import java.lang.reflect.InvocationTargetException;
22  import java.util.ArrayList;
23  import java.util.Collection;
24  import java.util.Iterator;
25  
26  import javax.servlet.ServletException;
27  import javax.servlet.http.HttpServletRequest;
28  import javax.servlet.http.HttpServletResponse;
29  import javax.servlet.http.HttpSession;
30  
31  import org.apache.struts.action.Action;
32  import org.apache.struts.action.ActionForm;
33  import org.apache.struts.action.ActionForward;
34  import org.apache.struts.action.ActionMapping;
35  
36  import org.apache.commons.beanutils.PropertyUtils;
37  import org.apache.commons.logging.Log;
38  import org.apache.commons.logging.LogFactory;
39  
40  import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
41  import org.fhw.cabaweb.data.DataInterfaceProjekte;
42  import org.fhw.cabaweb.data.DataInterfaceSprachen;
43  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsbeschreibungen;
44  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsnamen;
45  
46  import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Gruppierungsbeschreibungen;
48  
49  import org.fhw.cabaweb.webfrontend.configs.Keys;
50  import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenGruppierungsbeschreibungForm;
51  
52  /***
53   * <strong>Action</strong>-Klasse f&uuml;r die Edit ErgebnissdatenGruppierungsbeschreibung Action .
54   * Die Controller Klasse der Struts Model View Controller Architektur.
55   *
56   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
57   * @version Version 1.0 16.07.2004
58   */
59  public final class EditErgebnissdatenGruppierungsbeschreibungAction extends Action {
60  
61      /***
62       * The <code>Log</code> instance for this application.
63       */
64      private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.edit");
65  
66      /***
67       * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
68       * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort 
69       * erzeugt.  
70       * 
71       * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
72       * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein, 
73       * wenn die Anfrage bereits bearbeitet wurde.
74       * 
75       * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
76       * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
77       * @param request Die HTTP Anfrage die wir gerade bearbeiten
78       * @param response The HTTP Antwort die wir erzeugen
79       *
80       * @return Die Action zu der wir weiterleiten
81       * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
82       *            bzw. die Business Logik einen Fehler verursacht 
83       */
84      public ActionForward execute(ActionMapping mapping,
85  				                 ActionForm form,
86                                   HttpServletRequest request,
87                                   HttpServletResponse response)
88      throws Exception 
89      {
90          /*** Forwarding Action Variable mit null initialisieren */
91  //        ActionForward forward = null;
92          /*** Die Locale Variable (Sprache, Formatierung, etc.) */
93  //        Locale locale = getLocale(request);
94          /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
95  //        MessageResources messages = getResources(request);
96          /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
97           *  <code>ActionErrors</code> Objekt hinzugefügt. 
98           */ 
99  //        ActionErrors errors = new ActionErrors();
100 
101         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
102         DataInterfaceErgebnissdatenGruppierungsbeschreibungen divgb = new DataInterfaceErgebnissdatenGruppierungsbeschreibungen();
103         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
104         DataInterfaceErgebnissdatenGruppierungsnamen divgn = new DataInterfaceErgebnissdatenGruppierungsnamen();
105         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
106         DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
107 		/*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
108 		DataInterfaceProjekte dip = new DataInterfaceProjekte();
109 		/*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
110 		DataInterfaceSprachen dis = new DataInterfaceSprachen();
111         /*** Die Session der aktuellen Anfrage */
112         HttpSession session = request.getSession();
113         /*** Die übergebene Action */
114         String action = request.getParameter("action");
115 
116         /*** Zwischenspeichvaribale für den Status des Benutzers (Administrator ???) */
117         boolean isAdmin = request.isUserInRole("Administrator");
118         /*** Zwischenspeichvaribale für den Status des Benutzers (Projektleiter ???) */
119         boolean isProjectleader = false;
120         /*** Zwischenspeichvaribale für den Status des Benutzers (Benutzer ???) */
121         boolean isUser = false;
122         /*** Zwischenspeichvaribale für den Namen des Benutzers */
123         String username = request.getRemoteUser();
124 
125         if(!isAdmin)
126         {
127             isProjectleader = request.isUserInRole("Projektleiter");
128         }
129         if(!isAdmin && !isProjectleader)
130         {
131             isUser = request.isUserInRole("Benutzer");
132         }
133 
134     	if (action == null) 
135     	{
136     	    action = "Create";
137         }
138 
139         /*** Zwischenspeichvaribale für die Gruppierungsnummer (Integer) */
140         Integer gruppierungsnummer = null;
141         /*** Zwischenspeichvaribale für die Gruppierungsnummer (Request String) */
142         String grpnummer = request.getParameter("gruppierungsnummer");
143 
144 		/*** Zwischenspeichvaribale für die Projektnummer (Integer) */
145 		Integer projektnummer = null;
146 		/*** Zwischenspeichvaribale für die Projektnummer (Request String) */
147 		String prjnummer = request.getParameter("projektnummer");
148 
149 		/*** Zwischenspeichvaribale für die Sprachnummer (Integer) */
150 		Integer sprachnummer = null;
151 		/*** Zwischenspeichvaribale für die Sprachnummer (Request String) */
152 		String sprnummer = request.getParameter("sprachnummer");
153             
154         if(grpnummer != null)
155         {
156 			gruppierungsnummer = new Integer(grpnummer);
157         }
158             
159 		if(prjnummer != null)
160 		{
161 			projektnummer = new Integer(prjnummer);
162 		}
163             
164 		if(sprnummer != null)
165 		{
166 			sprachnummer = new Integer(sprnummer);
167 		}
168             
169         if (log.isDebugEnabled()) 
170         {
171             log.debug("EditErgebnissdatenGruppierungsbeschreibungAction: Processing " + action + " action for Preset Groupdescription [" + gruppierungsnummer + "]");
172         }
173         
174 		Collection ergebnissdatenGruppierungsbeschreibungen = divgb.sucheKombination(projektnummer, gruppierungsnummer, sprachnummer);
175 		Iterator iter = ergebnissdatenGruppierungsbeschreibungen.iterator();
176 		Ergebnissdaten_Gruppierungsbeschreibungen ergebnissdatenGruppierungsbeschreibung = null;
177             
178 		if(iter.hasNext())
179 		{
180 			ergebnissdatenGruppierungsbeschreibung = (Ergebnissdaten_Gruppierungsbeschreibungen) iter.next();
181 		}         
182          
183     	if ((ergebnissdatenGruppierungsbeschreibung == null) && !action.equals("Create")) 
184     	{
185             if (log.isDebugEnabled()) 
186             {
187                 log.debug(" No Preset Groupdescription for gruppierungsnummer " + gruppierungsnummer);
188             }
189             
190     	    return (mapping.findForward("failure"));
191     	}
192     	
193         if (ergebnissdatenGruppierungsbeschreibung != null) 
194         {
195             session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSBESCHREIBUNG_KEY, ergebnissdatenGruppierungsbeschreibung);
196         }
197     
198         Collection projekte = null;
199         
200         if(isAdmin)
201         {
202             if (log.isDebugEnabled()) 
203             {
204                 log.debug(" User has Role: Administrator");
205                 log.debug(" Searching all Projects");
206             }
207 
208             projekte = dip.sucheAlle();
209 
210             if (log.isDebugEnabled()) 
211             {
212                 log.debug(" Found " + projekte.size() + " Projects");
213             }
214         }
215         else if(isProjectleader)
216         {
217             if (log.isDebugEnabled()) 
218             {
219                 log.debug(" User is NOT Administrator");
220                 log.debug(" Searching own Project");
221             }
222             
223             Collection usernames = digm.sucheLogInName(username);
224             iter = usernames.iterator();
225             Gruppenmitglieder user = null;
226             
227             if(iter.hasNext())
228             {
229                 user = (Gruppenmitglieder) iter.next();
230             }         
231 
232             if (log.isDebugEnabled()) 
233             {
234                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
235             }
236 
237             ArrayList projekteAL = new ArrayList();
238             projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
239             projekte = projekteAL;
240             
241             if (log.isDebugEnabled()) 
242             {
243                 log.debug(" Found " + projekte.size() + " Projects");
244             }
245         }
246 
247         if (projekte != null) 
248         {
249             session.setAttribute(Keys.PROJEKTE_KEY, projekte);
250         }
251     
252 		Collection ergebnissdatenGruppierungsnamen = null;
253         
254 		if(isAdmin)
255 		{
256 			if (log.isDebugEnabled()) 
257 			{
258 				log.debug(" User has Role: Administrator");
259 				log.debug(" Searching all Groupnames");
260 			}
261 
262 			ergebnissdatenGruppierungsnamen = divgn.sucheAlle();
263 
264 			if (log.isDebugEnabled()) 
265 			{
266 				log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
267 			}
268 		}
269 		else if(isProjectleader)
270 		{
271 			if (log.isDebugEnabled()) 
272 			{
273 				log.debug(" User is NOT Administrator");
274 				log.debug(" Searching own Groupnames");
275 			}
276             
277 			Collection usernames = digm.sucheLogInName(username);
278 			iter = usernames.iterator();
279 			Gruppenmitglieder user = null;
280             
281 			if(iter.hasNext())
282 			{
283 				user = (Gruppenmitglieder) iter.next();
284 			}         
285 
286 			if (log.isDebugEnabled()) 
287 			{
288 				log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
289 			}
290 
291 			ergebnissdatenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
292             
293 			if (log.isDebugEnabled()) 
294 			{
295 				log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
296 			}
297 		}
298 
299 		if (ergebnissdatenGruppierungsnamen != null) 
300 		{
301 			session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSNAMEN_KEY, ergebnissdatenGruppierungsnamen);
302 		}
303     
304 		Collection sprachen = dis.sucheAlle();
305 		if (sprachen != null) 
306 		{
307 			session.setAttribute(Keys.SPRACHEN_KEY, sprachen);
308 		}
309     
310     	// Populate the Project Form
311     	if (form == null) 
312     	{
313             if (log.isDebugEnabled()) 
314             {
315                 log.debug(" Creating new ErgebnissdatenGruppierungsbeschreibungForm bean under key " + mapping.getAttribute());
316             }
317             
318 	        form = new ErgebnissdatenGruppierungsbeschreibungForm();
319 	        
320             if ("request".equals(mapping.getScope())) 
321             {
322                 request.setAttribute(mapping.getAttribute(), form);
323             } 
324             else 
325             {
326                 session.setAttribute(mapping.getAttribute(), form);
327             }
328     	}
329 
330         ErgebnissdatenGruppierungsbeschreibungForm prvgnform = (ErgebnissdatenGruppierungsbeschreibungForm) form;
331 		prvgnform.setAction(action);
332 	    
333         if (!action.equals("Create")) 
334         {
335             if (log.isDebugEnabled()) 
336             {
337                 log.debug(" Populating form from " + ergebnissdatenGruppierungsbeschreibung);
338             }
339             
340             try 
341             {
342                 PropertyUtils.copyProperties(prvgnform, ergebnissdatenGruppierungsbeschreibung);
343 				prvgnform.setGruppierungsnummer(ergebnissdatenGruppierungsbeschreibung.getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer());
344 				prvgnform.setProjektnummer(ergebnissdatenGruppierungsbeschreibung.getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer());
345 				prvgnform.setSprachnummer(ergebnissdatenGruppierungsbeschreibung.getSprachen().getSprachnummer());
346 				prvgnform.setAction(action);
347             } 
348             catch (InvocationTargetException e) 
349             {
350                 Throwable t = e.getTargetException();
351                 if (t == null)
352                     t = e;
353                 log.error("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
354                 throw new ServletException("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
355             } 
356             catch (Throwable t) 
357             {
358                 log.error("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
359                 throw new ServletException("ErgebnissdatenGruppierungsbeschreibungForm.populate", t);
360             }
361         }
362 
363         // Forward control to the edit Projekt page
364         if (log.isDebugEnabled()) 
365         {
366             log.debug(" Forwarding to 'success' page");
367         }
368     	return (mapping.findForward("success"));
369     }
370 }