diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java index f5607c5..016b9f0 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/GroupsMappers.java @@ -31,9 +31,25 @@ public class GroupsMappers { return GroupsMappers.mapToDefaultResponse(groups, null); } + public static List mapToCapacityResponse(List groups, + HashMap taken) { + // return + // groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) + // .collect(Collectors.toList()); + return groups.stream().filter(Objects::nonNull).map(new Function() { + @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 mapToCapacityResponse(List groups) { - return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new) - .collect(Collectors.toList()); + return GroupsMappers.mapToCapacityResponse(groups, null); } public static CourseWithGroupsResponse mapToGetCourseGroupsDefaultResponse( diff --git a/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java index 9407e4d..1ca9fc2 100755 --- a/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java +++ b/restservice/src/main/java/com/plannaplan/responses/models/GroupWithCapacityResponse.java @@ -23,6 +23,10 @@ public class GroupWithCapacityResponse extends GroupDefaultResponse { this(assignment.getGroup()); } + public GroupWithCapacityResponse(Assignment assignment, int takenPlaces) { + this(assignment.getGroup(), takenPlaces); + } + public int getCapacity() { return capacity; } diff --git a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java index d9c4de3..3ef598f 100755 --- a/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java +++ b/restservice/src/test/java/com/plannaplan/responses/mappers/GroupsMappersTest.java @@ -78,4 +78,32 @@ public class GroupsMappersTest { 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 placeMap = new HashMap<>(); + placeMap.put(Long.valueOf(0), 5); + placeMap.put(Long.valueOf(1), 56); + + final List 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); + } + }