]> WPIA git - gigi.git/blob - src/org/cacert/gigi/output/GroupSelector.java
fix: ResultSet.getDate is often wrong as it fetches day-precision times
[gigi.git] / src / org / cacert / gigi / output / GroupSelector.java
1 package org.cacert.gigi.output;
2
3 import java.io.PrintWriter;
4 import java.util.Map;
5
6 import javax.servlet.http.HttpServletRequest;
7
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;
13
14 public class GroupSelector implements Outputable {
15
16     private final String name;
17
18     private Group value = null;
19
20     private final boolean bySupporter;
21
22     public GroupSelector(String name, boolean bySupporter) {
23         this.name = HTMLEncoder.encodeHTML(name);
24         this.bySupporter = bySupporter;
25     }
26
27     public void update(HttpServletRequest r) throws GigiApiException {
28         String vS = r.getParameter(name);
29         if (vS == null) {
30             throw new GigiApiException("No value for group.");
31         }
32         try {
33             value = Group.getByString(vS);
34         } catch (IllegalArgumentException e) {
35             throw new GigiApiException("Invalid value for group.");
36         }
37     }
38
39     @Override
40     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
41         out.println("<select name='" + name + "'>");
42         for (Group g : Group.values()) {
43             if (mayManage(g)) {
44                 out.print("<option value='" + g.getDBName());
45                 if (g.equals(value)) {
46                     out.print(" selected");
47                 }
48                 out.println("'>");
49                 g.getName().output(out, l, vars);
50                 out.println("</option>");
51             }
52         }
53         out.println("</select>");
54     }
55
56     private boolean mayManage(Group g) {
57         return (bySupporter && g.isManagedBySupport()) || ( !bySupporter && g.isManagedByUser());
58     }
59
60     public Group getGroup() {
61         return value;
62     }
63 }