From a30d45821909d601cc48e360c85e336a09c5f665 Mon Sep 17 00:00:00 2001 From: LukasEttel Date: Thu, 12 Mar 2020 14:40:07 +0100 Subject: [PATCH] Created first Api implementation --- .../gruppen2/repository/EventRepository.java | 8 +++++-- .../mops/gruppen2/service/EventService.java | 17 ++++++++++++-- .../gruppen2/service/EventServiceTest.java | 23 +++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/main/java/mops/gruppen2/repository/EventRepository.java b/src/main/java/mops/gruppen2/repository/EventRepository.java index 57b39b5..d518286 100644 --- a/src/main/java/mops/gruppen2/repository/EventRepository.java +++ b/src/main/java/mops/gruppen2/repository/EventRepository.java @@ -1,14 +1,18 @@ package mops.gruppen2.repository; import mops.gruppen2.domain.EventDTO; -import mops.gruppen2.domain.event.Event; import org.springframework.data.jdbc.repository.query.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface EventRepository extends CrudRepository { - @Query("SELECT * FROM event WHERE event_id > ?#{[0]}") + @Query("SELECT * FROM event WHERE event_id > @status") public Iterable findNewEventSinceStatus(@Param("status") Long status); + + @Query("SELECT * FROM event WHERE group_id IN @groupIds ") + public Iterable findAllEventsOfGroups(@Param("groupIds") List groupIds); } diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index aba10cc..4da92dd 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -55,9 +55,11 @@ public class EventService { public List getNewEvents(Long status){ - Iterable eventDTOS = eventStore.findNewEventSinceStatus(status); + Iterable newEventDTOS = eventStore.findNewEventSinceStatus(status); + List groupIdsThatChanged = this.getAllGroupIds(newEventDTOS); - return translateEventDTOs(eventDTOS); + Iterable groupEventDTOS = eventStore.findAllEventsOfGroups(groupIdsThatChanged); + return translateEventDTOs(groupEventDTOS); } private List translateEventDTOs(Iterable eventDTOS){ @@ -74,4 +76,15 @@ public class EventService { return events; } + private List getAllGroupIds(Iterable eventDTOS){ + List idsOfChangedGroups = new ArrayList<>(); + for (EventDTO eventDTO : eventDTOS){ + if (!idsOfChangedGroups.contains(eventDTO.getGroup_id())) { + idsOfChangedGroups.add(eventDTO.getGroup_id()); + + } + } + return idsOfChangedGroups; + } + } diff --git a/src/test/java/mops/gruppen2/service/EventServiceTest.java b/src/test/java/mops/gruppen2/service/EventServiceTest.java index a89540e..159bcf1 100644 --- a/src/test/java/mops/gruppen2/service/EventServiceTest.java +++ b/src/test/java/mops/gruppen2/service/EventServiceTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -37,4 +38,26 @@ class EventServiceTest { when(eventRepositoryMock.findAll()).thenReturn(eventDTOS); assertEquals(eventDTO1.getGroup_id()+1, eventService.checkGroup()); } + + @Test + void checkGetAllGroupIdsWithRepeadedId(){ + ArrayList eventDTOS = new ArrayList<>(); + + EventDTO eventDTO1 = new EventDTO(); + eventDTO1.setGroup_id(1L); + eventDTOS.add(eventDTO1); + + EventDTO eventDTO2 = new EventDTO(); + eventDTO2.setGroup_id(2L); + eventDTOS.add(eventDTO2); + + EventDTO eventDTO3 = new EventDTO(); + eventDTO3.setGroup_id(1L); + eventDTOS.add(eventDTO3); + + List groupIds = eventService.getAllGroupIds(eventDTOS); + + assertThat(groupIds.size()).isEqualTo(2); + + } } \ No newline at end of file