package com.yummynoodlebar.persistence.repository; import com.yummynoodlebar.persistence.domain.Order; import java.util.*; public class OrdersMemoryRepository implements OrdersRepository { private Map<UUID, Order> orders; public OrdersMemoryRepository(final Map<UUID, Order> orders) { this.orders = Collections.unmodifiableMap(orders); } @Override public synchronized Order save(Order order) { Map<UUID, Order> modifiableOrders = new HashMap<UUID, Order>(orders); modifiableOrders.put(order.getKey(), order); this.orders = Collections.unmodifiableMap(modifiableOrders); return order; } @Override public synchronized void delete(UUID key) { if (orders.containsKey(key)) { Map<UUID, Order> modifiableOrders = new HashMap<UUID, Order>(orders); modifiableOrders.remove(key); this.orders = Collections.unmodifiableMap(modifiableOrders); } } @Override public Order findById(UUID key) { return orders.get(key); } @Override public List<Order> findAll() { return Collections.unmodifiableList(new ArrayList<Order>(orders.values())); } }