WIP
[demos/spring-boot] / src / main / java / de / juplo / demo / DemoController.java
1 package de.juplo.demo;
2
3
4 import java.util.HashMap;
5 import java.util.Map;
6 import org.slf4j.Logger;
7 import org.slf4j.LoggerFactory;
8 import org.springframework.stereotype.Controller;
9 import org.springframework.web.bind.annotation.ModelAttribute;
10 import org.springframework.web.bind.annotation.RequestMapping;
11 import org.springframework.web.bind.annotation.RequestParam;
12
13
14 /**
15  *
16  * @author Kai Moritz
17  */
18 @Controller
19 public class DemoController
20 {
21   private static final Logger LOG =
22       LoggerFactory.getLogger(DemoController.class);
23
24
25   @RequestMapping("/")
26   public String display(
27       @ModelAttribute("form") Map<Integer, Map<String, Boolean>> form)
28   {
29     for (Integer id : form.keySet())
30       for (String entry : form.get(id).keySet())
31         LOG.info("{} - {}: {}", id, entry, form.get(id).get(entry));
32
33     return "form";
34   }
35
36   @RequestMapping(path = "/", params = "row")
37   public String addRow(
38       @ModelAttribute("form") Map<Integer, Map<String, Boolean>> form,
39       @RequestParam Integer row)
40   {
41     LOG.info("Adding row #{}", row);
42     form.put(row, new HashMap<>());
43     return "form";
44   }
45
46   @RequestMapping(path = "/", params = "row")
47   public String removeRow(
48       @ModelAttribute("form") Map<Integer, Map<String, Boolean>> form,
49       @RequestParam Integer row)
50   {
51     Map<String, Boolean> content = form.remove(row);
52     LOG.info("Removed row #{} with content: {}", row, content);
53     return "form";
54   }
55
56   @RequestMapping(path = "/", params = { "row", "entry" })
57   public String addEntry(
58       @ModelAttribute("form") Map<Integer, Map<String, Boolean>> form,
59       @RequestParam Integer row,
60       @RequestParam String entry)
61   {
62     LOG.info("Adding entry {} to row #{}", entry, row);
63     form.get(row).put(entry, Boolean.FALSE);
64     return "form";
65   }
66
67   @RequestMapping(path = "/", params = { "row", "entry" })
68   public String removeEntry(
69       @ModelAttribute("form") Map<Integer, Map<String, Boolean>> form,
70       @RequestParam Integer row,
71       @RequestParam String entry)
72   {
73     Boolean value = form.get(row).remove(entry);
74     LOG.info("Removed entry {} with value {} from row #{}", entry, value, row);
75     return "form";
76   }
77 }