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(path = "/", params = { "!card", "!add", "!remove" })
26   public String display(@ModelAttribute Form form)
27   {
28     for (Integer id : form.cards.keySet())
29       for (String entry : form.cards.get(id).keySet())
30         LOG.info("{} - {}: {}", id, entry, form.cards.get(id).get(entry));
31
32     return "form";
33   }
34
35   @RequestMapping(path = "/", params = "card=add")
36   public String addCard(@ModelAttribute Form form)
37   {
38     Integer next =
39         form.cards
40             .keySet()
41             .stream()
42             .reduce(0, (a, b) -> a > b ? a : b) + 1;
43
44     LOG.info("Adding new card #{}", next);
45     form.cards.put(next, new HashMap<>());
46     return "form";
47   }
48
49   @RequestMapping(path = "/", params = "card!=add")
50   public String removeCard(@ModelAttribute Form form, @RequestParam Integer card)
51   {
52     Map<String, Boolean> content = form.cards.remove(card);
53     LOG.info("Removed card #{} with content: {}", card, content);
54     return "form";
55   }
56
57   @RequestMapping(path = "/", params = "add")
58   public String addRow(@ModelAttribute Form form, @RequestParam Integer add)
59   {
60     LOG.info("Adding row {} to card #{}", form.row.get(add), add);
61     form.cards.get(add).put(form.row.get(add), Boolean.FALSE);
62     return "form";
63   }
64
65   @RequestMapping(path = "/", params = "remove")
66   public String removeRow(@ModelAttribute Form form, @RequestParam String remove)
67   {
68     String[] parts = remove.split(":", 2);
69     Integer card = Integer.valueOf(parts[0]);
70     String row = parts[1];
71     Boolean value = form.cards.get(card).remove(row);
72     LOG.info("Removed row {} with value {} from card #{}", row, value, card);
73     return "form";
74   }
75 }