1 package org.cacert.gigi.output;
3 import java.io.PrintWriter;
6 import javax.servlet.http.HttpServletRequest;
8 import org.cacert.gigi.GigiApiException;
9 import org.cacert.gigi.dbObjects.Group;
10 import org.cacert.gigi.localisation.Language;
11 import org.cacert.gigi.output.template.Outputable;
12 import org.cacert.gigi.util.HTMLEncoder;
14 public class GroupSelector implements Outputable {
16 private final String name;
18 private Group value = null;
20 private final boolean bySupporter;
22 public GroupSelector(String name, boolean bySupporter) {
23 this.name = HTMLEncoder.encodeHTML(name);
24 this.bySupporter = bySupporter;
27 public void update(HttpServletRequest r) throws GigiApiException {
28 String vS = r.getParameter(name);
30 throw new GigiApiException("No value for group.");
33 value = Group.getByString(vS);
34 } catch (IllegalArgumentException e) {
35 throw new GigiApiException("Invalid value for group.");
40 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
41 out.println("<select name='" + name + "'>");
42 for (Group g : Group.values()) {
44 out.print("<option value='" + g.getDatabaseName());
45 if (g.equals(value)) {
46 out.print(" selected");
49 g.getName().output(out, l, vars);
50 out.println("</option>");
53 out.println("</select>");
56 private boolean mayManage(Group g) {
57 return (bySupporter && g.isManagedBySupport()) || ( !bySupporter && g.isManagedByUser());
60 public Group getGroup() {