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.GroupDefaultResponse; import com.plannaplan.responses.models.CourseWithGroupsResponse; import com.plannaplan.responses.models.GroupWithCapacityResponse; import com.plannaplan.types.GroupType; public class GroupsMappers { public static List mapToDefaultResponse(List groups) { return groups.stream().filter(Objects::nonNull).map(GroupDefaultResponse::new).collect(Collectors.toList()); } public static List mapToCapacityResponse(List groups) { return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) .collect(Collectors.toList()); } public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse( List groups) { List lectures = new ArrayList<>(); List classes = new ArrayList<>(); groups.stream().forEach(group -> { if (group.getType() == GroupType.CLASS) { classes.add(new GroupDefaultResponse(group)); } else { lectures.add(new GroupDefaultResponse(group)); } }); return new CourseWithGroupsResponse<>(classes, lectures); } public static CourseWithGroupsResponse mapToGetCourseGroupsWithCapacityResponse( List groups) { List lectures = new ArrayList<>(); List classes = new ArrayList<>(); groups.stream().forEach(group -> { if (group.getType() == GroupType.CLASS) { classes.add(new GroupWithCapacityResponse(group)); } else { lectures.add(new GroupWithCapacityResponse(group)); } }); return new CourseWithGroupsResponse<>(classes, lectures); } }