Skip to content

Commit 0ae76fb

Browse files
author
Christian Wansart
committed
refactorings
1 parent 5af2012 commit 0ae76fb

21 files changed

+484
-458
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ plugins {
55
}
66

77
group = 'de.cwansart'
8-
version = '1.0.2'
8+
version = '1.0.3'
99

1010
java {
1111
toolchain {
12-
languageVersion = JavaLanguageVersion.of(17)
12+
languageVersion = JavaLanguageVersion.of(21)
1313
}
1414
}
1515

src/main/java/de/cwansart/unipoll/UnipollApplication.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
66

7-
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
7+
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
88
public class UnipollApplication {
99

10-
public static void main(String[] args) {
11-
SpringApplication.run(UnipollApplication.class, args);
12-
}
10+
public static void main(String[] args) {
11+
SpringApplication.run(UnipollApplication.class, args);
12+
}
1313

1414
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package de.cwansart.unipoll.controller;
2+
3+
import java.util.Optional;
4+
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.http.HttpStatusCode;
7+
import org.springframework.stereotype.Controller;
8+
import org.springframework.ui.Model;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestParam;
12+
import org.springframework.web.server.ResponseStatusException;
13+
14+
import de.cwansart.unipoll.entity.Poll;
15+
import de.cwansart.unipoll.repository.PollRepository;
16+
import de.cwansart.unipoll.service.AuthService;
17+
18+
@Controller
19+
public class ClosePollController {
20+
@Autowired
21+
private AuthService auth;
22+
23+
@Autowired
24+
private PollRepository pollRepo;
25+
26+
@GetMapping("/close")
27+
public String confirm(@RequestParam(name = "id", required = true) long id, Model model) {
28+
if (!auth.isAuthenticated()) {
29+
return "redirect:/login?p=list";
30+
}
31+
32+
Optional<Poll> poll = pollRepo.findById(id);
33+
if (poll.isEmpty()) {
34+
throw new ResponseStatusException(HttpStatusCode.valueOf(404), "poll not found");
35+
}
36+
37+
if (poll.isPresent() && poll.get().isDeleted()) {
38+
throw new ResponseStatusException(HttpStatusCode.valueOf(400), "poll already closed");
39+
}
40+
41+
model.addAttribute("id", id);
42+
return "confirm_close";
43+
}
44+
45+
@PostMapping("/close")
46+
public String delete(@RequestParam(name = "id", required = true) long id, Model model) {
47+
if (!auth.isAuthenticated()) {
48+
return "redirect:/login?p=list";
49+
}
50+
51+
Optional<Poll> poll = pollRepo.findById(id);
52+
if (!poll.isPresent()) {
53+
throw new ResponseStatusException(HttpStatusCode.valueOf(404), "poll not found");
54+
}
55+
56+
if (poll.isPresent() && poll.get().isDeleted()) {
57+
throw new ResponseStatusException(HttpStatusCode.valueOf(400), "poll already closed");
58+
}
59+
60+
poll.get().setDeleted(true);
61+
pollRepo.save(poll.get());
62+
return "redirect:/list";
63+
}
64+
}

src/main/java/de/cwansart/unipoll/controller/CreateController.java

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -19,45 +19,45 @@
1919

2020
@Controller
2121
public class CreateController {
22-
@Autowired
23-
private AuthService auth;
24-
25-
@Autowired
26-
private PollRepository repo;
27-
28-
@GetMapping("/create")
29-
public String create(Model model) {
30-
if (!auth.isAuthenticated()) {
31-
return "redirect:/login?p=create";
32-
}
33-
model.addAttribute("createForm", new CreateForm());
34-
return "create";
35-
}
36-
37-
@PostMapping("/create")
38-
public String doCreate(@ModelAttribute("createForm") CreateForm createForm, Model model) {
39-
if (!auth.isAuthenticated()) {
40-
return "redirect:/login?p=create";
41-
}
42-
43-
// TODO: check error validation with BindingResult and @Valid with Spring Boot
44-
if (createForm.getName() == null || createForm.getName().isBlank()) {
45-
model.addAttribute("name_error", "Missing name!");
46-
model.addAttribute("form", new CreateForm());
47-
return "create";
48-
}
49-
50-
List<String> topics = Arrays.asList(createForm.getTopics().split("\\r?\\n"));
51-
if (createForm.getTopics().isBlank() || topics.isEmpty()) {
52-
model.addAttribute("topics_error", "Topics may not be empty!");
53-
model.addAttribute("form", new CreateForm());
54-
return "create";
55-
}
56-
57-
Poll poll = new Poll();
58-
poll.setName(createForm.getName());
59-
poll.setChoices(topics.stream().map(t -> new Choice(t)).collect(Collectors.toList()));
60-
poll = repo.save(poll);
61-
return "redirect:/vote?id=" + poll.getId();
62-
}
22+
@Autowired
23+
private AuthService auth;
24+
25+
@Autowired
26+
private PollRepository repo;
27+
28+
@GetMapping("/create")
29+
public String create(Model model) {
30+
if (!auth.isAuthenticated()) {
31+
return "redirect:/login?p=create";
32+
}
33+
model.addAttribute("createForm", new CreateForm());
34+
return "create";
35+
}
36+
37+
@PostMapping("/create")
38+
public String doCreate(@ModelAttribute("createForm") CreateForm createForm, Model model) {
39+
if (!auth.isAuthenticated()) {
40+
return "redirect:/login?p=create";
41+
}
42+
43+
// TODO: check error validation with BindingResult and @Valid with Spring Boot
44+
if (createForm.getName() == null || createForm.getName().isBlank()) {
45+
model.addAttribute("name_error", "Missing name!");
46+
model.addAttribute("form", new CreateForm());
47+
return "create";
48+
}
49+
50+
List<String> topics = Arrays.asList(createForm.getTopics().split("\\r?\\n"));
51+
if (createForm.getTopics().isBlank() || topics.isEmpty()) {
52+
model.addAttribute("topics_error", "Topics may not be empty!");
53+
model.addAttribute("form", new CreateForm());
54+
return "create";
55+
}
56+
57+
Poll poll = new Poll();
58+
poll.setName(createForm.getName());
59+
poll.setChoices(topics.stream().map(t -> new Choice(t)).collect(Collectors.toList()));
60+
poll = repo.save(poll);
61+
return "redirect:/vote?id=" + poll.getId();
62+
}
6363
}

src/main/java/de/cwansart/unipoll/controller/DeleteController.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

src/main/java/de/cwansart/unipoll/controller/ListController.java

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,27 @@
1616

1717
@Controller
1818
public class ListController {
19-
@Autowired
20-
private PollRepository pollRepo;
21-
22-
@Autowired
23-
private VoteRepository voteRepo;
24-
25-
@Autowired
26-
private AuthService auth;
27-
28-
@GetMapping("/list")
29-
public String showAll(@RequestParam(name = "p", defaultValue = "0") int page, Model model) {
30-
if (!auth.isAuthenticated()) {
31-
return "redirect:/login?p=list";
32-
}
33-
34-
Page<Poll> polls = pollRepo.findAll(PageRequest.of(page, 20, Sort.by(Sort.Direction.ASC, "id")));
35-
polls.getContent().forEach(p -> p.setParticipants(voteRepo.countByPollId(p.getId())));
36-
model.addAttribute("polls", polls.getContent());
37-
model.addAttribute("totalNum", polls.getTotalElements());
38-
model.addAttribute("totalPages", polls.getTotalPages());
39-
model.addAttribute("currentPage", page + 1);
40-
return "list";
41-
}
19+
@Autowired
20+
private PollRepository pollRepo;
21+
22+
@Autowired
23+
private VoteRepository voteRepo;
24+
25+
@Autowired
26+
private AuthService auth;
27+
28+
@GetMapping("/list")
29+
public String showAll(@RequestParam(name = "p", defaultValue = "0") int page, Model model) {
30+
if (!auth.isAuthenticated()) {
31+
return "redirect:/login?p=list";
32+
}
33+
34+
Page<Poll> polls = pollRepo.findAll(PageRequest.of(page, 20, Sort.by(Sort.Direction.ASC, "id")));
35+
polls.getContent().forEach(p -> p.setParticipants(voteRepo.countByPollId(p.getId())));
36+
model.addAttribute("polls", polls.getContent());
37+
model.addAttribute("totalNum", polls.getTotalElements());
38+
model.addAttribute("totalPages", polls.getTotalPages());
39+
model.addAttribute("currentPage", page + 1);
40+
return "list";
41+
}
4242
}

src/main/java/de/cwansart/unipoll/controller/LoginController.java

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,32 @@
1515

1616
@Controller
1717
public class LoginController {
18-
@Autowired
19-
private AuthService auth;
20-
21-
@GetMapping("/login")
22-
public String login(@RequestParam(name = "p", required = true) String page, Model model) {
23-
if (auth.isAuthenticated()) {
24-
return "redirect:/" + page;
25-
}
26-
model.addAttribute("loginForm", new LoginForm());
27-
model.addAttribute("page", page);
28-
return "login";
29-
}
30-
31-
@PostMapping("/login")
32-
public String doLogin(@ModelAttribute("loginForm") LoginForm loginForm, @RequestParam(name = "p", required = true) String page, Model model) {
33-
if (!auth.login(loginForm.getPassword())) {
34-
model.addAttribute("error", "Invalid password!");
35-
model.addAttribute("loginForm", new LoginForm());
36-
model.addAttribute("page", page);
37-
return "login";
38-
} else {
39-
if (!page.equals("create") && !page.equals("list")) {
40-
throw new ResponseStatusException(HttpStatusCode.valueOf(400), "unknown redirect page");
41-
}
42-
return "redirect:/" + page;
43-
}
44-
}
18+
@Autowired
19+
private AuthService auth;
20+
21+
@GetMapping("/login")
22+
public String login(@RequestParam(name = "p", required = true) String page, Model model) {
23+
if (auth.isAuthenticated()) {
24+
return "redirect:/" + page;
25+
}
26+
model.addAttribute("loginForm", new LoginForm());
27+
model.addAttribute("page", page);
28+
return "login";
29+
}
30+
31+
@PostMapping("/login")
32+
public String doLogin(@ModelAttribute("loginForm") LoginForm loginForm,
33+
@RequestParam(name = "p", required = true) String page, Model model) {
34+
if (!auth.login(loginForm.getPassword())) {
35+
model.addAttribute("error", "Invalid password!");
36+
model.addAttribute("loginForm", new LoginForm());
37+
model.addAttribute("page", page);
38+
return "login";
39+
} else {
40+
if (!page.equals("create") && !page.equals("list")) {
41+
throw new ResponseStatusException(HttpStatusCode.valueOf(400), "unknown redirect page");
42+
}
43+
return "redirect:/" + page;
44+
}
45+
}
4546
}

0 commit comments

Comments
 (0)