1 package com.atlassian.refapp.charlie;
2
3 import com.atlassian.plugin.web.WebInterfaceManager;
4 import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory;
5 import com.atlassian.sal.api.websudo.WebSudoManager;
6 import com.atlassian.sal.api.websudo.WebSudoSessionException;
7 import com.atlassian.templaterenderer.TemplateRenderer;
8
9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import java.io.IOException;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16
17 import static com.google.common.base.Preconditions.checkNotNull;
18
19 public class CharlieAdminServlet extends CharlieServlet {
20
21 private final WebSudoManager webSudoManager;
22
23 public CharlieAdminServlet(PluginSettingsFactory pluginSettingsFactory, TemplateRenderer templateRenderer,
24 WebInterfaceManager webInterfaceManager, final WebSudoManager webSudoManager,
25 CharlieStore store) {
26 super(pluginSettingsFactory, templateRenderer, webInterfaceManager, store);
27 this.webSudoManager = checkNotNull(webSudoManager);
28 }
29
30 @Override
31 protected void doGet(HttpServletRequest request, HttpServletResponse response)
32 throws ServletException, IOException {
33 try {
34 webSudoManager.willExecuteWebSudoRequest(request);
35
36 final Map<String, Object> context = new HashMap<String, Object>();
37 final String delete = request.getParameter("delete");
38 if (delete == null) {
39 final Map<String, String> charlies = new HashMap<String, String>();
40 for (String charlie : store.getCharlies()) {
41 charlies.put(charlie, store.getCharlieName(charlie));
42 }
43 context.put("charlies", charlies);
44 render("/templates/charliesadmin.vm", context, response);
45 } else {
46 final List<String> charlies = store.getCharlies();
47 charlies.remove(delete);
48 store.storeCharlies(charlies);
49 response.sendRedirect(request.getRequestURL().toString());
50 }
51 } catch (WebSudoSessionException wse) {
52 webSudoManager.enforceWebSudoProtection(request, response);
53 }
54 }
55
56 @Override
57 protected void doPost(HttpServletRequest request, HttpServletResponse response)
58 throws ServletException, IOException {
59 try {
60 webSudoManager.willExecuteWebSudoRequest(request);
61
62 final String key = request.getParameter("key");
63 final String name = request.getParameter("name");
64 final List<String> charlies = store.getCharlies();
65 charlies.add(key);
66 store.storeCharlies(charlies);
67 store.setCharlieName(key, name);
68 response.sendRedirect(request.getRequestURL().toString());
69 } catch (WebSudoSessionException wse) {
70
71 webSudoManager.enforceWebSudoProtection(request, response);
72 }
73 }
74 }