60 lines
2.3 KiB
Java
Executable File
60 lines
2.3 KiB
Java
Executable File
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<AssignmentResponse> mapToResponse(List<Assignment> assignments) {
|
|
return mapToResponse(assignments, null);
|
|
}
|
|
|
|
public static final List<AssignmentResponse> mapToResponse(List<Assignment> assignments,
|
|
HashMap<Long, Integer> ammounts) {
|
|
List<AssignmentResponse> response = new ArrayList<>();
|
|
HashMap<Course, List<Groups>> 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<Course, List<Groups>> entry : courses.entrySet()) {
|
|
final Course course = entry.getKey();
|
|
final List<Groups> 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;
|
|
}
|
|
}
|