package fr.mch.mdo.restaurant.services.business.managers.printings; import java.util.ArrayList; import java.util.List; import fr.mch.mdo.logs.ILogger; import fr.mch.mdo.restaurant.beans.IBeanLabelable; import fr.mch.mdo.restaurant.beans.IMdoBean; import fr.mch.mdo.restaurant.beans.IMdoDtoBean; import fr.mch.mdo.restaurant.dao.printings.IPrintingInformationsDao; import fr.mch.mdo.restaurant.dao.printings.hibernate.DefaultPrintingInformationsDao; import fr.mch.mdo.restaurant.dto.beans.IAdministrationManagerViewBean; import fr.mch.mdo.restaurant.dto.beans.LocaleDto; import fr.mch.mdo.restaurant.dto.beans.PrintingInformationsManagerViewBean; import fr.mch.mdo.restaurant.exception.MdoBusinessException; import fr.mch.mdo.restaurant.exception.MdoException; import fr.mch.mdo.restaurant.services.business.managers.AbstractAdministrationManagerLabelable; import fr.mch.mdo.restaurant.services.business.managers.DefaultMdoTableAsEnumsManager; import fr.mch.mdo.restaurant.services.business.managers.assembler.DefaultPrintingInformationsAssembler; import fr.mch.mdo.restaurant.services.business.managers.locales.DefaultLocalesManager; import fr.mch.mdo.restaurant.services.business.managers.locales.ILocalesManager; import fr.mch.mdo.restaurant.services.business.managers.products.IMdoTableAsEnumsManager; import fr.mch.mdo.restaurant.services.business.managers.restaurants.DefaultRestaurantsManager; import fr.mch.mdo.restaurant.services.business.managers.restaurants.IRestaurantsManager; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultPrintingInformationsManager extends AbstractAdministrationManagerLabelable implements IPrintingInformationsManager { private IRestaurantsManager restaurantsManager; private IMdoTableAsEnumsManager mdoTableAsEnumsManager; private ILocalesManager localesManager; private static class LazyHolder { private static IPrintingInformationsManager instance = new DefaultPrintingInformationsManager(LoggerServiceImpl.getInstance().getLogger(DefaultPrintingInformationsManager.class.getName()), DefaultPrintingInformationsDao.getInstance(), DefaultPrintingInformationsAssembler.getInstance()); } private DefaultPrintingInformationsManager(ILogger logger, IPrintingInformationsDao dao, IManagerAssembler assembler) { super.logger = logger; super.dao = dao; super.assembler = assembler; this.setRestaurantsManager(DefaultRestaurantsManager.getInstance()); this.mdoTableAsEnumsManager = DefaultMdoTableAsEnumsManager.getInstance(); this.localesManager = DefaultLocalesManager.getInstance(); } /** * This constructor is used by ioc */ public DefaultPrintingInformationsManager() { } public static IPrintingInformationsManager getInstance() { return LazyHolder.instance; } /** * @param restaurantsManager the restaurantsManager to set */ public void setRestaurantsManager(IRestaurantsManager restaurantsManager) { this.restaurantsManager = restaurantsManager; } /** * @return the restaurantsManager */ public IRestaurantsManager getRestaurantsManager() { return restaurantsManager; } /** * @param localesManager the localesManager to set */ public void setLocalesManager(ILocalesManager localesManager) { this.localesManager = localesManager; } /** * @return the localesManager */ public ILocalesManager getLocalesManager() { return localesManager; } /** * @return the mdoTableAsEnumsManager */ public IMdoTableAsEnumsManager getMdoTableAsEnumsManager() { return mdoTableAsEnumsManager; } /** * @param mdoTableAsEnumsManager the mdoTableAsEnumsManager to set */ public void setMdoTableAsEnumsManager( IMdoTableAsEnumsManager mdoTableAsEnumsManager) { this.mdoTableAsEnumsManager = mdoTableAsEnumsManager; } @Override protected String getDefaultLabel(IBeanLabelable mdoBean) { return null; } @Override public List<IMdoDtoBean> getList(Long restaurantId) throws MdoException { List<IMdoDtoBean> result = new ArrayList<IMdoDtoBean>(); try { List<IMdoBean> list = ((IPrintingInformationsDao) dao).findByRestaurant(restaurantId); if (list != null) { result = assembler.marshal(list); } } catch (MdoException e) { logger.error("message.error.administration.business.printing.informations.by.restaurant", new Object[] {restaurantId}, e); throw new MdoBusinessException("message.error.administration.business.printing.informations.by.restaurant", new Object[] {restaurantId}, e); } return result; } @Override public void processList(IAdministrationManagerViewBean viewBean, LocaleDto locale, boolean... lazy) throws MdoBusinessException { super.processList(viewBean, lazy); PrintingInformationsManagerViewBean managerViewBean = (PrintingInformationsManagerViewBean) viewBean; try { managerViewBean.setLabels(super.getLabels(locale)); managerViewBean.setLanguages(this.localesManager.getLanguages(locale.getLanguageCode())); managerViewBean.setAlignments(mdoTableAsEnumsManager.getPrintingInformationAlignments()); managerViewBean.setParts(mdoTableAsEnumsManager.getPrintingInformationParts()); managerViewBean.setSizes(mdoTableAsEnumsManager.getPrintingInformationSizes()); managerViewBean.setRestaurants(restaurantsManager.findAll()); } catch (Exception e) { logger.error("message.error.administration.business.find.all", e); throw new MdoBusinessException("message.error.administration.business.find.all", e); } } }