package fr.mch.mdo.restaurant.web.struts.actions; import java.util.List; import fr.mch.mdo.restaurant.dto.beans.AjaxOrderLineDto; import fr.mch.mdo.restaurant.dto.beans.DinnerTableDto; import fr.mch.mdo.restaurant.dto.beans.MdoUserContext; import fr.mch.mdo.restaurant.dto.beans.OrderLineDto; import fr.mch.mdo.restaurant.dto.beans.TablesOrdersDto; import fr.mch.mdo.restaurant.ioc.WebRestaurantBeanFactory; import fr.mch.mdo.restaurant.services.business.managers.tables.IDinnerTablesManager; import fr.mch.mdo.restaurant.ui.forms.TablesOrdersForm; public final class TablesOrdersWebAction extends RestaurantWebAction { /** * Default Serial Version UID. */ private static final long serialVersionUID = -1L; IDinnerTablesManager manager = WebRestaurantBeanFactory.getInstance().getDinnerTablesManager(); public TablesOrdersWebAction() { super(WebRestaurantBeanFactory.getInstance().getLogger(TablesOrdersWebAction.class.getName()), new TablesOrdersForm()); } // public String form() throws Exception { // String result = "ajax-response-form"; // // TablesOrdersForm form = (TablesOrdersForm) super.getForm(); // DinnerTableDto dtoBean = (DinnerTableDto) form.getDtoBean(); // // // Table name // String tableNumber = dtoBean.getNumber(); // super.getLogger().debug("Table name : " + tableNumber); // try { // MdoUserContext userContext = (MdoUserContext) form.getUserContext(); // dtoBean = manager.findTableByNumber(userContext, tableNumber); // form.setDtoBean(dtoBean); // userContext.setCurrentTable(dtoBean); // } catch (Exception e) { // addActionError(getText("error.table.name")); // } // // return result; // } public String displayDinnerTable() throws Exception { String result = "dinner-table"; TablesOrdersForm form = (TablesOrdersForm) super.getForm(); DinnerTableDto dtoBean = (DinnerTableDto) form.getDtoBean(); // Customer number to be saved Integer customersNumber = dtoBean.getCustomersNumber(); String tableNumber = dtoBean.getNumber(); super.getLogger().debug("Table name : " + tableNumber); MdoUserContext userContext = (MdoUserContext) form.getUserContext(); // Maybe we have to synchronize the MyDinnerTable if (userContext.getMyDinnerTable(tableNumber) != null) { // throw new MdoDinnerTableAlreadyInUseException("fr.mch.mdo.restaurant.web.struts.actions.displayDinnerTable.in.use"); } try { // TODO Replace by displayDinnerTable dtoBean = manager.findTableByNumber(userContext, tableNumber); if (dtoBean != null) { dtoBean.setCustomersNumber(customersNumber); manager.updateCustomersNumber(dtoBean.getId(), customersNumber); } else { /*******************************************************************************************************/ /** Create new Table and Store it in the session in order to use it when inserting it in the database **/ /*******************************************************************************************************/ dtoBean = new DinnerTableDto(); dtoBean.setNumber(tableNumber); dtoBean.setCustomersNumber(customersNumber); } form.setDtoBean(dtoBean); // Set in session userContext.setMyDinnerTable(dtoBean); } catch (Exception e) { addActionError(getText("error.table.name")); } return result; } public String autoCompleteTablesNames() throws Exception { String forwardPage = "ajax-response-auto-complete-tables-names"; TablesOrdersDto dtoBean = (TablesOrdersDto) super.getForm().getDtoBean(); TablesOrdersForm form = (TablesOrdersForm) super.getForm(); // Prefix table name String prefixTableNumber = dtoBean.getPrefixTableNumber(); super.getLogger().debug("Prefix table name : " + prefixTableNumber); try { dtoBean.setTablesNames(manager.findAllTableNamesByPrefix(form.getUserContext(), prefixTableNumber)); } catch (Exception e) { addActionError(getText("error.auto.complete.tables.names")); } // Forward control to the specified success URI return forwardPage; } public String tableCustomersNumber() throws Exception { String forwardPage = "ajax-response-table-customers-number"; TablesOrdersForm form = (TablesOrdersForm) super.getForm(); DinnerTableDto dtoBean = (DinnerTableDto) form.getDtoBean(); String tableNumber = dtoBean.getNumber(); super.getLogger().debug("Table name : " + tableNumber); try { MdoUserContext userContext = (MdoUserContext) form.getUserContext(); Integer customersNumber = manager.getCustomersNumberByNumber(userContext, tableNumber); dtoBean.setCustomersNumber(customersNumber); } catch (Exception e) { addActionError(getText("error.table.customers.number")); } return forwardPage; } public String autoCompleteProductsCodes() throws Exception { String forwardPage = "ajax-response-auto-complete-products-codes"; TablesOrdersForm form = (TablesOrdersForm) super.getForm(); TablesOrdersDto dtoBean = (TablesOrdersDto) form.getDtoBean(); // Prefix product code String prefixProductCode = dtoBean.getPrefixProductCode(); super.getLogger().debug("Prefix product code : " + prefixProductCode); try { if (prefixProductCode != null) { MdoUserContext userContext = (MdoUserContext) form.getUserContext(); dtoBean.setProductsCodes(manager.findAllProductCodesByPrefix(userContext, prefixProductCode)); } } catch (Exception e) { addActionError(getText("error.auto.complete.products.codes")); } // Forward control to the specified success URI return forwardPage; } public String saveOrderLine() throws Exception { long deltaTime = System.currentTimeMillis(); String forwardPage = "ajax-response-save-order-line"; TablesOrdersForm form = (TablesOrdersForm) super.getForm(); // Order line AjaxOrderLineDto ajaxOrderLine = form.getOrderLine(); OrderLineDto orderLine = new OrderLineDto(); orderLine.setId(ajaxOrderLine.getId()); orderLine.setQuantity(ajaxOrderLine.getQuantity()); orderLine.setCode(ajaxOrderLine.getCode()); orderLine.setLabel(ajaxOrderLine.getLabel()); orderLine.setUnitPrice(ajaxOrderLine.getPrice()); // In case of creating new Table. orderLine.setDinnerTable(new DinnerTableDto()); orderLine.getDinnerTable().setId(ajaxOrderLine.getDinnerTableId()); orderLine.getDinnerTable().setNumber(ajaxOrderLine.getDinnerTableNumber()); MdoUserContext userContext = (MdoUserContext) form.getUserContext(); super.getLogger().debug("Product code : " + orderLine.getLabel()); deltaTime = System.currentTimeMillis() - deltaTime; System.out.println("1) saveOrderLine Delta Time = " + deltaTime); deltaTime = System.currentTimeMillis(); try { manager.processOrderLineByCode(userContext, orderLine, ajaxOrderLine.getDeletedId()); ajaxOrderLine.setId(orderLine.getId()); ajaxOrderLine.setColor(orderLine.getProduct()==null?"":orderLine.getProduct().getColorRGB()); ajaxOrderLine.setDinnerTableId(orderLine.getDinnerTable().getId()); ajaxOrderLine.setQuantity(orderLine.getQuantity()); ajaxOrderLine.setCode(orderLine.getCode()); ajaxOrderLine.setLabel(orderLine.getLabel()); ajaxOrderLine.setPrice(orderLine.getUnitPrice()); ajaxOrderLine.setAmount(orderLine.getAmount()); ajaxOrderLine.setDataCode(orderLine.getDataCode()); } catch (Exception e) { addActionError(getText("message.error.ui.action.saveOrderLine")); } deltaTime = System.currentTimeMillis() - deltaTime; System.out.println("2) processOrderLineByCode Delta Time = " + deltaTime); deltaTime = System.currentTimeMillis(); // Forward control to the specified success URI return forwardPage; } public String deleteOrderLine() throws Exception { String forwardPage = "ajax-response-save-order-line"; TablesOrdersForm form = (TablesOrdersForm) super.getForm(); // Order line AjaxOrderLineDto ajaxOrderLine = form.getOrderLine(); OrderLineDto orderLine = new OrderLineDto(); orderLine.setId(ajaxOrderLine.getDeletedId()); Long dinnerTableId = ajaxOrderLine.getDinnerTableId(); DinnerTableDto dinnerTable = new DinnerTableDto(); dinnerTable.setId(dinnerTableId); orderLine.setDinnerTable(dinnerTable); super.getLogger().debug("Product code : " + orderLine.getLabel()); try { // Do not remove the Dinner Table even the order lines are empty. // manager.removeOrderLine(ajaxOrderLine.getDeletedId()); } catch (Exception e) { addActionError(getText("message.error.ui.action.deleteOrderLine")); } // Forward control to the specified success URI return forwardPage; } public String deleteTable() throws Exception { TablesOrdersForm form = (TablesOrdersForm) super.getForm(); MdoUserContext userContext = (MdoUserContext) form.getUserContext(); super.getLogger().debug("Delete the table with id : " + form.getDtoBean().getId()); try { manager.delete(form.getDtoBean()); } catch (Exception e) { addActionError(getText("message.error.ui.action.deleteTable")); } // Forward control to the specified success URI return this.list(); } @SuppressWarnings("unchecked") public String list() throws Exception { String forwardPage = "list"; TablesOrdersForm form = (TablesOrdersForm) super.getForm(); super.getLogger().debug("Tables list"); try { MdoUserContext userContext = (MdoUserContext) form.getUserContext(); @SuppressWarnings("rawtypes") List objects = manager.findAllFreeTables(userContext); form.setList(objects); } catch (Exception e) { addActionError(getText("message.error.action.list.tables")); } // Forward control to the specified success URI return forwardPage; } }