diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index c9ab19d..d12d49c 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,11 +1,7 @@ package mops.gruppen2.service; -import lombok.EqualsAndHashCode; import mops.gruppen2.domain.Exceptions.EventException; -import mops.gruppen2.domain.Exceptions.GroupDoesNotExistException; import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.event.CreateGroupEvent; -import mops.gruppen2.domain.event.DeleteGroupEvent; import mops.gruppen2.domain.event.Event; import org.springframework.stereotype.Service; @@ -23,36 +19,23 @@ public class GroupService { this.eventService = eventService; } - public List projectEventList(Map groupMap, List events) throws EventException { + + public List projectEventList(List events) throws EventException { + Map groupMap = new HashMap<>(); + for (Event event : events) { - if (event instanceof CreateGroupEvent) { - groupMap.put(event.getGroup_id(), new Group()); - } - if (event instanceof DeleteGroupEvent) { - groupMap.remove(event.getGroup_id()); - } else { - try { - Group group = groupMap.get(event.getGroup_id()); - - if (group == null) { - throw new GroupDoesNotExistException("Gruppe " + event.getGroup_id() + " existiert nicht"); - } - - group.applyEvent(event); - } catch (EventException e) { - if (e instanceof GroupDoesNotExistException) { - throw e; - } - e.printStackTrace(); - } - } - + getOrCreateGroup(groupMap, event.getGroup_id()).applyEvent(event); } return new ArrayList<>(groupMap.values()); } - public List projectEventList(List events) throws EventException { - return projectEventList(new HashMap<>(), events); + // + private Group getOrCreateGroup(Map groups, long group_id) { + if (!groups.containsKey(group_id)) { + groups.put(group_id, new Group()); + } + + return groups.get(group_id); } }