package fr.mch.mdo.restaurant.services.business.managers.assembler; import fr.mch.mdo.logs.ILogger; import fr.mch.mdo.logs.ILoggerBean; import fr.mch.mdo.restaurant.beans.IMdoDaoBean; import fr.mch.mdo.restaurant.beans.IMdoDtoBean; import fr.mch.mdo.restaurant.dao.beans.Category; import fr.mch.mdo.restaurant.dao.beans.Product; import fr.mch.mdo.restaurant.dao.beans.ProductCategory; import fr.mch.mdo.restaurant.dto.beans.CategoryDto; import fr.mch.mdo.restaurant.dto.beans.ProductCategoryDto; import fr.mch.mdo.restaurant.dto.beans.ProductDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultProductCategoriesAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean { private ILogger logger; private IManagerAssembler categoriesAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultProductCategoriesAssembler( LoggerServiceImpl.getInstance().getLogger(DefaultProductCategoriesAssembler.class.getName())); } private DefaultProductCategoriesAssembler(ILogger logger) { this.setLogger(logger); this.categoriesAssembler = DefaultCategoriesAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } public DefaultProductCategoriesAssembler() { } public IManagerAssembler getCategoriesAssembler() { return categoriesAssembler; } public void setCategoriesAssembler(IManagerAssembler categoriesAssembler) { this.categoriesAssembler = categoriesAssembler; } @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { ProductCategoryDto dto = null; if (daoBean != null) { ProductCategory bean = (ProductCategory) daoBean; dto = new ProductCategoryDto(); dto.setId(bean.getId()); dto.setQuantity(bean.getQuantity()); CategoryDto category = (CategoryDto) categoriesAssembler.marshal(bean.getCategory()); dto.setCategory(category); ProductDto product = null; dto.setProduct(product); } return dto; } @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } ProductCategory bean = new ProductCategory(); ProductCategoryDto dto = (ProductCategoryDto) dtoBean; bean.setId(dto.getId()); bean.setQuantity(dto.getQuantity()); if (parents != null && parents.length == 1) { bean.setProduct((Product) parents[0]); } Category category = (Category) categoriesAssembler.unmarshal(dto.getCategory()); bean.setCategory(category); return bean; } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } }