Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit ac34f8a

Browse files
author
Stefan Kock
committed
SORMAS-Foundation#3612: Reduce iterations: Only traverse eventSummaries once (now a Map)
1 parent 72de4f8 commit ac34f8a

1 file changed

Lines changed: 11 additions & 12 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactFacadeEjb.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -912,21 +912,20 @@ public List<ContactIndexDetailedDto> getIndexDetailedList(
912912
}
913913

914914
// Load event count and latest events info per contact
915-
List<ContactEventSummaryDetails> eventSummaries =
916-
eventService.getEventSummaryDetailsByContacts(dtos.stream().map(ContactIndexDetailedDto::getUuid).collect(Collectors.toList()));
917-
Map<String, Long> eventCounts =
918-
eventSummaries.stream().collect(Collectors.groupingBy(ContactEventSummaryDetails::getContactUuid, Collectors.counting()));
915+
Map<String, List<ContactEventSummaryDetails>> eventSummaries =
916+
eventService.getEventSummaryDetailsByContacts(
917+
dtos.stream().map(ContactIndexDetailedDto::getUuid).collect(Collectors.toList()))
918+
.stream()
919+
.collect(Collectors.groupingBy(ContactEventSummaryDetails::getContactUuid, Collectors.toList()));
919920
for (ContactIndexDetailedDto contact : dtos) {
920921

921-
contact.setEventCount(eventCounts.getOrDefault(contact.getUuid(), 0L));
922+
List<ContactEventSummaryDetails> contactEvents = eventSummaries.getOrDefault(contact.getUuid(), Collections.emptyList());
923+
contact.setEventCount((long) contactEvents.size());
922924

923-
eventSummaries.stream()
924-
.filter(v -> v.getContactUuid().equals(contact.getUuid()))
925-
.max(Comparator.comparing(ContactEventSummaryDetails::getEventDate))
926-
.ifPresent(eventSummary -> {
927-
contact.setLatestEventId(eventSummary.getEventUuid());
928-
contact.setLatestEventTitle(eventSummary.getEventTitle());
929-
});
925+
contactEvents.stream().max(Comparator.comparing(ContactEventSummaryDetails::getEventDate)).ifPresent(eventSummary -> {
926+
contact.setLatestEventId(eventSummary.getEventUuid());
927+
contact.setLatestEventTitle(eventSummary.getEventTitle());
928+
});
930929
}
931930

932931
Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight, I18nProperties.getCaption(Captions.inaccessibleValue));

0 commit comments

Comments
 (0)