package pizza.dao; import org.hibernate.*; import java.util.List; import pizza.domain.PizzaOrder; import pizza.domain.PizzaSize; import pizza.domain.Topping; public class PizzaOrderDAO { private DbDAO dbDAO; public PizzaOrderDAO(DbDAO db) { this.dbDAO = db; } @SuppressWarnings("unchecked") public List findPizzaSizes() { List sizes = dbDAO.getSession().createQuery("from PizzaSize p").list(); return sizes; } @SuppressWarnings("unchecked") public List findToppings() { List tops = dbDAO.getSession().createQuery("from Topping t").list(); return tops; } public PizzaSize findPizzaSizeById(int sizeId) { PizzaSize size = (PizzaSize)dbDAO.getSession().load(PizzaSize.class, sizeId); return size; } public Topping findToppingById(int toppingId) { Topping top = (Topping)dbDAO.getSession().load(Topping.class, toppingId); return top; } @SuppressWarnings("unchecked") public PizzaSize findPizzaSizeByName(String sizeName) { List sizes = dbDAO.getSession().createQuery("from PizzaSize s where s.sizeName = '" + sizeName + "'").list(); return sizes.get(0); } @SuppressWarnings("unchecked") public Topping findToppingByName(String toppingName) { List tops = dbDAO.getSession().createQuery("from Topping t where t.toppingName = '" + toppingName + "'").list(); return tops.get(0); } @SuppressWarnings("unchecked") public int insertOrder(PizzaOrder order) { Integer orderID = (Integer)dbDAO.getSession().save(order); return orderID; } // Get orders for a certain day and room number @SuppressWarnings("unchecked") public List findOrdersByRoom(int roomNumber, int day) { List orders = dbDAO.getSession().createQuery("from PizzaOrder o where o.roomNumber = " + roomNumber + " and o.day = " + day ).list(); return orders; } // find first order with specified status @SuppressWarnings("unchecked") public int findFirstOrder(int status) { List orders = dbDAO.getSession().createQuery("from PizzaOrder o where o.status = " + status + " order by id" ).list(); for (PizzaOrder o: orders) return o.getId(); return -1; } public void updateOrderStatus(int ordNo, int newStatus) { Session session = dbDAO.getSession(); PizzaOrder order = (PizzaOrder)session.load(PizzaOrder.class, ordNo); order.setStatus(newStatus); } // get all orders between day1 and day2 (inclusive) @SuppressWarnings("unchecked") public List findOrdersByDays(int day1, int day2) { List orders = dbDAO.getSession().createQuery("from PizzaOrder o where o.day >= " + day1 + " and o.day <= " + day2 ).list(); return orders; } }