From aed6e92d06d862e16881df7c4a707800ea0951f5 Mon Sep 17 00:00:00 2001 From: "M. Margaretha Stella" <stellaa.mmskdt@gmail.com> Date: Sun, 13 Feb 2022 01:23:02 +0700 Subject: [PATCH] Implement student page --- .../controller/StudentController.java | 46 +++++++++++++++++++ .../DuplicateStudentNameException.java | 7 +++ .../cs/advprog/turorial0/model/Student.java | 12 +++++ 3 files changed, 65 insertions(+) create mode 100644 src/main/java/id/ac/ui/cs/advprog/turorial0/controller/StudentController.java create mode 100644 src/main/java/id/ac/ui/cs/advprog/turorial0/exception/DuplicateStudentNameException.java create mode 100644 src/main/java/id/ac/ui/cs/advprog/turorial0/model/Student.java diff --git a/src/main/java/id/ac/ui/cs/advprog/turorial0/controller/StudentController.java b/src/main/java/id/ac/ui/cs/advprog/turorial0/controller/StudentController.java new file mode 100644 index 0000000..62a2ff5 --- /dev/null +++ b/src/main/java/id/ac/ui/cs/advprog/turorial0/controller/StudentController.java @@ -0,0 +1,46 @@ +package id.ac.ui.cs.advprog.turorial0.controller; + +import id.ac.ui.cs.advprog.turorial0.exception.DuplicateStudentNameException; +import id.ac.ui.cs.advprog.turorial0.model.Student; +import id.ac.ui.cs.advprog.turorial0.service.StudentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Controller +@RequestMapping("/student") +public class StudentController { + + @Autowired + private StudentService service; + + @GetMapping("/list") + public String studentListPage(Model model) { + List<Student> allStudents = service.findAll(); + model.addAttribute("students", allStudents); + return "studentList"; + } + + @GetMapping("/create") + public String createStudentPage(Model model) { + Student student = new Student(); + model.addAttribute("student", student); + return "createStudent"; + } + + @PostMapping("/create") + public String createStudentPost(@ModelAttribute Student student, Model model) { + try { + service.create(student); + } catch (DuplicateStudentNameException e) { + model.addAttribute("error", e); + model.addAttribute("student", student); + return "createStudent"; + } + return "redirect:list"; + } + +} \ No newline at end of file diff --git a/src/main/java/id/ac/ui/cs/advprog/turorial0/exception/DuplicateStudentNameException.java b/src/main/java/id/ac/ui/cs/advprog/turorial0/exception/DuplicateStudentNameException.java new file mode 100644 index 0000000..59153f3 --- /dev/null +++ b/src/main/java/id/ac/ui/cs/advprog/turorial0/exception/DuplicateStudentNameException.java @@ -0,0 +1,7 @@ +package id.ac.ui.cs.advprog.turorial0.exception; + +public class DuplicateStudentNameException extends RuntimeException { + public DuplicateStudentNameException(String studentName) { + super(String.format("The student name %s is a duplicate!", studentName)); + } +} \ No newline at end of file diff --git a/src/main/java/id/ac/ui/cs/advprog/turorial0/model/Student.java b/src/main/java/id/ac/ui/cs/advprog/turorial0/model/Student.java new file mode 100644 index 0000000..3897183 --- /dev/null +++ b/src/main/java/id/ac/ui/cs/advprog/turorial0/model/Student.java @@ -0,0 +1,12 @@ +package id.ac.ui.cs.advprog.turorial0.model; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Student { + private String name; + private String npm; + private String address; +} -- GitLab