package br.com.caelum.vraptor.restbucks; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import br.com.caelum.vraptor.ioc.ApplicationScoped; import br.com.caelum.vraptor.ioc.Component; import br.com.caelum.vraptor.restbucks.Item.Coffee; import br.com.caelum.vraptor.restbucks.Item.Milk; import br.com.caelum.vraptor.restbucks.Item.Size; import br.com.caelum.vraptor.restbucks.Order.Location; /** * Simple database simulation. */ @Component @ApplicationScoped public class OrderDatabase { private static int total = 1; private Map<String, Order> orders = new HashMap<String, Order>(); public OrderDatabase() { Item item = new Item(Coffee.LATTE, 1, Milk.WHOLE, Size.SMALL); ArrayList<Item> items = new ArrayList<Item>(); items.add(item); Order order = new Order("unpaid", items, Location.TO_TAKE); order.setId("1"); save(order.getId(), order); order = new Order("paid", items, Location.TO_TAKE); order.pay(new Payment("1234123412341234", "guilherme silveira", 11, 12, new BigDecimal(1020.0))); order.setId("2"); save(order.getId(), order); } public synchronized void save(Order order) { order.setStatus("unpaid"); total++; String id = String.valueOf(total); order.setId(id); orders.put(id, order); } public void save(String id, Order order) { orders.put(id, order); } public boolean orderExists(String id) { return orders.containsKey(id); } private static final long serialVersionUID = 1L; public Order getOrder(String id) { return orders.get(id); } public Collection<Order> all() { return orders.values(); } public void delete(Order order) { orders.remove(order.getId()); } public void update(Order order) { orders.put(order.getId(), order); } }