Mapping of getCourseGroups

Signed-off-by: Marcin Woźniak <y0rune@aol.com>
This commit is contained in:
2020-10-20 19:02:18 +02:00
parent a20bc89fc6
commit 603dadd9c1
6 changed files with 95 additions and 43 deletions

View File

@ -6,6 +6,7 @@ import com.plannaplan.App;
import com.plannaplan.entities.Groups;
import com.plannaplan.responses.mappers.GroupsMappers;
import com.plannaplan.responses.models.DefaultGroupResponse;
import com.plannaplan.responses.models.GetCourseGroupsResponse;
import com.plannaplan.services.GroupService;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,12 +26,12 @@ public class GroupController {
private GroupService groupService;
@GetMapping("/getCourseGroups")
public ResponseEntity<List<? extends DefaultGroupResponse>> getCourses(@RequestParam("id") Long id,
public ResponseEntity<GetCourseGroupsResponse<? extends DefaultGroupResponse>> getCourses(@RequestParam("id") Long id,
@RequestParam(name = "capacity", defaultValue = "true") Boolean capacity) {
List<Groups> groups = this.groupService.getGroupsByCourse(id);
if (capacity) {
return new ResponseEntity<>(GroupsMappers.mapToCapacityResponse(groups), HttpStatus.OK);
return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups), HttpStatus.OK);
}
return new ResponseEntity<>(GroupsMappers.mapToDefaultResponse(groups), HttpStatus.OK);
return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsDefaultResponse(groups), HttpStatus.OK);
}
}

View File

@ -1,12 +1,15 @@
package com.plannaplan.responses.mappers;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.plannaplan.entities.Groups;
import com.plannaplan.responses.models.DefaultGroupResponse;
import com.plannaplan.responses.models.GetCourseGroupsResponse;
import com.plannaplan.responses.models.WithCapacityGroupResponse;
import com.plannaplan.types.GroupType;
public class GroupsMappers {
public static List<DefaultGroupResponse> mapToDefaultResponse(List<Groups> groups) {
@ -17,4 +20,39 @@ public class GroupsMappers {
return groups.stream().filter(Objects::nonNull).map(WithCapacityGroupResponse::new)
.collect(Collectors.toList());
}
public static GetCourseGroupsResponse<DefaultGroupResponse> mapToGetCourseGroupsDefaultResponse (List<Groups> groups){
List<DefaultGroupResponse> lectures = new ArrayList<>();
List<DefaultGroupResponse> classes = new ArrayList<>();
groups.stream().forEach(group -> {
if (group.getType() == GroupType.CLASS) {
classes.add(new DefaultGroupResponse(group));
} else {
lectures.add(new DefaultGroupResponse(group));
}
});
return new GetCourseGroupsResponse<>(classes, lectures);
}
public static GetCourseGroupsResponse<WithCapacityGroupResponse> mapToGetCourseGroupsWithCapacityResponse (List<Groups> groups){
List<WithCapacityGroupResponse> lectures = new ArrayList<>();
List<WithCapacityGroupResponse> classes = new ArrayList<>();
groups.stream().forEach(group -> {
if (group.getType() == GroupType.CLASS) {
classes.add(new WithCapacityGroupResponse(group));
} else {
lectures.add(new WithCapacityGroupResponse(group));
}
});
return new GetCourseGroupsResponse<>(classes, lectures);
}
}

View File

@ -3,29 +3,21 @@ package com.plannaplan.responses.models;
import java.util.ArrayList;
import java.util.List;
import com.plannaplan.entities.Groups;
import com.plannaplan.types.GroupType;
public class GetCourseGroupsResponse <T> {
public class GetCourseGroupsResponse {
private List<T> lectures = new ArrayList<>();
private List<T> classes = new ArrayList<>();
private List<DefaultGroupResponse> lectures = new ArrayList<>();
private List<DefaultGroupResponse> classes = new ArrayList<>();
public GetCourseGroupsResponse(List<Groups> groups ){
groups.stream().forEach(group -> {
if (group.getType() == GroupType.CLASS) {
this.classes.add(new DefaultGroupResponse(group));
} else {
this.lectures.add(new DefaultGroupResponse(group));
}
});
public GetCourseGroupsResponse(List<T> classes, List<T> lectures ){
this.lectures = lectures;
this.classes = classes;
}
public List<DefaultGroupResponse> getClasses() {
public List<T> getClasses() {
return this.classes;
}
public List<DefaultGroupResponse> getLectures() {
public List<T> getLectures() {
return this.lectures;
}