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