]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/MyOrganisationsForm.java
706e95976d0b4222e4541cbef277d23228891af2
[gigi.git] / src / org / cacert / gigi / pages / account / MyOrganisationsForm.java
1 package org.cacert.gigi.pages.account;
2
3 import java.io.PrintWriter;
4 import java.util.Enumeration;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.Map;
8
9 import javax.servlet.http.HttpServletRequest;
10
11 import org.cacert.gigi.Gigi;
12 import org.cacert.gigi.dbObjects.Organisation;
13 import org.cacert.gigi.localisation.Language;
14 import org.cacert.gigi.output.template.Form;
15 import org.cacert.gigi.output.template.IterableDataset;
16 import org.cacert.gigi.output.template.Template;
17 import org.cacert.gigi.pages.LoginPage;
18 import org.cacert.gigi.util.AuthorizationContext;
19
20 public class MyOrganisationsForm extends Form {
21
22     private AuthorizationContext target;
23
24     public MyOrganisationsForm(HttpServletRequest hsr) {
25         super(hsr);
26         target = LoginPage.getAuthorizationContext(hsr);
27     }
28
29     private static final Template template = new Template(MyOrganisationsForm.class.getResource("MyOrganisationsForm.templ"));
30
31     @Override
32     public boolean submit(PrintWriter out, HttpServletRequest req) {
33         if (req.getParameter("org-leave") != null) {
34             req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(target.getActor(), target.getActor()));
35             return true;
36         }
37         Enumeration<String> i = req.getParameterNames();
38         int orgId = -1;
39         while (i.hasMoreElements()) {
40             String s = i.nextElement();
41             if (s.startsWith("org:")) {
42                 int id = Integer.parseInt(s.substring(4));
43                 if (orgId == -1) {
44                     orgId = id;
45                 } else {
46                     out.println(LoginPage.getLanguage(req).getTranslation("Error: invalid parameter."));
47                     return false;
48                 }
49             }
50         }
51         for (Organisation org : target.getActor().getOrganisations()) {
52             if (org.getId() == orgId) {
53
54                 req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(org, target.getActor()));
55                 return true;
56             }
57         }
58         System.out.println("Switch fialed");
59         return false;
60     }
61
62     @Override
63     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
64         final List<Organisation> o = target.getActor().getOrganisations();
65         if (target.getTarget() != target.getActor()) {
66             vars.put("personal", target.getTarget() != target.getActor());
67         }
68         vars.put("orgas", new IterableDataset() {
69
70             Iterator<Organisation> it = o.iterator();
71
72             @Override
73             public boolean next(Language l, Map<String, Object> vars) {
74                 if ( !it.hasNext()) {
75                     return false;
76                 }
77                 Organisation o = it.next();
78                 vars.put("orgName", o.getName());
79                 vars.put("orgID", o.getId());
80                 return true;
81             }
82         });
83         template.output(out, l, vars);
84
85     }
86
87 }