package com.plannaplan.responses.mappers; import java.util.List; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Course; import com.plannaplan.entities.Groups; import com.plannaplan.responses.models.AssignmentResponse; import com.plannaplan.types.GroupType; public class AssignmentResponseMappers { public static final List mapToResponse(List assignments) { return mapToResponse(assignments, null); } public static final List mapToResponse(List assignments, HashMap ammounts) { List response = new ArrayList<>(); HashMap> courses = new HashMap<>(); assignments.stream().forEach((Assignment assignment) -> { final Groups group = assignment.getGroup(); final Course course = group.getCourseId(); if (courses.get(course) == null) { courses.put(course, new ArrayList<>()); } courses.get(course).add(group); }); for (Map.Entry> entry : courses.entrySet()) { final Course course = entry.getKey(); final List courseGroups = entry.getValue(); if (courseGroups.size() == 1) { if (ammounts != null) { response.add(new AssignmentResponse(course, courseGroups.get(0), ammounts)); } else { response.add(new AssignmentResponse(course, courseGroups.get(0))); } } if (courseGroups.size() == 2) { final Groups lecture = courseGroups.stream().filter(o -> o.getType() == GroupType.LECTURE).findFirst() .get(); final Groups classes = courseGroups.stream().filter(o -> o.getType() == GroupType.CLASS).findFirst() .get(); if (ammounts != null) { response.add(new AssignmentResponse(course, lecture, classes, ammounts)); } else { response.add(new AssignmentResponse(course, lecture, classes)); } } } return response; } }