001 /*
002 * Created on 26.04.2004
003 */
004 package de.fub.tip.actionforms;
005
006 import java.util.Collection;
007 import java.util.Iterator;
008
009 import javax.servlet.http.HttpServletRequest;
010
011 import org.apache.log4j.Logger;
012 import org.apache.struts.action.ActionForm;
013 import org.apache.struts.action.ActionMapping;
014
015 import de.fub.tip.datenanzeige.beans.HtmlCheckboxDarstellungBean;
016
017 /**
018 * Sinn: stellt das HTML-Formular zur Verfügung, das die Sehenswürdigkeits-
019 * gruppen eines Benutzers zur Bearbeitung anzeigt.<br>
020 * Hat keine Validierung oder Reset!<br>
021 * Dieses gruselige Stück Code musste nur entstehen, weil es in 2 Tagen Arbeit
022 * nicht gelungen ist eine Implementierung unter Verwendung des
023 * Struts-eigenen <html:multibox>-Tags zu verwenden.<br>
024 * Der Datentransport vom HTML-Formular (ActionForm) zur Action und dann
025 * zur Logik hat nicht funktioniert.
026 *
027 * @author hirsch, 2004-04-26
028 * @version 2004-04-28
029 * $Id: ChangeProfilActionForm.java,v 1.2 2004/04/29 14:45:12 hirsch Exp $
030 */
031 public class ChangeProfilActionForm extends ActionForm {
032 /** Logger zur Fehlersuche */
033 private static Logger logger =
034 Logger.getLogger(ChangeProfilActionForm.class);
035
036 /**
037 * nimmt alle Eingaben zurück, in dem das Formular auf den
038 * Startzustand (= letzter aus der DB gelesener Zustand des Profils)
039 * gebracht wird.
040 *
041 * @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
042 */
043 public void reset(ActionMapping am, HttpServletRequest hsr) {
044 this.selnames = null;
045 // während der Laufzeit wird nichts an <code>names</code> geändert,
046 // deshalb geht das mit der Hilfsmethode so einfach
047 this.setSelection();
048 } // end of reset
049
050 /** alle auswählbaren Inhalte des Formulars */
051 private Collection names = null;
052 /**
053 * Menge von DatenbankID-Inhalten aus dem Formulart,
054 * die selektiert wurden
055 */
056 private String[] selnames = null;
057
058
059 /**
060 * @return Returns the names.
061 */
062 public Collection getNames() {
063 return this.names;
064 }
065
066 /**
067 * @return Returns the selnames.
068 */
069 public String[] getSelnames() {
070 return this.selnames;
071 }
072
073 /**
074 * @param selnames The selnames to set.
075 */
076 public void setSelnames(String[] selnames) {
077 this.selnames = selnames;
078 }
079
080 /**
081 * @param names The names to set.
082 */
083 public void setNames(Collection names) {
084 this.names = names;
085 setSelection();
086 }
087
088
089 /**
090 * setzt die selektierten Elemente bei der Initialisierung des Formulars
091 * richtig.<br>
092 * Wird nach setNames() oder bem reset() aufgerufen!
093 */
094 public synchronized void setSelection() {
095
096 if( this.getNames() == null) {
097 logger.debug("ChangeSightGruppeProfilAction.setSelection(): " +
098 "Container hat keinen Wert -nichts zu tun!");
099 return;
100 }
101
102 // jetzt selnames entsprechend setzen.
103 int selected = 0;
104 Iterator it = null;
105 HtmlCheckboxDarstellungBean bean = null;
106
107 // 1. zählen, wie viele Elemente selektiert sind
108 it = this.getNames().iterator();
109
110 while ( it.hasNext()) {
111 bean = (HtmlCheckboxDarstellungBean) it.next();
112
113 if( bean.getAbostatus().booleanValue() ) selected++;
114 } // end of while
115
116 // 2. selektierte Elemente nach selnames übertragen
117 this.selnames = new String[selected];
118 int stelle = 0;
119 it = this.getNames().iterator();
120
121 while ( it.hasNext()) {
122 bean = (HtmlCheckboxDarstellungBean) it.next();
123
124 if( bean.getAbostatus().booleanValue() ) {
125 this.selnames[stelle++] = bean.getName();
126 } // end if
127 } // end of while
128
129 logger.debug("selnames = " + this.selnames.length);
130 logger.debug("ChangeSightGruppeProfilAction.setSelection(): " +
131 "selektierte Werte gesetzt");
132 } // end of setSelection
133 } // end of class
|