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.Collection;
22  import java.util.Iterator;
23  
24  import javax.servlet.http.HttpServletRequest;
25  
26  import org.apache.commons.logging.Log;
27  import org.apache.commons.logging.LogFactory;
28  import org.apache.struts.action.ActionError;
29  import org.apache.struts.action.ActionErrors;
30  import org.apache.struts.action.ActionForm;
31  import org.apache.struts.action.ActionMapping;
32  import org.fhw.cabaweb.data.DataInterfaceGruppenmitglieder;
33  import org.fhw.cabaweb.data.DataInterfaceProjektgruppen;
34  import org.fhw.cabaweb.tools.StringUtilities;
35  
36  /***
37   * Formularklasse der MVC Architektur von Struts.
38   * In diesem Fall für ein einzelnes Gruppenmitglied (Create/Delete/Edit eines Gruppenmitglieds)
39   *
40   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
41   * @version Version 1.0 06.07.2004
42   */
43  public final class GruppenmitgliedForm extends ActionForm
44  { 
45      /***
46       * The <code>Log</code> instance for this application.
47       */
48      private Log log = LogFactory.getLog("org.fhw.cabaweb.webfrontend.forms.simple");
49  
50      //--- Instanz Variablen --------------------------------------
51      /*** Art der Aktion die wir durchführen wollen (Create, Delete or Edit) - Default ist Create. */
52      private String action = "Create";
53      /*** Die Mitgliedsnummer */
54      private Integer mitgliedsnummer = null;
55      /*** Die Benutzerrollen ID */
56      private Integer rollenID = null;
57      /*** Die Gruppennummer */
58      private Integer gruppennummer = null;
59      /*** Die Projektnummer */
60      private Integer projektnummer = null;
61      /*** Ob das Mitglied einer Gruppe zugeordnet ist */
62      private Boolean istZugeordnet = null;
63      /*** Der Anmeldename des Mitglieds */
64      private String loginName = null;
65      /*** Der Name des Mitglieds */
66      private String mitgliedsname = null;
67      /*** Der Vorname des Mitglieds */
68      private String mitgliedsvorname = null;
69      /*** Die Adresse 1 des Mitglieds */
70      private String mitgliedsadresse1 = null;
71      /*** Die Adresse 2 des Mitglieds */
72      private String mitgliedsadresse2 = null;
73      /*** Die Postleitzahl des Mitglieds */
74      private Integer mitgliedsplz = null;
75      /*** Der Ort des Mitglieds */
76      private String mitgliedsort = null;
77      /*** Das Kennzeichen des Mitglieds */
78      private String mitgliedskennzeichen = null;
79      /*** Die eMail Adresse des Mitglieds */
80      private String mitgliedsemailadresse = null;
81      /*** Der Passworthash des Mitglieds */
82      private String passworthash = null;
83      /*** Der Passwort des Mitglieds */
84      private String passwort = null;
85      /*** Ist der Benutzer aktiv oder nicht */
86      private Boolean aktiv = null;
87      /*** Zeitstempel letzter Login */
88      private String letzterlogin = null;
89  
90      /*** Das Gruppenpasswort */
91      private String gruppenpasswort = null;
92  
93      //--- Eigenschaften (Variablen) ------------------------------
94  
95      /*** 
96       * GET Methode 
97       *
98       * @return der Parameterwert 
99       */
100     public String getAction()
101     {
102         return this.action;
103     }
104 
105     /*** 
106      * SET Methode 
107      *
108      * @param action Der zu setzende Parameterwert 
109      */
110     public void setAction(String action)
111     {
112         this.action = action;
113     }
114 
115     /*** 
116      * GET Methode 
117      *
118      * @return der Parameterwert 
119      */
120     public Integer getGruppennummer()
121     {
122         return this.gruppennummer;
123     }
124 
125     /*** 
126      * GET Methode 
127      *
128      * @return der Parameterwert 
129      */
130     public Integer getProjektnummer()
131     {
132         return this.projektnummer;
133     }
134 
135     /*** 
136      * GET Methode 
137      *
138      * @return der Parameterwert 
139      */
140     public Boolean getIstZugeordnet()
141     {
142         return this.istZugeordnet;
143     }
144 
145     /*** 
146      * GET Methode 
147      *
148      * @return der Parameterwert 
149      */
150     public String getLetzterlogin()
151     {
152         return this.letzterlogin;
153     }
154 
155     /*** 
156      * GET Methode 
157      *
158      * @return der Parameterwert 
159      */
160     public String getLoginName()
161     {
162         return this.loginName;
163     }
164 
165     /*** 
166      * GET Methode 
167      *
168      * @return der Parameterwert 
169      */
170     public String getMitgliedsadresse1()
171     {
172         return this.mitgliedsadresse1;
173     }
174 
175     /*** 
176      * GET Methode 
177      *
178      * @return der Parameterwert 
179      */
180     public String getMitgliedsadresse2()
181     {
182         return this.mitgliedsadresse2;
183     }
184 
185     /*** 
186      * GET Methode 
187      *
188      * @return der Parameterwert 
189      */
190     public String getMitgliedsemailadresse()
191     {
192         return this.mitgliedsemailadresse;
193     }
194 
195     /*** 
196      * GET Methode 
197      *
198      * @return der Parameterwert 
199      */
200     public String getMitgliedskennzeichen()
201     {
202         return this.mitgliedskennzeichen;
203     }
204 
205     /*** 
206      * GET Methode 
207      *
208      * @return der Parameterwert 
209      */
210     public String getMitgliedsname()
211     {
212         return this.mitgliedsname;
213     }
214 
215     /*** 
216      * GET Methode 
217      *
218      * @return der Parameterwert 
219      */
220     public Integer getMitgliedsnummer()
221     {
222         return this.mitgliedsnummer;
223     }
224 
225     /*** 
226      * GET Methode 
227      *
228      * @return der Parameterwert 
229      */
230     public String getMitgliedsort()
231     {
232         return this.mitgliedsort;
233     }
234 
235     /*** 
236      * GET Methode 
237      *
238      * @return der Parameterwert 
239      */
240     public Integer getMitgliedsplz()
241     {
242         return this.mitgliedsplz;
243     }
244 
245     /*** 
246      * GET Methode 
247      *
248      * @return der Parameterwert 
249      */
250     public String getMitgliedsvorname()
251     {
252         return this.mitgliedsvorname;
253     }
254 
255     /*** 
256      * GET Methode 
257      *
258      * @return der Parameterwert 
259      */
260     public String getPassworthash()
261     {
262         return this.passworthash;
263     }
264 
265     /*** 
266      * GET Methode 
267      *
268      * @return der Parameterwert 
269      */
270     public String getPasswort()
271     {
272         return this.passwort;
273     }
274 
275     /*** 
276      * GET Methode 
277      *
278      * @return der Parameterwert 
279      */
280     public Integer getRollenID()
281     {
282         return this.rollenID;
283     }
284 
285     /*** 
286      * GET Methode 
287      *
288      * @return der Parameterwert 
289      */
290     public Boolean getAktiv()
291     {
292         return this.aktiv;
293     }
294 
295     /*** 
296      * SET Methode 
297      *
298      * @param gruppennummer Der zu setzende Parameterwert 
299      */
300     public void setGruppennummer(Integer gruppennummer)
301     {
302         this.gruppennummer = gruppennummer;
303     }
304 
305     /*** 
306      * SET Methode 
307      *
308      * @param projektnummer Der zu setzende Parameterwert 
309      */
310     public void setProjektnummer(Integer projektnummer)
311     {
312         this.projektnummer = projektnummer;
313     }
314     
315     /*** 
316      * SET Methode 
317      *
318      * @param istZugeordnet Der zu setzende Parameterwert 
319      */
320     public void setIstZugeordnet(Boolean istZugeordnet)
321     {
322         this.istZugeordnet = istZugeordnet;
323     }
324 
325     /*** 
326      * SET Methode 
327      *
328      * @param letzterlogin Der zu setzende Parameterwert 
329      */
330     public void setLetzterlogin(String letzterlogin)
331     {
332         this.letzterlogin = letzterlogin;
333     }
334 
335     /*** 
336      * SET Methode 
337      *
338      * @param loginName Der zu setzende Parameterwert 
339      */
340     public void setLoginName(String loginName)
341     {
342         this.loginName = loginName;
343     }
344 
345     /*** 
346      * SET Methode 
347      *
348      * @param mitgliedsadresse1 Der zu setzende Parameterwert 
349      */
350     public void setMitgliedsadresse1(String mitgliedsadresse1)
351     {
352         this.mitgliedsadresse1 = mitgliedsadresse1;
353     }
354 
355     /*** 
356      * SET Methode 
357      *
358      * @param mitgliedsadresse2 Der zu setzende Parameterwert 
359      */
360     public void setMitgliedsadresse2(String mitgliedsadresse2)
361     {
362         this.mitgliedsadresse2 = mitgliedsadresse2;
363     }
364 
365     /*** 
366      * SET Methode 
367      *
368      * @param mitgliedsemailadresse Der zu setzende Parameterwert 
369      */
370     public void setMitgliedsemailadresse(String mitgliedsemailadresse)
371     {
372         this.mitgliedsemailadresse = mitgliedsemailadresse;
373     }
374 
375     /*** 
376      * SET Methode 
377      *
378      * @param mitgliedskennzeichen Der zu setzende Parameterwert 
379      */
380     public void setMitgliedskennzeichen(String mitgliedskennzeichen)
381     {
382         this.mitgliedskennzeichen = mitgliedskennzeichen;
383     }
384 
385     /*** 
386      * SET Methode 
387      *
388      * @param mitgliedsname Der zu setzende Parameterwert 
389      */
390     public void setMitgliedsname(String mitgliedsname)
391     {
392         this.mitgliedsname = mitgliedsname;
393     }
394 
395     /*** 
396      * SET Methode 
397      *
398      * @param mitgliedsnummer Der zu setzende Parameterwert 
399      */
400     public void setMitgliedsnummer(Integer mitgliedsnummer)
401     {
402         this.mitgliedsnummer = mitgliedsnummer;
403     }
404 
405     /*** 
406      * SET Methode 
407      *
408      * @param mitgliedsort Der zu setzende Parameterwert 
409      */
410     public void setMitgliedsort(String mitgliedsort)
411     {
412         this.mitgliedsort = mitgliedsort;
413     }
414 
415     /*** 
416      * SET Methode 
417      *
418      * @param mitgliedsplz Der zu setzende Parameterwert 
419      */
420     public void setMitgliedsplz(Integer mitgliedsplz)
421     {
422         this.mitgliedsplz = mitgliedsplz;
423     }
424 
425     /*** 
426      * SET Methode 
427      *
428      * @param mitgliedsvorname Der zu setzende Parameterwert 
429      */
430     public void setMitgliedsvorname(String mitgliedsvorname)
431     {
432         this.mitgliedsvorname = mitgliedsvorname;
433     }
434 
435     /*** 
436      * SET Methode 
437      *
438      * @param passworthash Der zu setzende Parameterwert 
439      */
440     public void setPassworthash(String passworthash)
441     {
442         this.passworthash = passworthash;
443     }
444 
445     /*** 
446      * SET Methode 
447      *
448      * @param passwort Der zu setzende Parameterwert 
449      */
450     public void setPasswort(String passwort)
451     {
452         this.passwort = StringUtilities.convertUTF8String(passwort);
453     }
454 
455     /*** 
456      * SET Methode 
457      *
458      * @param rollenID Der zu setzende Parameterwert 
459      */
460     public void setRollenID(Integer rollenID)
461     {
462         this.rollenID = rollenID;
463     }
464 
465     /*** 
466      * SET Methode 
467      *
468      * @param aktiv Der zu setzende Parameterwert 
469      */
470     public void setAktiv(Boolean aktiv)
471     {
472         this.aktiv = aktiv;
473     }
474     
475     /***
476      * GET Methode 
477      *
478      * @return gruppenpasswort
479      */
480     public String getGruppenpasswort()
481     {
482         return gruppenpasswort;
483     }
484 
485     /***
486      * SET Methode 
487      *
488      * @param gruppenpasswort Der zu setzende Parameterwert 
489      */
490     public void setGruppenpasswort(String gruppenpasswort)
491     {
492         this.gruppenpasswort = gruppenpasswort;
493     }
494     
495 
496     //--- Öffentliche Methoden -----------------------------------
497 
498     /***
499      * Zurücksetzen aller Parameterwerte auf die Default Werte.
500      *
501      * @param mapping Das Mapping das benutzt wurde um diese Instanz zu selektieren
502      * @param request Die Servlet Anfrage die wir gerade bearbeiten
503      */
504     public void reset(ActionMapping mapping, HttpServletRequest request) 
505     {
506         this.action = "Create";
507         this.mitgliedsnummer = null;
508         this.projektnummer = null;
509         this.gruppennummer = null;
510         this.rollenID = null;
511         this.istZugeordnet = null;
512         this.loginName = null;
513         this.mitgliedsname = null;
514         this.mitgliedsvorname = null;
515         this.mitgliedsadresse1 = null;
516         this.mitgliedsadresse2 = null;
517         this.mitgliedsplz = null;
518         this.mitgliedsort = null;
519         this.mitgliedskennzeichen = null;
520         this.mitgliedsemailadresse = null;
521         this.passworthash = null;
522         this.aktiv = null;
523         this.letzterlogin = null;
524         this.gruppenpasswort = null;
525     }
526 
527     /***
528      * Validieren der mit diesem Request übergebenen Paramter Werte. Wenn Fehler
529      * bei der Validierung auftreten wird <code>ActionErrors</code> Objekt, 
530      * das die Fehler enthält zurückgegeben.
531      * Wenn kein Fehler bei der Validierung auftritt wird <code>null</code> bzw.
532      * ein leeres <code>ActionErrors</code> Objekt zurückgegeben
533      *
534      * @param mapping Das Mapping das benutzt wurde um diese Instanz zu selektieren 
535      *                (siehe struts-config.xml)
536      * @param request Das Servlet Anfrage Objekt
537      */
538     public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
539     {
540         /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
541         DataInterfaceGruppenmitglieder dig = new DataInterfaceGruppenmitglieder();
542         /*** Data Interface für Benutzer (indirekter Zugriff auf die OJB Ebene) initialisieren */
543         DataInterfaceProjektgruppen dipg = new DataInterfaceProjektgruppen();
544 
545         // Perform validator framework validations
546         ActionErrors errors = new ActionErrors();
547 
548         if (gruppenpasswort == null || gruppenpasswort.trim().compareTo("") == 0 || gruppenpasswort.trim().compareTo("null") == 0)
549         {
550             if (projektnummer == null)
551                 errors.add("projektnummer", new ActionError("error.field.edit.gruppenmitglied.projektnummer.empty"));
552 
553             if (gruppennummer == null)
554                 errors.add("gruppennummer", new ActionError("error.field.edit.gruppenmitglied.gruppennummer.empty"));
555         }
556         else
557         {
558             Collection groups = dipg.sucheKombination(null, null, null, gruppenpasswort);
559 
560             if(groups.size() == 0 || groups.size() > 1)
561             {
562                 errors.add("gruppenpasswort", new ActionError("error.field.edit.gruppenmitglied.gruppenpasswort.notfound"));
563             }
564         }
565 
566         if (projektnummer == null && (gruppenpasswort == null || gruppenpasswort == ""))
567             errors.add("rollenID", new ActionError("error.field.edit.gruppenmitglied.rollenID.empty"));
568 
569         if (loginName == null || loginName.length() <= 0)
570             errors.add("loginName", new ActionError("error.field.edit.gruppenmitglied.loginName.empty"));
571 		else if (loginName.length() < 5)
572 			errors.add("loginName", new ActionError("error.field.edit.gruppenmitglied.loginName.minlength"));
573 		else if (loginName.length() > 50)
574 			errors.add("loginName", new ActionError("error.field.edit.gruppenmitglied.loginName.maxlength"));
575 
576         if (loginName != null && loginName.length() > 0 && action.compareTo("Create") == 0)
577         {
578             Collection users = dig.sucheLogInName(loginName);
579 
580             if(users.size() > 0)
581                 errors.add("loginName", new ActionError("error.field.edit.gruppenmitglied.loginName.duplicate"));
582         }
583 
584 		if (mitgliedsname == null || mitgliedsname.length() <= 0)
585 			errors.add("mitgliedsname", new ActionError("error.field.edit.gruppenmitglied.mitgliedsname.empty"));
586 		else if (mitgliedsname.length() < 1)
587 			errors.add("mitgliedsname", new ActionError("error.field.edit.gruppenmitglied.mitgliedsname.minlength"));
588 		else if (mitgliedsname.length() > 75)
589 			errors.add("mitgliedsname", new ActionError("error.field.edit.gruppenmitglied.mitgliedsname.maxlength"));
590 
591         if (mitgliedsvorname == null || mitgliedsvorname.length() <= 0)
592             errors.add("mitgliedsvorname", new ActionError("error.field.edit.gruppenmitglied.mitgliedsvorname.empty"));
593         else if (mitgliedsvorname.length() < 1)
594             errors.add(
595                 "mitgliedsvorname",
596                 new ActionError("error.field.edit.gruppenmitglied.mitgliedsvorname.minlength"));
597         else if (mitgliedsvorname.length() > 75)
598             errors.add(
599                 "mitgliedsvorname",
600                 new ActionError("error.field.edit.gruppenmitglied.mitgliedsvorname.maxlength"));
601 
602         if (mitgliedskennzeichen == null || mitgliedskennzeichen.length() <= 0)
603             errors.add("mitgliedskennzeichen", new ActionError("error.field.edit.gruppenmitglied.mitgliedskennzeichen.empty"));
604         else if (mitgliedskennzeichen.length() < 1)
605             errors.add(
606                 "mitgliedskennzeichen",
607                 new ActionError("error.field.edit.gruppenmitglied.mitgliedskennzeichen.minlength"));
608         else if (mitgliedskennzeichen.length() > 75)
609             errors.add(
610                 "mitgliedskennzeichen",
611                 new ActionError("error.field.edit.gruppenmitglied.mitgliedskennzeichen.maxlength"));
612 
613 		if (mitgliedsemailadresse == null || mitgliedsemailadresse.length() <= 0)
614 			errors.add(
615 				"mitgliedsemailadresse",
616 				new ActionError("error.field.edit.gruppenmitglied.mitgliedsemailadresse.empty"));
617 		else if (mitgliedsemailadresse.length() < 3)
618 			errors.add(
619 				"mitgliedsemailadresse",
620 				new ActionError("error.field.edit.gruppenmitglied.mitgliedsemailadresse.minlength"));
621 		else if (mitgliedsemailadresse.length() > 255)
622 			errors.add(
623 				"mitgliedsemailadresse",
624 				new ActionError("error.field.edit.gruppenmitglied.mitgliedsemailadresse.maxlength"));
625 
626 		if (StringUtilities.isValidEmailAddress(mitgliedsemailadresse) == false)
627 			errors.add(
628 				"mitgliedsemailadresse",
629 				new ActionError("error.field.edit.gruppenmitglied.mitgliedsemailadresse.format"));
630 
631         if ((passwort == null || passwort.length() <= 0) && action == "Create")
632             errors.add("passwort", new ActionError("error.field.edit.gruppenmitglied.passwort.empty"));
633         else if ((passwort.length() < 8 && action == "Create") || (passwort.length() > 0 && passwort.length() < 8))
634             errors.add("passwort", new ActionError("error.field.edit.gruppenmitglied.passwort.minlength"));
635         else if (passwort.length() > 100)
636             errors.add("passwort", new ActionError("error.field.edit.gruppenmitglied.passwort.maxlength"));
637 
638 		if (log.isDebugEnabled())
639 		{
640 			Iterator iter = errors.get();
641 
642 			log.debug(" Form had errors:");
643 			while (iter.hasNext())
644 			{
645 				log.debug(" " + ((ActionError) iter.next()).getKey());
646 			}
647 		}
648 
649         return errors;
650     }
651 
652 }