package com.plannaplan.responses.models; import java.util.ArrayList; import java.util.List; import com.plannaplan.entities.Course; import com.plannaplan.responses.models.abstracts.CoursesResponse; import com.plannaplan.types.GroupType; import io.swagger.annotations.ApiModel; /** * Courses With Groups Api Response . It extends abstract response - * CoursesResponse. It was one of first repsones created in system. Later we * resigned from asbstract and used settig * spring.jackson.default-property-inclusion = NON_NULL in * properties instead. */ @ApiModel(description = "Response shows information about groups to given course.", value = "CoursesWithGroupsResponse") public class CoursesWithGroupsResponse extends CoursesResponse { private List lectures = new ArrayList<>(); private List classes = new ArrayList<>(); /** * create new instance * * @param course course to map to api response */ public CoursesWithGroupsResponse(Course course) { super(course); course.getGroups().stream().forEach(group -> { if (GroupType.isLectureOrClass(group.getType()) == GroupType.CLASS) { this.classes.add(new GroupWithCapacityResponse(group)); } else { this.lectures.add(new GroupWithCapacityResponse(group)); } }); } /** * * @param course course to map to api response * @param lectures list of api resposnes of lectures * @param classes list of api resposnes of classes */ public CoursesWithGroupsResponse(Course course, List lectures, List classes) { super(course); this.lectures = lectures; this.classes = classes; } /** * @return list of api resposnes of classes */ public List getClasses() { return this.classes; } /** * @return list of api resposnes of lectures */ public List getLectures() { return this.lectures; } }