1 package org.cacert.gigi.output;
3 import java.io.PrintWriter;
7 import javax.servlet.http.HttpServletRequest;
9 import org.cacert.gigi.GigiApiException;
10 import org.cacert.gigi.dbObjects.Country;
11 import org.cacert.gigi.dbObjects.Country.CountryCodeType;
12 import org.cacert.gigi.localisation.Language;
13 import org.cacert.gigi.output.template.Outputable;
14 import org.cacert.gigi.output.template.Template;
16 public class CountrySelector implements Outputable {
18 private static final Template t = new Template(CountrySelector.class.getResource("CountrySelector.templ"));
20 private List<Country> all = Country.getCountries();
24 private Country selected;
26 private boolean optional;
28 public CountrySelector(String name, boolean optional) {
30 this.optional = optional;
33 public CountrySelector(String name, boolean optional, Country country) {
38 public void update(HttpServletRequest r) throws GigiApiException {
39 String vS = r.getParameter(name);
43 if (vS == null || vS.equals("invalid")) {
47 throw new GigiApiException("Country code required.");
51 selected = Country.getCountryByCode(vS, CountryCodeType.CODE_2_CHARS);
55 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
56 vars.put("countryCode", new IterableIterable<Country>(all) {
59 public void apply(Country t, Language l, Map<String, Object> vars) {
60 vars.put("cc", t.getCode());
61 vars.put("display", t.getName());
62 if (selected != null && t.getCode().equals(selected.getCode())) {
63 vars.put("selected", "selected");
65 vars.put("selected", "");
71 vars.put("optional", optional);
72 vars.put("name", name);
74 t.output(out, l, vars);
77 public Country getCountry() {