package com.yummynoodlebar.persistence.services; import com.yummynoodlebar.events.menu.*; import com.yummynoodlebar.persistence.domain.MenuItem; import com.yummynoodlebar.persistence.repository.MenuItemRepository; import java.util.ArrayList; import java.util.List; public class MenuPersistenceEventHandler implements MenuPersistenceService { private MenuItemRepository menuItemRepository; public MenuPersistenceEventHandler(MenuItemRepository menuItemRepository) { this.menuItemRepository = menuItemRepository; } @Override public AllMenuItemsEvent requestAllMenuItems(RequestAllMenuItemsEvent requestAllMenuItemsEvent) { Iterable<MenuItem> menuItems = menuItemRepository.findAll(); List<MenuItemDetails> details = new ArrayList<MenuItemDetails>(); for(MenuItem item: menuItems) { details.add(item.toStatusDetails()); } return new AllMenuItemsEvent(details); } @Override public MenuItemDetailsEvent requestMenuItemDetails(RequestMenuItemDetailsEvent requestMenuItemDetailsEvent) { MenuItem item = menuItemRepository.findById(requestMenuItemDetailsEvent.getId()); if (item == null) { return MenuItemDetailsEvent.notFound(requestMenuItemDetailsEvent.getId()); } return new MenuItemDetailsEvent( requestMenuItemDetailsEvent.getId(), item.toStatusDetails()); } @Override public MenuItemDetailsEvent createMenuItem(CreateMenuItemEvent createMenuItemEvent) { MenuItem item = menuItemRepository.save( MenuItem.fromStatusDetails(createMenuItemEvent.getDetails())); return new MenuItemDetailsEvent( item.getId(), item.toStatusDetails()); } }