Group capacity response places overload

This commit is contained in:
BuildTools 2020-11-30 12:35:35 +01:00
parent 593084aeba
commit 25e9571a06
3 changed files with 50 additions and 2 deletions

View File

@ -31,9 +31,25 @@ public class GroupsMappers {
return GroupsMappers.mapToDefaultResponse(groups, null); return GroupsMappers.mapToDefaultResponse(groups, null);
} }
public static List<GroupWithCapacityResponse> mapToCapacityResponse(List<Groups> groups,
HashMap<Long, Integer> taken) {
// return
// groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new)
// .collect(Collectors.toList());
return groups.stream().filter(Objects::nonNull).map(new Function<Groups, GroupWithCapacityResponse>() {
@Override
public GroupWithCapacityResponse apply(Groups p) {
if (taken != null) {
return new GroupWithCapacityResponse(p, taken.get(p.getId()));
} else {
return new GroupWithCapacityResponse(p);
}
}
}).collect(Collectors.toList());
}
public static List<GroupWithCapacityResponse> mapToCapacityResponse(List<Groups> groups) { public static List<GroupWithCapacityResponse> mapToCapacityResponse(List<Groups> groups) {
return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) return GroupsMappers.mapToCapacityResponse(groups, null);
.collect(Collectors.toList());
} }
public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse( public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse(

View File

@ -23,6 +23,10 @@ public class GroupWithCapacityResponse extends GroupDefaultResponse {
this(assignment.getGroup()); this(assignment.getGroup());
} }
public GroupWithCapacityResponse(Assignment assignment, int takenPlaces) {
this(assignment.getGroup(), takenPlaces);
}
public int getCapacity() { public int getCapacity() {
return capacity; return capacity;
} }

View File

@ -78,4 +78,32 @@ public class GroupsMappersTest {
assertTrue(response.get(1).getTakenPlaces() == 56); assertTrue(response.get(1).getTakenPlaces() == 56);
} }
@Test
public void shouldMapToCapacityResponseWithTakenPlace()
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
final Field reader = Groups.class.getDeclaredField("id");
reader.setAccessible(true);
final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki"));
final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki"));
reader.set(group1, Long.valueOf(0));
reader.set(group2, Long.valueOf(1));
final HashMap<Long, Integer> placeMap = new HashMap<>();
placeMap.put(Long.valueOf(0), 5);
placeMap.put(Long.valueOf(1), 56);
final List<GroupWithCapacityResponse> response = GroupsMappers.mapToCapacityResponse(List.of(group1, group2),
placeMap);
assertTrue(response.size() == 2);
assertTrue(response.get(0).getTakenPlaces() == 5);
assertTrue(response.get(0).getCapacity() == 150);
assertTrue(response.get(1).getTakenPlaces() == 56);
assertTrue(response.get(1).getCapacity() == 24);
}
} }