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.DataInterfaceVoreinstellungenFeldnamen;
43  import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenGruppierungsnamen;
44  import org.fhw.cabaweb.data.DataInterfaceVoreinstellungenUntergruppierungsnamen;
45  
46  import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47  import org.fhw.cabaweb.ojb.dataobjects.Voreinstellungen_Feldnamen;
48  
49  import org.fhw.cabaweb.webfrontend.configs.Keys;
50  import org.fhw.cabaweb.webfrontend.forms.simple.VoreinstellungenFeldnameForm;
51  
52  /***
53   * <strong>Action</strong>-Klasse f&uuml;r die Edit VoreinstellungenFeldname 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 EditVoreinstellungenFeldnameAction 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         DataInterfaceVoreinstellungenFeldnamen divfn = new DataInterfaceVoreinstellungenFeldnamen();
103         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
104         DataInterfaceVoreinstellungenGruppierungsnamen divgn = new DataInterfaceVoreinstellungenGruppierungsnamen();
105         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
106         DataInterfaceVoreinstellungenUntergruppierungsnamen divugn = new DataInterfaceVoreinstellungenUntergruppierungsnamen();
107         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
108         DataInterfaceGruppenmitglieder digm = new DataInterfaceGruppenmitglieder();
109         /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
110         DataInterfaceProjekte dip = new DataInterfaceProjekte();
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 Feldnummer (Integer) */
140         Integer feldnummer = null;
141         /*** Zwischenspeichvaribale für die Feldnummer (Request String) */
142         String fnummer = request.getParameter("feldnummer");
143             
144         if(fnummer != null)
145         {
146 			feldnummer = new Integer(fnummer);
147         }
148             
149         if (log.isDebugEnabled()) 
150         {
151             log.debug("EditVoreinstellungenFeldnameAction: Processing " + action + " action for Preset Fieldname [" + feldnummer + "]");
152         }
153         
154         Voreinstellungen_Feldnamen voreinstellungenFeldname = (Voreinstellungen_Feldnamen) divfn.sucheFeldnummer(feldnummer);
155          
156     	if ((voreinstellungenFeldname == null) && !action.equals("Create")) 
157     	{
158             if (log.isDebugEnabled()) 
159             {
160                 log.debug(" No Preset Fieldname for feldnummer " + feldnummer);
161             }
162             
163     	    return (mapping.findForward("failure"));
164     	}
165     	
166         if (voreinstellungenFeldname != null) 
167         {
168             session.setAttribute(Keys.VOREINSTELLUNGENFELDNAME_KEY, voreinstellungenFeldname);
169         }
170     
171         Collection projekte = null;
172         
173         if(isAdmin)
174         {
175             if (log.isDebugEnabled()) 
176             {
177                 log.debug(" User has Role: Administrator");
178                 log.debug(" Searching all Projects");
179             }
180 
181             projekte = dip.sucheAlle();
182 
183             if (log.isDebugEnabled()) 
184             {
185                 log.debug(" Found " + projekte.size() + " Projects");
186             }
187         }
188         else if(isProjectleader)
189         {
190             if (log.isDebugEnabled()) 
191             {
192                 log.debug(" User is NOT Administrator");
193                 log.debug(" Searching own Project");
194             }
195             
196             Collection usernames = digm.sucheLogInName(username);
197             Iterator iter = usernames.iterator();
198             Gruppenmitglieder user = null;
199             
200             if(iter.hasNext())
201             {
202                 user = (Gruppenmitglieder) iter.next();
203             }         
204 
205             if (log.isDebugEnabled()) 
206             {
207                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
208             }
209 
210             ArrayList projekteAL = new ArrayList();
211             projekteAL.add(dip.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer()));
212             projekte = projekteAL;
213             
214             if (log.isDebugEnabled()) 
215             {
216                 log.debug(" Found " + projekte.size() + " Projects");
217             }
218         }
219 
220         if (projekte != null) 
221         {
222             session.setAttribute(Keys.PROJEKTE_KEY, projekte);
223         }
224 
225         Collection voreinstellungenGruppierungsnamen = null;
226         
227         if(isAdmin)
228         {
229             if (log.isDebugEnabled()) 
230             {
231                 log.debug(" User has Role: Administrator");
232                 log.debug(" Searching all Groupnames");
233             }
234 
235             voreinstellungenGruppierungsnamen = divgn.sucheAlle();
236 
237             if (log.isDebugEnabled()) 
238             {
239                 log.debug(" Found " + voreinstellungenGruppierungsnamen.size() + " Groupnames");
240             }
241         }
242         else if(isProjectleader)
243         {
244             if (log.isDebugEnabled()) 
245             {
246                 log.debug(" User is NOT Administrator");
247                 log.debug(" Searching own Groupnames");
248             }
249             
250             Collection usernames = digm.sucheLogInName(username);
251             Iterator iter = usernames.iterator();
252             Gruppenmitglieder user = null;
253             
254             if(iter.hasNext())
255             {
256                 user = (Gruppenmitglieder) iter.next();
257             }         
258 
259             if (log.isDebugEnabled()) 
260             {
261                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
262             }
263 
264             voreinstellungenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
265             
266             if (log.isDebugEnabled()) 
267             {
268                 log.debug(" Found " + voreinstellungenGruppierungsnamen.size() + " Groupnames");
269             }
270         }
271 
272         if (voreinstellungenGruppierungsnamen != null) 
273         {
274             session.setAttribute(Keys.VOREINSTELLUNGENGRUPPIERUNGSNAMEN_KEY, voreinstellungenGruppierungsnamen);
275         }
276 
277         Collection voreinstellungenUntergruppierungsnamen = null;
278         
279         if(isAdmin)
280         {
281             if (log.isDebugEnabled()) 
282             {
283                 log.debug(" User has Role: Administrator");
284                 log.debug(" Searching all Groupnames");
285             }
286 
287             voreinstellungenUntergruppierungsnamen = divugn.sucheAlle();
288 
289             if (log.isDebugEnabled()) 
290             {
291                 log.debug(" Found " + voreinstellungenUntergruppierungsnamen.size() + " Groupnames");
292             }
293         }
294         else if(isProjectleader)
295         {
296             if (log.isDebugEnabled()) 
297             {
298                 log.debug(" User is NOT Administrator");
299                 log.debug(" Searching own Groupnames");
300             }
301             
302             Collection usernames = digm.sucheLogInName(username);
303             Iterator iter = usernames.iterator();
304             Gruppenmitglieder user = null;
305             
306             if(iter.hasNext())
307             {
308                 user = (Gruppenmitglieder) iter.next();
309             }         
310 
311             if (log.isDebugEnabled()) 
312             {
313                 log.debug(" Projektnummer " + ((user.getProjektgruppe()).getProjekte()).getProjektnummer());
314             }
315 
316             voreinstellungenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
317             
318             if (log.isDebugEnabled()) 
319             {
320                 log.debug(" Found " + voreinstellungenUntergruppierungsnamen.size() + " Groupnames");
321             }
322         }
323 
324         if (voreinstellungenUntergruppierungsnamen != null) 
325         {
326             session.setAttribute(Keys.VOREINSTELLUNGENUNTERGRUPPIERUNGSNAMEN_KEY, voreinstellungenUntergruppierungsnamen);
327         }
328         
329         ArrayList tablenames = new ArrayList();
330         tablenames.add(0, "Voreinstellungen_Double");
331         tablenames.add(1, "Voreinstellungen_Integer");
332         tablenames.add(2, "Voreinstellungen_String");
333 
334         if (tablenames != null) 
335         {
336             session.setAttribute(Keys.TABELLENNAMEN_KEY, tablenames);
337         }
338         
339         ArrayList fieldnames = new ArrayList();
340         String base = "double";
341         fieldnames.add(0, "");
342         
343         for(int i = 1; i <= 225; i++)
344         {
345             fieldnames.add(i, base + i);
346         }
347 
348         base = "integer";
349         
350         for(int i = 1; i <= 200; i++)
351         {
352             fieldnames.add(i+200, base + i);
353         }
354 
355         base = "string";
356         
357         for(int i = 1; i <= 200; i++)
358         {
359             fieldnames.add(i+400, base + i);
360         }
361 
362         if (fieldnames != null) 
363         {
364             session.setAttribute(Keys.TABELLEN_FELDNAMEN_KEY, fieldnames);
365         }
366 
367         ArrayList numbers = new ArrayList();
368         for(int i = 0; i <= 1000; i++)
369         {
370             numbers.add(i, new Integer(i));
371         }
372 
373         if (numbers != null) 
374         {
375             session.setAttribute(Keys.NUMBERS_KEY, numbers);
376         }
377 
378     	// Populate the Project Form
379     	if (form == null) 
380     	{
381             if (log.isDebugEnabled()) 
382             {
383                 log.debug(" Creating new VoreinstellungenFeldnameForm bean under key " + mapping.getAttribute());
384             }
385             
386 	        form = new VoreinstellungenFeldnameForm();
387 	        
388             if ("request".equals(mapping.getScope())) 
389             {
390                 request.setAttribute(mapping.getAttribute(), form);
391             } 
392             else 
393             {
394                 session.setAttribute(mapping.getAttribute(), form);
395             }
396     	}
397 
398         VoreinstellungenFeldnameForm prvfform = (VoreinstellungenFeldnameForm) form;
399         prvfform.setAction(action);
400 	    
401         if (!action.equals("Create")) 
402         {
403             if (log.isDebugEnabled()) 
404             {
405                 log.debug(" Populating form from " + voreinstellungenFeldname);
406             }
407             
408             try 
409             {
410                 PropertyUtils.copyProperties(prvfform, voreinstellungenFeldname);
411                 prvfform.setFeldnummer(feldnummer);
412                 prvfform.setUntergruppierungsnummer(voreinstellungenFeldname.getVoreinstellungen_untergruppierungsnamen().getUntergruppierungsnummer());
413                 prvfform.setGruppierungsnummer(voreinstellungenFeldname.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getGruppierungsnummer());
414                 prvfform.setProjektnummer(voreinstellungenFeldname.getVoreinstellungen_untergruppierungsnamen().getVoreinstellungen_gruppierungsnamen().getProjekte().getProjektnummer());
415                 prvfform.setFeldnamebenutzer(voreinstellungenFeldname.getFeldname_benutzer());
416                 prvfform.setAction(action);
417             } 
418             catch (InvocationTargetException e) 
419             {
420                 Throwable t = e.getTargetException();
421                 if (t == null)
422                     t = e;
423                 log.error("VoreinstellungenFeldnameForm.populate", t);
424                 throw new ServletException("VoreinstellungenFeldnameForm.populate", t);
425             } 
426             catch (Throwable t) 
427             {
428                 log.error("VoreinstellungenFeldnameForm.populate", t);
429                 throw new ServletException("VoreinstellungenFeldnameForm.populate", t);
430             }
431         }
432 
433         // Forward control to the edit Projekt page
434         if (log.isDebugEnabled()) 
435         {
436             log.debug(" Forwarding to 'success' page");
437         }
438     	return (mapping.findForward("success"));
439     }
440 }