package fr.mch.mdo.restaurant.services.business.managers.assembler; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import fr.mch.mdo.logs.ILogger; import fr.mch.mdo.restaurant.beans.IMdoBean; import fr.mch.mdo.restaurant.beans.IMdoDaoBean; import fr.mch.mdo.restaurant.beans.IMdoDtoBean; import fr.mch.mdo.restaurant.dao.beans.DinnerTable; import fr.mch.mdo.restaurant.dao.beans.OrderLine; import fr.mch.mdo.restaurant.dao.beans.Restaurant; import fr.mch.mdo.restaurant.dao.beans.TableBill; import fr.mch.mdo.restaurant.dao.beans.TableCashing; import fr.mch.mdo.restaurant.dao.beans.TableCredit; import fr.mch.mdo.restaurant.dao.beans.TableType; import fr.mch.mdo.restaurant.dao.beans.TableVat; import fr.mch.mdo.restaurant.dao.beans.UserAuthentication; import fr.mch.mdo.restaurant.dto.beans.DinnerTableDto; import fr.mch.mdo.restaurant.dto.beans.OrderLineDto; import fr.mch.mdo.restaurant.dto.beans.RestaurantDto; import fr.mch.mdo.restaurant.dto.beans.TableBillDto; import fr.mch.mdo.restaurant.dto.beans.TableCashingDto; import fr.mch.mdo.restaurant.dto.beans.TableCreditDto; import fr.mch.mdo.restaurant.dto.beans.TableTypeDto; import fr.mch.mdo.restaurant.dto.beans.TableVatDto; import fr.mch.mdo.restaurant.dto.beans.UserAuthenticationDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IDinnerTablesManagerAssembler; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultDinnerTablesAssembler extends AbstractAssembler implements IDinnerTablesManagerAssembler { private ILogger logger; private IManagerAssembler mdoTableAsEnumsAssembler; private IManagerAssembler tableTypesAssembler; private IManagerAssembler tableBillsAssembler; private IManagerAssembler tableCashingsAssembler; private IManagerAssembler tableCreditsAssembler; private IManagerAssembler orderLinesAssembler; private IManagerAssembler restaurantsAssembler; private IManagerAssembler userAuthenticationsAssembler; private IManagerAssembler tableVatsAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultDinnerTablesAssembler(LoggerServiceImpl.getInstance().getLogger(DefaultDinnerTablesAssembler.class.getName())); } private DefaultDinnerTablesAssembler(ILogger logger) { this.setLogger(logger); this.mdoTableAsEnumsAssembler = DefaultMdoTableAsEnumsAssembler.getInstance(); this.tableTypesAssembler = DefaultTableTypesAssembler.getInstance(); this.tableBillsAssembler = DefaultTableBillsAssembler.getInstance(); this.tableCashingsAssembler = DefaultTableCashingsAssembler.getInstance(); this.tableCreditsAssembler = DefaultTableCreditsAssembler.getInstance(); this.orderLinesAssembler = DefaultOrderLinesAssembler.getInstance(); this.restaurantsAssembler = DefaultRestaurantsAssembler.getInstance(); this.userAuthenticationsAssembler = DefaultUserAuthenticationsAssembler.getInstance(); this.tableVatsAssembler = DefaultTableVatsAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } /** * @return the tableTypesAssembler */ public IManagerAssembler getTableTypesAssembler() { return tableTypesAssembler; } /** * @param tableTypesAssembler the tableTypesAssembler to set */ public void setTableTypesAssembler(IManagerAssembler tableTypesAssembler) { this.tableTypesAssembler = tableTypesAssembler; } /** * @return the tableBillsAssembler */ public IManagerAssembler getTableBillsAssembler() { return tableBillsAssembler; } /** * @param tableBillsAssembler the tableBillsAssembler to set */ public void setTableBillsAssembler(IManagerAssembler tableBillsAssembler) { this.tableBillsAssembler = tableBillsAssembler; } /** * @return the tableCashingsAssembler */ public IManagerAssembler getTableCashingsAssembler() { return tableCashingsAssembler; } /** * @param tableCashingsAssembler the tableCashingsAssembler to set */ public void setTableCashingsAssembler(IManagerAssembler tableCashingsAssembler) { this.tableCashingsAssembler = tableCashingsAssembler; } /** * @return the tableCreditsAssembler */ public IManagerAssembler getTableCreditsAssembler() { return tableCreditsAssembler; } /** * @param tableCreditsAssembler the tableCreditsAssembler to set */ public void setTableCreditsAssembler(IManagerAssembler tableCreditsAssembler) { this.tableCreditsAssembler = tableCreditsAssembler; } /** * @return the orderLinesAssembler */ public IManagerAssembler getOrderLinesAssembler() { return orderLinesAssembler; } /** * @param orderLinesAssembler the orderLinesAssembler to set */ public void setOrderLinesAssembler(IManagerAssembler orderLinesAssembler) { this.orderLinesAssembler = orderLinesAssembler; } /** * @return the restaurantsAssembler */ public IManagerAssembler getRestaurantsAssembler() { return restaurantsAssembler; } /** * @param restaurantsAssembler the restaurantsAssembler to set */ public void setRestaurantsAssembler(IManagerAssembler restaurantsAssembler) { this.restaurantsAssembler = restaurantsAssembler; } /** * @return the userAuthenticationsAssembler */ public IManagerAssembler getUserAuthenticationsAssembler() { return userAuthenticationsAssembler; } /** * @param userAuthenticationsAssembler the userAuthenticationsAssembler to set */ public void setUserAuthenticationsAssembler(IManagerAssembler userAuthenticationsAssembler) { this.userAuthenticationsAssembler = userAuthenticationsAssembler; } /** * @return the tableVatsAssembler */ public IManagerAssembler getTableVatsAssembler() { return tableVatsAssembler; } /** * @param tableVatsAssembler the tableVatsAssembler to set */ public void setTableVatsAssembler(IManagerAssembler tableVatsAssembler) { this.tableVatsAssembler = tableVatsAssembler; } public DefaultDinnerTablesAssembler() { } public IManagerAssembler getMdoTableAsEnumsAssembler() { return mdoTableAsEnumsAssembler; } public void setMdoTableAsEnumsAssembler(IManagerAssembler mdoTableAsEnumsAssembler) { this.mdoTableAsEnumsAssembler = mdoTableAsEnumsAssembler; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { DinnerTableDto dto = null; if (daoBean != null) { DinnerTable bean = (DinnerTable) daoBean; dto = new DinnerTableDto(); // Dinner Table dto.setId(bean.getId()); dto.setAmountsSum(bean.getAmountsSum()); if (dto.getAmountsSum() == null) { dto.setAmountsSum(bean.getAmountsSumByFormula()); } dto.setAmountPay(bean.getAmountPay()); if (dto.getAmountPay() == null) { dto.setAmountPay(bean.getAmountPayByFormula()); } Set<TableBillDto> bills = null; if (bean.getBills() != null) { bills = (Set) tableBillsAssembler.marshal(bean.getBills()); } dto.setBills(bills); TableCashingDto cashing = null; if (bean.getCashing() != null) { cashing = (TableCashingDto) tableCashingsAssembler.marshal(bean.getCashing()); } dto.setCashing(cashing); Set<TableCreditDto> credits = null; if (bean.getCredits() != null) { credits = (Set) tableCreditsAssembler.marshal(bean.getCredits()); } dto.setCredits(credits); dto.setCustomersNumber(bean.getCustomersNumber()); dto.setNumber(bean.getNumber()); Set<OrderLineDto> orders = null; if (bean.getOrders() != null) { orders = (Set) orderLinesAssembler.marshal(bean.getOrders()); } dto.setOrders(orders); dto.setPrintingDate(bean.getPrintingDate()); dto.setQuantitiesSum(bean.getQuantitiesSum()); if (dto.getQuantitiesSum() == null) { dto.setQuantitiesSum(bean.getQuantitiesSumByFormula()); } dto.setReductionRatio(bean.getReductionRatio()); dto.setReductionRatioChanged(bean.getReductionRatioChanged()); dto.setRegistrationDate(bean.getRegistrationDate()); RestaurantDto restaurant = (RestaurantDto) restaurantsAssembler.marshal(bean.getRestaurant()); dto.setRestaurant(restaurant); dto.setRoo_id(null); TableTypeDto type = (TableTypeDto) tableTypesAssembler.marshal(bean.getType()); dto.setType(type); UserAuthenticationDto user = (UserAuthenticationDto) userAuthenticationsAssembler.marshal(bean.getUser()); dto.setUser(user); Set<TableVatDto> vats = null; if (bean.getVats() != null) { vats = (Set) tableVatsAssembler.marshal(bean.getVats()); } dto.setVats(vats); } return dto; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } DinnerTable bean = new DinnerTable(); DinnerTableDto dto = (DinnerTableDto) dtoBean; bean.setId(dto.getId()); bean.setAmountsSum(dto.getAmountsSum()); bean.setAmountPay(dto.getAmountPay()); Set<TableBill> bills = new HashSet<TableBill>(); if (dto.getBills() != null) { bills = (Set) tableBillsAssembler.unmarshal(dto.getBills(), bean); } bean.setBills(bills); TableCashing cashing = null; if (dto.getCashing() != null) { cashing = (TableCashing) tableCashingsAssembler.unmarshal(dto.getCashing()); } bean.setCashing(cashing); Set<TableCredit> credits = new HashSet<TableCredit>(); if (dto.getCredits() != null) { credits = (Set) tableCreditsAssembler.unmarshal(dto.getCredits(), bean); } bean.setCredits(credits); bean.setCustomersNumber(dto.getCustomersNumber()); bean.setNumber(dto.getNumber()); Set<OrderLine> orders = new HashSet<OrderLine>(); if (dto.getOrders() != null) { orders = (Set) orderLinesAssembler.unmarshal(dto.getOrders(), bean); } bean.setOrders(orders); bean.setPrintingDate(dto.getPrintingDate()); bean.setQuantitiesSum(dto.getQuantitiesSum()); bean.setReductionRatio(dto.getReductionRatio()); bean.setReductionRatioChanged(dto.getReductionRatioChanged()); bean.setRegistrationDate(dto.getRegistrationDate()); Restaurant restaurant = (Restaurant) restaurantsAssembler.unmarshal(dto.getRestaurant()); bean.setRestaurant(restaurant); bean.setRoo_id(null); TableType type = (TableType) tableTypesAssembler.unmarshal(dto.getType()); bean.setType(type); UserAuthentication user = (UserAuthentication) userAuthenticationsAssembler.unmarshal(dto.getUser()); bean.setUser(user); Set<TableVat> vats = new HashSet<TableVat>(); if (dto.getVats() != null) { vats = (Set) tableVatsAssembler.unmarshal(dto.getVats(), bean); } bean.setVats(vats); return bean; } @Override public IMdoDtoBean marshalTableType(IMdoDaoBean daoBean) { return tableTypesAssembler.marshal(daoBean); } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } private IMdoDtoBean marshalFreeTable(IMdoDaoBean daoBean) { DinnerTableDto dto = null; if (daoBean != null) { DinnerTable bean = (DinnerTable) daoBean; dto = new DinnerTableDto(); // Dinner Table dto.setId(bean.getId()); dto.setAmountsSum(bean.getAmountsSum()); if (dto.getAmountsSum() == null) { dto.setAmountsSum(bean.getAmountsSumByFormula()); } dto.setAmountPay(bean.getAmountPay()); if (dto.getAmountPay() == null) { dto.setAmountPay(bean.getAmountPayByFormula()); } dto.setCustomersNumber(bean.getCustomersNumber()); dto.setNumber(bean.getNumber()); dto.setPrintingDate(bean.getPrintingDate()); dto.setQuantitiesSum(bean.getQuantitiesSum()); if (dto.getQuantitiesSum() == null) { dto.setQuantitiesSum(bean.getQuantitiesSumByFormula()); } dto.setReductionRatio(bean.getReductionRatio()); dto.setReductionRatioChanged(bean.getReductionRatioChanged()); dto.setRegistrationDate(bean.getRegistrationDate()); dto.setRoo_id(null); } return dto; } @Override public List<IMdoDtoBean> marshalFreeTables(List<? extends IMdoBean> list) { List<IMdoDtoBean> result = new ArrayList<IMdoDtoBean>(); if (list != null) { for (IMdoBean iMdoBean : list) { result.add(marshalFreeTable((IMdoDaoBean) iMdoBean)); } } return result; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDtoBean marshalFreeTableByNumber(IMdoDaoBean daoBean) { DinnerTableDto dto = (DinnerTableDto) marshalFreeTable(daoBean); if (dto != null) { DinnerTable bean = (DinnerTable) daoBean; Set<OrderLineDto> orders = null; if (bean.getOrders() != null) { orders = (Set) orderLinesAssembler.marshal(bean.getOrders()); } dto.setOrders(orders); } return dto; } }