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