package fr.mch.mdo.restaurant.services.business.managers.restaurants; import java.util.ArrayList; import java.util.List; import fr.mch.mdo.logs.ILogger; import fr.mch.mdo.restaurant.beans.IMdoBean; import fr.mch.mdo.restaurant.beans.IMdoDtoBean; import fr.mch.mdo.restaurant.dao.restaurants.IRestaurantPrefixTablesDao; import fr.mch.mdo.restaurant.dao.restaurants.hibernate.DefaultRestaurantPrefixTablesDao; import fr.mch.mdo.restaurant.dto.beans.IAdministrationManagerViewBean; import fr.mch.mdo.restaurant.dto.beans.MdoUserContext; import fr.mch.mdo.restaurant.dto.beans.RestaurantPrefixTablesManagerViewBean; import fr.mch.mdo.restaurant.exception.MdoBusinessException; import fr.mch.mdo.restaurant.exception.MdoException; import fr.mch.mdo.restaurant.services.business.managers.AbstractAdministrationManager; import fr.mch.mdo.restaurant.services.business.managers.DefaultMdoTableAsEnumsManager; import fr.mch.mdo.restaurant.services.business.managers.assembler.DefaultRestaurantPrefixTablesAssembler; import fr.mch.mdo.restaurant.services.business.managers.products.IMdoTableAsEnumsManager; import fr.mch.mdo.restaurant.services.business.managers.tables.DefaultTableTypesManager; import fr.mch.mdo.restaurant.services.business.managers.tables.ITableTypesManager; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultRestaurantPrefixTablesManager extends AbstractAdministrationManager implements IRestaurantPrefixTablesManager { private IMdoTableAsEnumsManager mdoTableAsEnumsManager; private ITableTypesManager tableTypesManager; private static class LazyHolder { private static IRestaurantPrefixTablesManager instance = new DefaultRestaurantPrefixTablesManager( LoggerServiceImpl.getInstance().getLogger(DefaultRestaurantPrefixTablesManager.class.getName()), DefaultRestaurantPrefixTablesDao.getInstance(), DefaultRestaurantPrefixTablesAssembler.getInstance()); } private DefaultRestaurantPrefixTablesManager(ILogger logger, IRestaurantPrefixTablesDao dao, IManagerAssembler assembler) { super.logger = logger; super.dao = dao; super.assembler = assembler; this.mdoTableAsEnumsManager = DefaultMdoTableAsEnumsManager.getInstance(); this.tableTypesManager = DefaultTableTypesManager.getInstance(); } /** * This constructor is used by ioc */ public DefaultRestaurantPrefixTablesManager() { } public static IRestaurantPrefixTablesManager getInstance() { return LazyHolder.instance; } /** * @return the mdoTableAsEnumsManager */ public IMdoTableAsEnumsManager getMdoTableAsEnumsManager() { return mdoTableAsEnumsManager; } /** * @param mdoTableAsEnumsManager the mdoTableAsEnumsManager to set */ public void setMdoTableAsEnumsManager(IMdoTableAsEnumsManager mdoTableAsEnumsManager) { this.mdoTableAsEnumsManager = mdoTableAsEnumsManager; } /** * @return the tableTypesManager */ public ITableTypesManager getTableTypesManager() { return tableTypesManager; } /** * @param tableTypesManager the tableTypesManager to set */ public void setTableTypesManager(ITableTypesManager tableTypesManager) { this.tableTypesManager = tableTypesManager; } @Override public void processList(IAdministrationManagerViewBean viewBean, boolean... lazy) throws MdoBusinessException { super.processList(viewBean, lazy); RestaurantPrefixTablesManagerViewBean restaurantPrefixTablesManagerViewBean = (RestaurantPrefixTablesManagerViewBean) viewBean; try { restaurantPrefixTablesManagerViewBean.setPrefixes(mdoTableAsEnumsManager.getPrefixTableNames()); restaurantPrefixTablesManagerViewBean.setTypes(tableTypesManager.findAll(lazy)); } catch (MdoException e) { logger.error("message.error.administration.business.find.all", e); throw new MdoBusinessException("message.error.administration.business.find.all", e); } } @Override public List<IMdoDtoBean> findAll(MdoUserContext userContext, Long restaurantId) throws MdoException { List<IMdoDtoBean> result = new ArrayList<IMdoDtoBean>(); try { List<? extends IMdoBean> list = ((IRestaurantPrefixTablesDao) dao).findAll(restaurantId); if (list != null) { result = assembler.marshal(list); } } catch (MdoException e) { logger.error("message.error.administration.business.find.all", e); throw new MdoBusinessException("message.error.administration.business.find.all", e); } return result; } @Override public List<IMdoDtoBean> findAll(MdoUserContext userContext, Long restaurantId, String typeName) throws MdoException { List<IMdoDtoBean> result = new ArrayList<IMdoDtoBean>(); try { List<? extends IMdoBean> list = ((IRestaurantPrefixTablesDao) dao).findAll(restaurantId, typeName); if (list != null) { result = assembler.marshal(list); } } catch (MdoException e) { logger.error("message.error.administration.business.find.all", e); throw new MdoBusinessException("message.error.administration.business.find.all", e); } return result; } }