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.forms.simple;
20  
21  import java.util.Iterator;
22  
23  import javax.servlet.http.HttpServletRequest;
24  
25  import org.apache.commons.logging.Log;
26  import org.apache.commons.logging.LogFactory;
27  import org.apache.struts.action.ActionError;
28  import org.apache.struts.action.ActionErrors;
29  import org.apache.struts.action.ActionForm;
30  import org.apache.struts.action.ActionMapping;
31  
32  /***
33   * Formularklasse der MVC Architektur von Struts.
34   * In diesem Fall für eine einzelne Voreinstellung (Create/Delete/Edit einer Voreinstellung)
35   *
36   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
37   * @version Version 1.0 24.07.2004
38   */
39  public final class VoreinstellungForm extends ActionForm
40  { 
41      /***
42       * The <code>Log</code> instance for this application.
43       */
44      private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.forms.simple");
45  
46      //--- Instanz Variablen --------------------------------------
47      /*** Art der Aktion die wir durchführen wollen (Create, Delete or Edit) - Default ist Create. */
48      private String action = "Create";
49      /*** Die Projektnummer */
50      private Integer projektnummer = null;
51  	/*** Die Feldnummer */
52  	private Integer feldnummer = null;
53      /*** Der Feldname */
54      private String feldname = null;
55      /*** Der Tabellenname */
56      private String tabellenname = null;
57      /*** Der Wert */
58      private String wert = null;
59  
60      //--- Eigenschaften (Variablen) ------------------------------
61  
62      /*** 
63       * GET Methode 
64       *
65       * @return der Parameterwert 
66       */
67      public String getAction()
68      {
69          return this.action;
70      }
71  
72      /*** 
73       * SET Methode 
74       *
75       * @param action Der zu setzende Parameterwert 
76       */
77      public void setAction(String action)
78      {
79          this.action = action;
80      }
81  
82      /***
83       * GET Methode
84       * 
85       * @return Der Wert als String (Formatiert)
86       */
87      public String getTabellenname()
88      {
89          return tabellenname;
90      }
91  
92  	/*** 
93  	 * GET Methode 
94  	 *
95  	 * @return der Parameterwert 
96  	 */
97  	public Integer getFeldnummer()
98  	{
99  		return this.feldnummer;
100 	}
101 
102 	/*** 
103 	 * GET Methode 
104 	 *
105 	 * @return der Parameterwert 
106 	 */
107 	public Integer getProjektnummer()
108 	{
109 		return this.projektnummer;
110 	}
111 
112 	/*** 
113 	 * GET Methode 
114 	 *
115 	 * @return der Parameterwert 
116 	 */
117 	public String getFeldname()
118 	{
119 		return this.feldname;
120 	}
121 
122 	/*** 
123 	 * GET Methode 
124 	 *
125 	 * @return der Parameterwert 
126 	 */
127 	public String getWert()
128 	{
129 		return this.wert;
130 	}
131 	/*** 
132 	 * SET Methode 
133 	 *
134 	 * @param feldnummer Der zu setzende Parameterwert 
135 	 */
136 	public void setFeldnummer(Integer feldnummer)
137 	{
138 		this.feldnummer = feldnummer;
139 	}
140 
141     /*** 
142      * SET Methode 
143      *
144      * @param projektnummer Der zu setzende Parameterwert 
145      */
146     public void setProjektnummer(Integer projektnummer)
147     {
148         this.projektnummer = projektnummer;
149     }
150 
151 	/*** 
152 	 * SET Methode 
153 	 *
154 	 * @param wert Der zu setzende Parameterwert 
155 	 */
156 	public void setWert(String wert)
157 	{
158 		this.wert = wert;
159 	}
160     
161 	/*** 
162 	 * SET Methode 
163 	 *
164 	 * @param feldname Der zu setzende Parameterwert 
165 	 */
166 	public void setFeldname(String feldname)
167 	{
168 		this.feldname = feldname;
169 	}
170 
171     /***
172      * SET Methode
173      * 
174      * @param tabellenname
175      */
176     public void setTabellenname(String tabellenname)
177     {
178         this.tabellenname = tabellenname;
179     }
180 
181     //--- Öffentliche Methoden -----------------------------------
182 
183     /***
184      * Zurücksetzen aller Parameterwerte auf die Default Werte.
185      *
186      * @param mapping Das Mapping das benutzt wurde um diese Instanz zu selektieren
187      * @param request Die Servlet Anfrage die wir gerade bearbeiten
188      */
189     public void reset(ActionMapping mapping, HttpServletRequest request) 
190     {
191         this.action = "Create";
192         this.projektnummer = null;
193 		this.feldnummer = null;
194         this.feldname = null;
195         this.tabellenname = null;
196 		this.wert = null;
197     }
198 
199     /***
200      * Validieren der mit diesem Request übergebenen Paramter Werte. Wenn Fehler
201      * bei der Validierung auftreten wird <code>ActionErrors</code> Objekt, 
202      * das die Fehler enthält zurückgegeben.
203      * Wenn kein Fehler bei der Validierung auftritt wird <code>null</code> bzw.
204      * ein leeres <code>ActionErrors</code> Objekt zurückgegeben
205      *
206      * @param mapping Das Mapping das benutzt wurde um diese Instanz zu selektieren 
207      *                (siehe struts-config.xml)
208      * @param request Das Servlet Anfrage Objekt
209      */
210     public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
211     {
212         // Perform validator framework validations
213         ActionErrors errors = new ActionErrors();
214 
215 		if (projektnummer == null)
216 			errors.add("projektnummer", new ActionError("error.field.edit.voreinstellung.projektnummer.empty"));
217 
218         if (feldnummer == null)
219             errors.add("feldnummer", new ActionError("error.field.edit.voreinstellung.feldnummer.empty"));
220 
221         if (tabellenname!= null && tabellenname.compareTo("Voreinstellungen_Double") == 0)
222         {
223             try 
224             {
225                 Double test;
226             
227                 if (wert != null && wert.length() != 0)
228                     test = new Double(wert);
229                 else 
230                 {
231                     errors.add("wert", new ActionError("error.field.edit.voreinstellung.wert.format.double"));
232                 }
233             }
234             catch (NumberFormatException e) 
235             {
236                 errors.add("wert", new ActionError("error.field.edit.voreinstellung.wert.format.double"));
237             }
238         }
239         else if (tabellenname!= null && tabellenname.compareTo("Voreinstellungen_Integer") == 0)
240         {
241             try 
242             {
243                 Integer test;
244             
245                 if (wert != null && wert.length() != 0)
246                     test = new Integer(wert);
247                 else 
248                 {
249                     errors.add("wert", new ActionError("error.field.edit.voreinstellung.wert.format.integer"));
250                 }
251             }
252             catch (NumberFormatException e) 
253             {
254                 errors.add("wert", new ActionError("error.field.edit.voreinstellung.wert.format.integer"));
255             }
256         }
257         else if (wert != null && wert.length() > 255)
258             errors.add("wert", new ActionError("error.field.edit.voreinstellung.wert.maxlength"));
259 
260         if (log.isDebugEnabled()) 
261         {
262             Iterator iter = errors.get();
263 
264             log.debug(" Form had errors:");
265             while (iter.hasNext())
266             {
267                 log.debug(" " + ((ActionError) iter.next()).getKey());
268             }         
269         }
270 
271         return errors;
272     }
273 }