From f64bb0f578936a50f9fa2e5c2fb8b7d60c215d6b Mon Sep 17 00:00:00 2001 From: Christoph Date: Thu, 12 Mar 2020 14:37:32 +0100 Subject: [PATCH] refactor projection method --- .../mops/gruppen2/service/GroupService.java | 41 ++++++------------- 1 file changed, 12 insertions(+), 29 deletions(-) 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); } }