/* This file is part of OpenMyEWB. OpenMyEWB is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenMyEWB is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenMyEWB. If not, see <http://www.gnu.org/licenses/>. OpenMyEWB is Copyright 2005-2009 Nicolas Kruchten (nicolas@kruchten.com), Francis Kung, Engineers Without Borders Canada, Michael Trauttmansdorff, Jon Fishbein, David Kadish */ package ca.myewb.frame.forms; import java.util.Iterator; import java.util.List; import java.util.Vector; import ca.myewb.frame.PostParamWrapper; import ca.myewb.frame.forms.element.Dropdown; import ca.myewb.model.GroupChapterModel; public class MemberSearchForm extends Form { boolean advanced; public MemberSearchForm(String target, PostParamWrapper requestParams, boolean advanced, List chapters) throws Exception { super(target, "search"); addText("Firstname", "First name", requestParams.get("Firstname"), false); addText("Lastname", "Last name", requestParams.get("Lastname"), false); addText("Email", "Email address", requestParams.get("Email"), false); if (chapters != null) { Dropdown d = addDropdown("Chapter", "Chapter", requestParams.get("Chapter"), false); Iterator i = chapters.iterator(); while (i.hasNext()) { GroupChapterModel chap = (GroupChapterModel)i.next(); d.addOption(String.valueOf(chap.getId()), chap.getName()); } } if (advanced) { this.advanced = true; addText("Username", "Username", requestParams.get("Username"), false); addText("City", "City", requestParams.get("City"), false); addText("Province", "Province", requestParams.get("Province"), false); Dropdown d = addDropdown("Language", "Preferred Language", requestParams.get("Language"), false); d.addOption("en", "English"); d.addOption("fr", "French"); d = addDropdown("Gender", "Gender", requestParams.get("Gender"), false); d.addOption("m", "male"); d.addOption("f", "female"); addText("Birth", "Year of birth", requestParams.get("Birth"), false); addText("Occupation", "Occupation / field", requestParams.get("Occupation"), false); d = addDropdown("Student", "Student status?", requestParams.get("Student"), false); d.addOption("true", "Yes"); d.addOption("false", "No"); addHidden("Advanced", "yes", true); } else { this.advanced = false; } } public boolean cleanAndValidate(boolean isClean) { isClean = (getElement("Firstname")).ensureName() && isClean; isClean = (getElement("Lastname")).ensureName() && isClean; if (advanced) { Vector<Character> allowed = new Vector<Character>(); allowed.add(new Character(' ')); isClean = (getElement("Province")).ensureAlphabetic(allowed, true) && isClean; allowed.add(new Character('-')); allowed.add(new Character('.')); allowed.add(new Character('\'')); isClean = (getElement("City")).ensureAlphabetic(allowed, true) && isClean; isClean = (getElement("Birth")).ensureNumeric(1890, 2005) && isClean; allowed.remove(new Character('-')); allowed.add(new Character('/')); isClean = (getElement("Occupation")).ensureAlphabetic(allowed, true) && isClean; if (getElement("Chapter") != null) { isClean = (getElement("Chapter")).ensureNumeric() && isClean; } } return isClean; } }