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  
23  import javax.servlet.ServletException;
24  import javax.servlet.http.HttpServletRequest;
25  import javax.servlet.http.HttpServletResponse;
26  import javax.servlet.http.HttpSession;
27  
28  import org.apache.struts.action.Action;
29  import org.apache.struts.action.ActionForm;
30  import org.apache.struts.action.ActionForward;
31  import org.apache.struts.action.ActionMapping;
32  
33  import org.apache.commons.beanutils.PropertyUtils;
34  import org.apache.commons.logging.Log;
35  import org.apache.commons.logging.LogFactory;
36  
37  import org.fhw.cabaweb.data.DataInterfaceProjekte;
38  
39  import org.fhw.cabaweb.ojb.dataobjects.Projekte;
40  
41  import org.fhw.cabaweb.webfrontend.configs.Keys;
42  import org.fhw.cabaweb.webfrontend.forms.simple.ProjektForm;
43  
44  /***
45   * <strong>Action</strong>-Klasse f&uuml;r die Edit Projekt Action .
46   * Die Controller Klasse der Struts Model View Controller Architektur.
47   *
48   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
49   * @version Version 1.0 03.06.2004
50   */
51  public final class EditProjektAction extends Action {
52  
53      /***
54       * The <code>Log</code> instance for this application.
55       */
56      private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.actions.edit");
57  
58      /***
59       * Verarbeiten der spezifizierten HTTP Anfrage und erzeugen der zugeordneten
60       * HTTP Antwort bzw. Forwarden an eine andere Web Komponente, die die Antwort 
61       * erzeugt.  
62       * 
63       * Gibt eine <code>ActionForward</code> Instanz zurück die angibt wohin und wie
64       * die Kontrolle weitergegeben werden soll. Kann auch <code>null</code> sein, 
65       * wenn die Anfrage bereits bearbeitet wurde.
66       * 
67       * @param mapping Das ActionMapping das benutzt wurde um diese Instanz zu selektieren
68       * @param form Das optionale ActionForm Bean für die Anfrage (soweit vorhanden)
69       * @param request Die HTTP Anfrage die wir gerade bearbeiten
70       * @param response The HTTP Antwort die wir erzeugen
71       *
72       * @return Die Action zu der wir weiterleiten
73       * @exception Exception wenn ein Eingabe-/Ausgabe Fehler auftritt oder eine Servlet Exception auftritt
74       *            bzw. die Business Logik einen Fehler verursacht 
75       */
76      public ActionForward execute(ActionMapping mapping,
77  				                 ActionForm form,
78                                   HttpServletRequest request,
79                                   HttpServletResponse response)
80      throws Exception 
81      {
82          /*** Forwarding Action Variable mit null initialisieren */
83  //        ActionForward forward = null;
84          /*** Die Locale Variable (Sprache, Formatierung, etc.) */
85  //        Locale locale = getLocale(request);
86          /*** Die Resourcen (lokalisierten Meldungen) der Anfrage holen */
87  //        MessageResources messages = getResources(request);
88          /*** Wenn Fehler bei der Validierung Fehler auftreten werden Sie diesem
89           *  <code>ActionErrors</code> Objekt hinzugefügt. 
90           */ 
91  //        ActionErrors errors = new ActionErrors();
92  
93          /*** Data Interface (indirekter Zugriff auf die OJB Ebene) initialisieren */
94          DataInterfaceProjekte dip = new DataInterfaceProjekte();
95          /*** Die Session der aktuellen Anfrage */
96          HttpSession session = request.getSession();
97          /*** Die übergebene Action */
98          String action = request.getParameter("action");
99      	if (action == null) 
100     	{
101     	    action = "Create";
102         }
103 
104         /*** Zwischenspeichvaribale für die Projektnummer (Integer) */
105       	Integer projektnummer = null;
106         /*** Zwischenspeichvaribale für die Projektnummer (Request String) */
107       	String prjnummer = request.getParameter("projektnummer");
108 
109       	if(prjnummer != null)
110         {
111             projektnummer = new Integer(prjnummer);
112         }
113       	    
114         if (log.isDebugEnabled()) 
115         {
116             log.debug("EditProjektAction: Processing " + action + " action for Project " + projektnummer);
117         }
118 
119     	Projekte projekte = (Projekte) dip.sucheProjektnummer(projektnummer);
120     	if ((projekte == null) && !action.equals("Create")) 
121     	{
122             if (log.isDebugEnabled()) 
123             {
124                 log.debug(" No Project for projektnummer " + projektnummer);
125             }
126             
127     	    return (mapping.findForward("failure"));
128     	}
129     	
130         if (projekte != null) 
131         {
132             session.setAttribute(Keys.PROJEKT_KEY, projekte);
133         }
134     
135     	// Populate the Project Form
136     	if (form == null) 
137     	{
138             if (log.isDebugEnabled()) 
139             {
140                 log.debug(" Creating new ProjectForm bean under key " + mapping.getAttribute());
141             }
142             
143 	        form = new ProjektForm();
144 	        
145             if ("request".equals(mapping.getScope())) 
146             {
147                 request.setAttribute(mapping.getAttribute(), form);
148             } 
149             else 
150             {
151                 session.setAttribute(mapping.getAttribute(), form);
152             }
153     	}
154 
155 	    ProjektForm prjform = (ProjektForm) form;
156 	    prjform.setAction(action);
157 	    
158         if (!action.equals("Create")) 
159         {
160             if (log.isDebugEnabled()) 
161             {
162                 log.debug(" Populating form from " + projekte);
163             }
164             
165             try 
166             {
167                 PropertyUtils.copyProperties(prjform, projekte);
168                 prjform.setAction(action);
169             } 
170             catch (InvocationTargetException e) 
171             {
172                 Throwable t = e.getTargetException();
173                 if (t == null)
174                     t = e;
175                 log.error("ProjektForm.populate", t);
176                 throw new ServletException("ProjektForm.populate", t);
177             } 
178             catch (Throwable t) 
179             {
180                 log.error("ProjektForm.populate", t);
181                 throw new ServletException("ProjektForm.populate", t);
182             }
183         }
184 
185         // Forward control to the edit Projekt page
186         if (log.isDebugEnabled()) 
187         {
188             log.debug(" Forwarding to 'success' page");
189         }
190     	return (mapping.findForward("success"));
191     }
192 }