package org.cacert.gigi.output;
import java.io.PrintWriter;
+import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.cacert.gigi.GigiApiException;
-import org.cacert.gigi.dbObjects.CountryCode;
-import org.cacert.gigi.dbObjects.CountryCode.CountryCodeType;
+import org.cacert.gigi.dbObjects.Country;
+import org.cacert.gigi.dbObjects.Country.CountryCodeType;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.template.Outputable;
import org.cacert.gigi.output.template.Template;
private static final Template t = new Template(CountrySelector.class.getResource("CountrySelector.templ"));
- private CountryCode[] all = CountryCode.getCountryCodes(CountryCodeType.CODE_2_CHARS);
+ private List<Country> all = Country.getCountries();
private String name;
- private CountryCode selected;
+ private Country selected;
private boolean optional;
- public CountrySelector(String name, boolean optional) throws GigiApiException {
+ public CountrySelector(String name, boolean optional) {
this.name = name;
this.optional = optional;
}
- public CountrySelector(String name, boolean optional, String state) throws GigiApiException {
+ public CountrySelector(String name, boolean optional, Country country) {
this(name, optional);
- selected = CountryCode.getCountryCode(state, CountryCodeType.CODE_2_CHARS);
-
+ selected = country;
}
public void update(HttpServletRequest r) throws GigiApiException {
String vS = r.getParameter(name);
+
selected = null;
+
if (vS == null || vS.equals("invalid")) {
if (optional) {
return;
throw new GigiApiException("Country code required.");
}
}
- selected = CountryCode.getCountryCode(vS, CountryCodeType.CODE_2_CHARS);
+ selected = Country.getCountryByCode(vS, CountryCodeType.CODE_2_CHARS);
}
@Override
public void output(PrintWriter out, Language l, Map<String, Object> vars) {
- vars.put("countryCode", new ArrayIterable<CountryCode>(all) {
+ vars.put("countryCode", new IterableIterable<Country>(all) {
@Override
- public void apply(CountryCode t, Language l, Map<String, Object> vars) {
- vars.put("cc", t.getCountryCode());
- vars.put("display", t.getCountry());
- if (selected != null && t.getCountryCode().equals(selected.getCountryCode())) {
+ public void apply(Country t, Language l, Map<String, Object> vars) {
+ vars.put("cc", t.getCode());
+ vars.put("display", t.getName());
+ if (selected != null && t.getCode().equals(selected.getCode())) {
vars.put("selected", "selected");
} else {
vars.put("selected", "");
}
}
+
});
+
vars.put("optional", optional);
vars.put("name", name);
+
t.output(out, l, vars);
}
- public CountryCode getCountry() {
+ public Country getCountry() {
return selected;
}