package fr.mch.mdo.restaurant.services.business.managers;
import fr.mch.mdo.logs.ILogger;
import fr.mch.mdo.restaurant.dao.IDaoServices;
import fr.mch.mdo.restaurant.dao.orders.IOrderLinesDao;
import fr.mch.mdo.restaurant.dao.orders.hibernate.DefaultOrderLinesDao;
import fr.mch.mdo.restaurant.dao.products.IProductSpecialCodesDao;
import fr.mch.mdo.restaurant.dao.products.IProductsDao;
import fr.mch.mdo.restaurant.dao.products.hibernate.DefaultProductSpecialCodesDao;
import fr.mch.mdo.restaurant.dao.products.hibernate.DefaultProductsDao;
import fr.mch.mdo.restaurant.dao.tables.hibernate.DefaultDinnerTablesDao;
import fr.mch.mdo.restaurant.services.business.utils.DefaultOrdersUtils;
import fr.mch.mdo.restaurant.services.business.utils.IOrdersUtils;
import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl;
public class DefaultOrdersManager extends AbstractRestaurantManager implements IOrdersManager
{
private IProductsDao productsDao;
private IProductSpecialCodesDao productSpecialCodeDao;
private IOrderLinesDao orderLinesDao;
private IOrdersUtils utils;
private static class LazyHolder {
private static IOrdersManager instance = new DefaultOrdersManager(
LoggerServiceImpl.getInstance().getLogger(DefaultOrdersManager.class.getName()),
DefaultDinnerTablesDao.getInstance());
}
private DefaultOrdersManager(ILogger logger, IDaoServices dao) {
super.logger = logger;
super.dao = dao;
this.productsDao = DefaultProductsDao.getInstance();
this.productSpecialCodeDao = DefaultProductSpecialCodesDao.getInstance();
this.orderLinesDao = DefaultOrderLinesDao.getInstance();
this.utils = DefaultOrdersUtils.getInstance();
}
/**
* This constructor is used by ioc
*/
public DefaultOrdersManager() {
}
public static IOrdersManager getInstance() {
return LazyHolder.instance;
}
/**
* @return the productsDao
*/
public IProductsDao getProductsDao() {
return productsDao;
}
/**
* @param productsDao the productsDao to set
*/
public void setProductsDao(IProductsDao productsDao) {
this.productsDao = productsDao;
}
/**
* @return the productSpecialCodeDao
*/
public IProductSpecialCodesDao getProductSpecialCodeDao() {
return productSpecialCodeDao;
}
/**
* @param productSpecialCodeDao the productSpecialCodeDao to set
*/
public void setProductSpecialCodeDao(
IProductSpecialCodesDao productSpecialCodeDao) {
this.productSpecialCodeDao = productSpecialCodeDao;
}
/**
* @return the orderLinesDao
*/
public IOrderLinesDao getOrderLinesDao() {
return orderLinesDao;
}
/**
* @param orderLinesDao the orderLinesDao to set
*/
public void setOrderLinesDao(IOrderLinesDao orderLinesDao) {
this.orderLinesDao = orderLinesDao;
}
/**
* @return the utils
*/
public IOrdersUtils getUtils() {
return utils;
}
/**
* @param utils the utils to set
*/
public void setUtils(IOrdersUtils utils) {
this.utils = utils;
}
}