package cz.cvut.fel.restauracefel.hibernate; // Generated 16.3.2009 21:36:54 by Hibernate Tools 3.2.1.GA import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Date; import java.util.List; /** * UsedMaterial generated by hbm2java */ public class UsedMaterial extends DBEntity { private static final long serialVersionUID = 7570990718241429464L; private Integer usedMaterialId; private Material material; private MenuItem menuItem; private double quantity; private int isDeleted; public UsedMaterial() { } public UsedMaterial(Material material, MenuItem menuItem, double quantity, int isDeleted) { this.material = material; this.menuItem = menuItem; this.quantity = quantity; this.isDeleted = isDeleted; } //tato metoda zde musi byt, a to z duvodu, aby mohla probehnout spravne serializace //zapis objektu do proudu bajtu private void writeObject(ObjectOutputStream stream) throws IOException { stream.writeInt(usedMaterialId); Material m = new Material(); UnitType ut = new UnitType(material.getUnitType().getName(), material.getUnitType().getAbbreviation(), material.getUnitType().getTypeId(), material.getUnitType().getIsDeleted()); ut.setUnitTypeId(material.getUnitType().getUnitTypeId()); MaterialType mt = new MaterialType(material.getMaterialType().getName(), material.getMaterialType().getNote(), material.getMaterialType().getIsDeleted()); mt.setMaterialTypeId(material.getMaterialType().getMaterialTypeId()); m.setMaterialId(material.getMaterialId()); m.setUnitType(ut); m.setMaterialType(mt); m.setName(material.getName()); m.setCurrentQuantity(material.getCurrentQuantity()); m.setBarcode(material.getBarcode()); m.setMinimal(material.getMinimal()); m.setIsDeleted(material.getIsDeleted()); stream.writeObject(m); MenuItem mi = new MenuItem(); mi.setMenuItemId(menuItem.getMenuItemId()); mi.setName(menuItem.getName()); mi.setPrice(menuItem.getPrice()); mi.setQuantity(menuItem.getQuantity()); mi.setIsAvailable(menuItem.getIsAvailable()); mi.setIsDeleted(menuItem.getIsDeleted()); stream.writeObject(mi); stream.writeDouble(quantity); stream.writeInt(isDeleted); } //tato metoda zde musi byt, a to z duvodu, aby mohla probehnout spravne serializace //cteni a rekonstrukce objektu z proudu bajtu private void readObject(ObjectInputStream stream) throws IOException { try { usedMaterialId = stream.readInt(); material = (Material) (stream.readObject()); menuItem = (MenuItem) (stream.readObject()); quantity = stream.readDouble(); isDeleted = stream.readInt(); } catch (Exception e) { e.getMessage(); } } public Integer getUsedMaterialId() { return this.usedMaterialId; } public void setUsedMaterialId(Integer usedMaterialId) { this.usedMaterialId = usedMaterialId; } public Material getMaterial() { return this.material; } public void setMaterial(Material material) { this.material = material; } public MenuItem getMenuItem() { return this.menuItem; } public void setMenuItem(MenuItem menuItem) { this.menuItem = menuItem; } public double getQuantity() { return this.quantity; } public void setQuantity(double quantity) { this.quantity = quantity; } public int getIsDeleted() { return isDeleted; } public void setIsDeleted(int isDeleted) { this.isDeleted = isDeleted; } public void create() { create(this); } public void delete() { delete(this); } public void update() { update(this); } public static UsedMaterial findById(Integer id) { //return (UsedMaterial) findById("UsedMaterial", "usedMaterialId", id); return (UsedMaterial) findByIdNotDeleted("UsedMaterial", "usedMaterialId", id, "isDeleted", 0); } //vraci vsechny UsedMaterialy, ktere nejsou oznaceny jako smazane public static List findAll() { return findAllNotDeleted("UsedMaterial", "isDeleted", 0); } public static List findByMenuItem(Integer menuItemId) { String query = "from UsedMaterial um where um.menuItem.menuItemId = :id1 and um.isDeleted = :id2 "; String[] paramNames = new String[]{"id1", "id2"}; String[] paramTypes = new String[]{"Integer", "Integer"}; Integer[] paramValues = new Integer[]{menuItemId, 0}; List res = executeQuery(query, paramNames, paramTypes, paramValues); if (res == null || res.isEmpty()) { return null; } return res; } public static double[] findQuantityOfUsedMaterialUsedAfterInOrders(Date date, Material material) { List<Order> orders = Order.findByDateAfter(date); double[] result = new double[2]; double quantity = 0; double price = 0; if (orders != null) { for (Order o : orders) { List<OrderMenuItem> ordersMenu = OrderMenuItem.findByOrder(o.getOrderId()); if (ordersMenu != null) { for (OrderMenuItem item : ordersMenu) { List<UsedMaterial> usedMaterials = UsedMaterial.findByMenuItem(item.getMenuItem().getMenuItemId()); if (usedMaterials != null) { for (UsedMaterial m : usedMaterials) { if (m.getMaterial().equals(material)) { quantity += m.getQuantity(); //toto funguje pouze pokud je menu item slozen z jednoho produktu price += item.getMenuItem().getPrice() * m.getQuantity(); } } } } } } } result[0] = quantity; result[1] = price; return result; } public static List findByMaterial(Integer materialId) { String query = "from UsedMaterial um where um.material.materialId = :id1 and um.isDeleted = :id2"; String[] paramNames = new String[]{"id1", "id2"}; String[] paramTypes = new String[]{"Integer", "Integer"}; Integer[] paramValues = new Integer[]{materialId, 0}; List res = executeQuery(query, paramNames, paramTypes, paramValues); if (res == null || res.isEmpty()) { return null; } return res; } }