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.DataInterfaceErgebnissdatenFeldnamen;
43  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenGruppierungsnamen;
44  import org.fhw.cabaweb.data.DataInterfaceErgebnissdatenUntergruppierungsnamen;
45  
46  import org.fhw.cabaweb.ojb.dataobjects.Gruppenmitglieder;
47  import org.fhw.cabaweb.ojb.dataobjects.Ergebnissdaten_Feldnamen;
48  
49  import org.fhw.cabaweb.webfrontend.configs.Keys;
50  import org.fhw.cabaweb.webfrontend.forms.simple.ErgebnissdatenFeldnameForm;
51  
52  /***
53   * <strong>Action</strong>-Klasse f&uuml;r die Edit ErgebnissdatenFeldname 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 EditErgebnissdatenFeldnameAction 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         DataInterfaceErgebnissdatenFeldnamen divfn = new DataInterfaceErgebnissdatenFeldnamen();
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         DataInterfaceErgebnissdatenUntergruppierungsnamen divugn = new DataInterfaceErgebnissdatenUntergruppierungsnamen();
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("EditErgebnissdatenFeldnameAction: Processing " + action + " action for Preset Fieldname [" + feldnummer + "]");
152         }
153         
154         Ergebnissdaten_Feldnamen ergebnissdatenFeldname = (Ergebnissdaten_Feldnamen) divfn.sucheFeldnummer(feldnummer);
155          
156     	if ((ergebnissdatenFeldname == 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 (ergebnissdatenFeldname != null) 
167         {
168             session.setAttribute(Keys.ERGEBNISSDATENFELDNAME_KEY, ergebnissdatenFeldname);
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 ergebnissdatenGruppierungsnamen = 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             ergebnissdatenGruppierungsnamen = divgn.sucheAlle();
236 
237             if (log.isDebugEnabled()) 
238             {
239                 log.debug(" Found " + ergebnissdatenGruppierungsnamen.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             ergebnissdatenGruppierungsnamen = divgn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
265             
266             if (log.isDebugEnabled()) 
267             {
268                 log.debug(" Found " + ergebnissdatenGruppierungsnamen.size() + " Groupnames");
269             }
270         }
271 
272         if (ergebnissdatenGruppierungsnamen != null) 
273         {
274             session.setAttribute(Keys.ERGEBNISSDATENGRUPPIERUNGSNAMEN_KEY, ergebnissdatenGruppierungsnamen);
275         }
276 
277         Collection ergebnissdatenUntergruppierungsnamen = 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             ergebnissdatenUntergruppierungsnamen = divugn.sucheAlle();
288 
289             if (log.isDebugEnabled()) 
290             {
291                 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.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             ergebnissdatenUntergruppierungsnamen = divugn.sucheProjektnummer(((user.getProjektgruppe()).getProjekte()).getProjektnummer());
317             
318             if (log.isDebugEnabled()) 
319             {
320                 log.debug(" Found " + ergebnissdatenUntergruppierungsnamen.size() + " Groupnames");
321             }
322         }
323 
324         if (ergebnissdatenUntergruppierungsnamen != null) 
325         {
326             session.setAttribute(Keys.ERGEBNISSDATENUNTERGRUPPIERUNGSNAMEN_KEY, ergebnissdatenUntergruppierungsnamen);
327         }
328         
329         ArrayList tablenames = new ArrayList();
330         tablenames.add(0, "Ergebnissdaten_Double");
331         tablenames.add(1, "Ergebnissdaten_Integer");
332 
333         if (tablenames != null) 
334         {
335             session.setAttribute(Keys.TABELLENNAMEN_KEY, tablenames);
336         }
337         
338         ArrayList fieldnames = new ArrayList();
339         String base = "double";
340         fieldnames.add(0, "");
341         
342         for(int i = 1; i <= 200; i++)
343         {
344             fieldnames.add(i, base + i);
345         }
346 
347         base = "integer";
348         
349         for(int i = 1; i <= 200; i++)
350         {
351             fieldnames.add(i+200, base + i);
352         }
353 
354         if (fieldnames != null) 
355         {
356             session.setAttribute(Keys.TABELLEN_FELDNAMEN_KEY, fieldnames);
357         }
358 
359         ArrayList numbers = new ArrayList();
360         for(int i = 0; i <= 1000; i++)
361         {
362             numbers.add(i, new Integer(i));
363         }
364 
365         if (numbers != null) 
366         {
367             session.setAttribute(Keys.NUMBERS_KEY, numbers);
368         }
369 
370     	// Populate the Project Form
371     	if (form == null) 
372     	{
373             if (log.isDebugEnabled()) 
374             {
375                 log.debug(" Creating new ErgebnissdatenFeldnameForm bean under key " + mapping.getAttribute());
376             }
377             
378 	        form = new ErgebnissdatenFeldnameForm();
379 	        
380             if ("request".equals(mapping.getScope())) 
381             {
382                 request.setAttribute(mapping.getAttribute(), form);
383             } 
384             else 
385             {
386                 session.setAttribute(mapping.getAttribute(), form);
387             }
388     	}
389 
390         ErgebnissdatenFeldnameForm prvfform = (ErgebnissdatenFeldnameForm) form;
391         prvfform.setAction(action);
392 	    
393         if (!action.equals("Create")) 
394         {
395             if (log.isDebugEnabled()) 
396             {
397                 log.debug(" Populating form from " + ergebnissdatenFeldname);
398             }
399             
400             try 
401             {
402                 PropertyUtils.copyProperties(prvfform, ergebnissdatenFeldname);
403                 prvfform.setFeldnummer(feldnummer);
404                 prvfform.setUntergruppierungsnummer(ergebnissdatenFeldname.getErgebnissdaten_untergruppierungsnamen().getUntergruppierungsnummer());
405                 prvfform.setGruppierungsnummer(ergebnissdatenFeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getGruppierungsnummer());
406                 prvfform.setProjektnummer(ergebnissdatenFeldname.getErgebnissdaten_untergruppierungsnamen().getErgebnissdaten_gruppierungsnamen().getProjekte().getProjektnummer());
407                 prvfform.setFeldnamebenutzer(ergebnissdatenFeldname.getFeldname_benutzer());
408                 prvfform.setAction(action);
409             } 
410             catch (InvocationTargetException e) 
411             {
412                 Throwable t = e.getTargetException();
413                 if (t == null)
414                     t = e;
415                 log.error("ErgebnissdatenFeldnameForm.populate", t);
416                 throw new ServletException("ErgebnissdatenFeldnameForm.populate", t);
417             } 
418             catch (Throwable t) 
419             {
420                 log.error("ErgebnissdatenFeldnameForm.populate", t);
421                 throw new ServletException("ErgebnissdatenFeldnameForm.populate", t);
422             }
423         }
424 
425         // Forward control to the edit Projekt page
426         if (log.isDebugEnabled()) 
427         {
428             log.debug(" Forwarding to 'success' page");
429         }
430     	return (mapping.findForward("success"));
431     }
432 }