]> WPIA git - gigi.git/blob - src/club/wpia/gigi/pages/admin/support/FindUserByDomainForm.java
chg: enable support to find organisation domains
[gigi.git] / src / club / wpia / gigi / pages / admin / support / FindUserByDomainForm.java
1 package club.wpia.gigi.pages.admin.support;
2
3 import java.io.PrintWriter;
4 import java.util.Map;
5
6 import javax.servlet.http.HttpServletRequest;
7
8 import club.wpia.gigi.GigiApiException;
9 import club.wpia.gigi.dbObjects.CertificateOwner;
10 import club.wpia.gigi.dbObjects.Domain;
11 import club.wpia.gigi.dbObjects.Organisation;
12 import club.wpia.gigi.dbObjects.User;
13 import club.wpia.gigi.localisation.Language;
14 import club.wpia.gigi.output.template.Form;
15 import club.wpia.gigi.output.template.SprintfCommand;
16 import club.wpia.gigi.output.template.Template;
17
18 public class FindUserByDomainForm extends Form {
19
20     public static class FindDomainResult extends SuccessMessageResult {
21
22         private final CertificateOwner owner;
23
24         public FindDomainResult(CertificateOwner owner) {
25             super(null);
26             this.owner = owner;
27         }
28
29         public CertificateOwner getOwner() {
30             return owner;
31         }
32     }
33
34     private CertificateOwner res = null;
35
36     private static final Template t = new Template(FindUserByDomainForm.class.getResource("FindUserByDomainForm.templ"));
37
38     public FindUserByDomainForm(HttpServletRequest hsr) {
39         super(hsr);
40     }
41
42     @Override
43     public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
44         String request = req.getParameter("domain");
45         Domain d = null;
46         if (request.matches("#[0-9]+")) {
47             try {
48                 d = Domain.getById(Integer.parseInt(request.substring(1)));
49             } catch (IllegalArgumentException e) {
50                 throw new GigiApiException(SprintfCommand.createSimple("No personal domains found matching the id {0}", request.substring(1)));
51             }
52         } else {
53             d = Domain.searchDomain(request);
54         }
55         if (d == null) {
56             throw new GigiApiException(SprintfCommand.createSimple("No personal domains found matching {0}", request));
57         }
58         res = d.getOwner();
59         if (res instanceof User) {
60             return new RedirectResult(SupportUserDetailsPage.PATH + res.getId() + "/");
61         } else if (res instanceof Organisation) {
62             return new RedirectResult(SupportOrgDomainPage.PATH + d.getId());
63         } else {
64             throw new PermamentFormException(new GigiApiException("Unknown owner type."));
65         }
66     }
67
68     @Override
69     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
70         t.output(out, l, vars);
71     }
72
73     public CertificateOwner getRes() {
74         return res;
75     }
76
77 }