Improved comment and added button for generation.
This commit is contained in:
parent
ac18001da8
commit
a629b70d8b
|
@ -1,17 +1,13 @@
|
|||
package nl.andrewlalis.teaching_assistant_assistant;
|
||||
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.Course;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.repositories.CourseRepository;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.repositories.PersonRepository;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.repositories.TeamRepository;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.util.sample_data.CourseGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootApplication
|
||||
public class TeachingAssistantAssistantApplication implements CommandLineRunner {
|
||||
|
||||
|
@ -32,13 +28,5 @@ public class TeachingAssistantAssistantApplication implements CommandLineRunner
|
|||
public void run(String... args) throws Exception {
|
||||
System.out.println("Running startup...");
|
||||
|
||||
// Generate some example courses.
|
||||
CourseGenerator courseGenerator = new CourseGenerator(0, 3, 2, 10, 3);
|
||||
|
||||
List<Course> courses = courseGenerator.generateList(100);
|
||||
this.courseRepository.saveAll(courses);
|
||||
|
||||
System.out.println("Course count: " + courseRepository.count());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,20 +20,30 @@ public class Courses {
|
|||
this.courseRepository = courseRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles requests to get the list of courses.
|
||||
* @param model The view model to populate with data for the template.
|
||||
* @return The name of the template that will be used with the given model to build the view.
|
||||
*/
|
||||
@GetMapping("/courses")
|
||||
public String get(Model model) {
|
||||
model.addAttribute("courses", courseRepository.findAll());
|
||||
return "courses";
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles POST requests to this collection of courses. This facilitates the creation of new courses.
|
||||
* @param course The course which has been submitted by a user.
|
||||
* @return The entity view for the course which has just been created.
|
||||
*/
|
||||
@PostMapping(
|
||||
value = "/courses",
|
||||
consumes = "application/json"
|
||||
consumes = "application/x-www-form-urlencoded"
|
||||
)
|
||||
public String post(@ModelAttribute Course course) {
|
||||
System.out.println("Object submitted: " + course);
|
||||
this.courseRepository.save(course);
|
||||
return "/courses/created";
|
||||
return "courses/entity";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package nl.andrewlalis.teaching_assistant_assistant.controllers.courses;
|
||||
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.Course;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.repositories.CourseRepository;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
@Controller
|
||||
public class Create {
|
||||
|
||||
private CourseRepository courseRepository;
|
||||
|
||||
protected Create(CourseRepository courseRepository) {
|
||||
this.courseRepository = courseRepository;
|
||||
}
|
||||
|
||||
@GetMapping("/courses/create")
|
||||
public String get(Model model) {
|
||||
Course course = new Course("no name", "no code");
|
||||
model.addAttribute("course", course);
|
||||
return "courses/create";
|
||||
}
|
||||
}
|
|
@ -9,6 +9,9 @@ import org.springframework.web.bind.annotation.PathVariable;
|
|||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Controller for the course entity, that is, one individual course.
|
||||
*/
|
||||
@Controller
|
||||
public class Entity {
|
||||
|
||||
|
@ -18,9 +21,16 @@ public class Entity {
|
|||
this.courseRepository = courseRepository;
|
||||
}
|
||||
|
||||
@GetMapping("/courses/{id}")
|
||||
public String get(@PathVariable Long id, Model model) {
|
||||
Optional<Course> courseOptional = this.courseRepository.findById(id);
|
||||
/**
|
||||
* Handles get requests to a course with a given code.
|
||||
* @param code The unique course code used to identify a course entity.
|
||||
* @param model The view model that will be populated with data.
|
||||
* @return The template which will be used in conjunction with the model to build a view.
|
||||
*/
|
||||
@GetMapping("/courses/{code}")
|
||||
public String get(@PathVariable String code, Model model) {
|
||||
Optional<Course> courseOptional = this.courseRepository.findByCode(code);
|
||||
|
||||
if (courseOptional.isPresent()) {
|
||||
Course course = courseOptional.get();
|
||||
model.addAttribute("course", course);
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package nl.andrewlalis.teaching_assistant_assistant.controllers.courses;
|
||||
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.Course;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.model.repositories.CourseRepository;
|
||||
import nl.andrewlalis.teaching_assistant_assistant.util.sample_data.CourseGenerator;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
public class Generate {
|
||||
|
||||
private CourseRepository courseRepository;
|
||||
|
||||
protected Generate(CourseRepository courseRepository) {
|
||||
this.courseRepository = courseRepository;
|
||||
}
|
||||
|
||||
@GetMapping("/courses/generate")
|
||||
public String get(Model model) {
|
||||
CourseGenerator courseGenerator = new CourseGenerator(0, 3, 2, 10, 3);
|
||||
|
||||
List<Course> courses = courseGenerator.generateList(5);
|
||||
this.courseRepository.saveAll(courses);
|
||||
|
||||
model.addAttribute("courses", courseRepository.findAll());
|
||||
return "courses";
|
||||
}
|
||||
|
||||
}
|
|
@ -4,9 +4,18 @@ import nl.andrewlalis.teaching_assistant_assistant.model.Course;
|
|||
import org.springframework.data.repository.CrudRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* The repository used to interact with various Course objects.
|
||||
*/
|
||||
@Repository
|
||||
public interface CourseRepository extends CrudRepository<Course, Long> {
|
||||
|
||||
/**
|
||||
* Finds a course by its unique code.
|
||||
* @param code A unique code which identifies a course.
|
||||
* @return An optional object that may contain the course identified by the given code.
|
||||
*/
|
||||
Optional<Course> findByCode(String code);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</tr>
|
||||
<tr th:each="course: ${courses}">
|
||||
<td>
|
||||
<a th:href="@{/courses/{id}(id=${course.getId()})}" th:text="${course.getName()}"></a>
|
||||
<a th:href="@{/courses/{code}(code=${course.getCode()})}" th:text="${course.getName()}"></a>
|
||||
</td>
|
||||
<td th:text="${course.getCode()}"></td>
|
||||
<td th:text="${course.getCreatedOn()}"></td>
|
||||
|
@ -24,7 +24,7 @@
|
|||
|
||||
<div id="sidebar">
|
||||
<div class="sidebar_block">
|
||||
Create new course
|
||||
<a href="/courses/create">Create new course</a>
|
||||
</div>
|
||||
<div class="sidebar_block">
|
||||
Do something else
|
||||
|
|
|
@ -1,10 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html xmlns:th="http://www.thymeleaf.org" th:replace="~{layouts/basic_page :: layout (~{::title}, ~{::#content}, ~{::#sidebar})}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
<title>Create a Course</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="content">
|
||||
<p>
|
||||
Create your course here
|
||||
</p>
|
||||
<form action="#" th:action="@{/courses}" th:object="${course}" method="post">
|
||||
<label for="course_name_input">Name:</label>
|
||||
<input id="course_name_input" type="text" th:field="*{name}"/>
|
||||
<label for="course_code_input">Code:</label>
|
||||
<input id="course_code_input" type="text" th:field="*{code}"/>
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="sidebar">
|
||||
<div class="sidebar_block">
|
||||
block
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -15,8 +15,8 @@
|
|||
<div class="sidebar_block">
|
||||
This is an example sidebar block.
|
||||
</div>
|
||||
<div class="sidebar_block">
|
||||
Click here to generate courses.
|
||||
<div id="generate_courses_block" class="sidebar_block">
|
||||
<a href="/courses/generate">Click here to generate courses.</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue