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 0000000000000000000000000000000000000000..62a2ff552c3a8665d0a652d06fcfb5d21c8c2965 --- /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 0000000000000000000000000000000000000000..59153f3469b66350a17efb9b60c7e9371406c805 --- /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 0000000000000000000000000000000000000000..389718300534580d763e49262089512b5b58b310 --- /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; +}