From 29851dac0d0ba307ab771e24655762a8f12a1933 Mon Sep 17 00:00:00 2001 From: Filip Izydorczyk Date: Fri, 9 Oct 2020 14:53:54 +0200 Subject: [PATCH] Courses Controller getCourses Mapping --- .../controllers/CoursesController.java | 13 +++------ .../mappers/CoursesResponseMappers.java | 14 ++++++++++ .../responses/models/CoursesResponse.java | 23 ++++++++++++++++ .../mappers/CoursesResponseMappersTest.java | 23 ++++++++++++++++ .../responses/models/CoursesResponseTest.java | 27 +++++++++++++++++++ 5 files changed, 91 insertions(+), 9 deletions(-) create mode 100755 restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java create mode 100755 restservice/src/main/java/com/plannaplan/responses/models/CoursesResponse.java create mode 100755 restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java create mode 100755 restservice/src/test/java/com/plannaplan/responses/models/CoursesResponseTest.java diff --git a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java index e56e294..9813008 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CoursesController.java @@ -8,6 +8,8 @@ import java.util.List; import com.plannaplan.App; import com.plannaplan.entities.Course; import com.plannaplan.entities.Groups; +import com.plannaplan.responses.mappers.CoursesResponseMappers; +import com.plannaplan.responses.models.CoursesResponse; import com.plannaplan.services.CourseService; import org.springframework.beans.factory.annotation.Autowired; @@ -26,16 +28,9 @@ public class CoursesController { private CourseService courseService; @GetMapping("/getCourses") - public ResponseEntity>> getMethodName() { + public ResponseEntity> getMethodName() { List courses = this.courseService.getAllCourses(); - List> response = new ArrayList<>(); - for (Course c : courses) { - Dictionary element = new Hashtable<>(); - element.put("id", c.getId()); - element.put("name", c.getName()); - response.add(element); - } - + List response = CoursesResponseMappers.mapCoursesListToCoursesResponseList(courses); return new ResponseEntity<>(response, HttpStatus.OK); } diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java new file mode 100755 index 0000000..304018f --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/CoursesResponseMappers.java @@ -0,0 +1,14 @@ +package com.plannaplan.responses.mappers; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import com.plannaplan.entities.Course; +import com.plannaplan.responses.models.CoursesResponse; + +public class CoursesResponseMappers { + public static final List mapCoursesListToCoursesResponseList(List courses) { + return courses.stream().filter(Objects::nonNull).map(CoursesResponse::new).collect(Collectors.toList()); + } +} diff --git a/restservice/src/main/java/com/plannaplan/responses/models/CoursesResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/CoursesResponse.java new file mode 100755 index 0000000..092ea33 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/CoursesResponse.java @@ -0,0 +1,23 @@ +package com.plannaplan.responses.models; + +import com.plannaplan.entities.Course; + +public class CoursesResponse { + + private Long id; + private String name; + + public CoursesResponse(Course course) { + this.id = course.getId() != null ? course.getId() : null; + this.name = course.getName() != null ? course.getName() : ""; + } + + public String getName() { + return name; + } + + public Long getId() { + return id; + } + +} diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java new file mode 100755 index 0000000..014fdff --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/CoursesResponseMappersTest.java @@ -0,0 +1,23 @@ +package com.plannaplan.responses.mappers; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import com.plannaplan.entities.Course; +import com.plannaplan.responses.models.CoursesResponse; + +import org.junit.Test; + +public class CoursesResponseMappersTest { + @Test + public void shouldMapListCoursesToResponseList() { + final List courses = Arrays.asList(new Course(), new Course()); + final List response = CoursesResponseMappers.mapCoursesListToCoursesResponseList(courses); + + assertTrue(response.size() == 2); + assertTrue(response.get(0) instanceof CoursesResponse); + + } +} diff --git a/restservice/src/test/java/com/plannaplan/responses/models/CoursesResponseTest.java b/restservice/src/test/java/com/plannaplan/responses/models/CoursesResponseTest.java new file mode 100755 index 0000000..cb8cee4 --- /dev/null +++ b/restservice/src/test/java/com/plannaplan/responses/models/CoursesResponseTest.java @@ -0,0 +1,27 @@ +package com.plannaplan.responses.models; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.plannaplan.entities.Course; + +import org.junit.Test; + +public class CoursesResponseTest { + @Test + public void shouldMapFilledCourse() { + final Course course = new Course("Test", "XD"); + final CoursesResponse response = new CoursesResponse(course); + + assertTrue(response.getId() == null); + assertTrue(response.getName().equals("Test")); + } + + @Test + public void shouldMapEmptyCourse() { + final Course course = new Course(); + final CoursesResponse response = new CoursesResponse(course); + + assertTrue(response.getId() == null); + assertTrue(response.getName().equals("")); + } +}