package fr.mch.mdo.restaurant.services.business.managers.assembler; import java.util.HashSet; import java.util.Set; 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.MdoTableAsEnum; import fr.mch.mdo.restaurant.dao.beans.User; import fr.mch.mdo.restaurant.dao.beans.UserRestaurant; import fr.mch.mdo.restaurant.dto.beans.MdoTableAsEnumDto; import fr.mch.mdo.restaurant.dto.beans.UserDto; import fr.mch.mdo.restaurant.dto.beans.UserRestaurantDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultUsersAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean { private ILogger logger; private IManagerAssembler userRestaurantsAssembler; private IManagerAssembler mdoTableAsEnumsAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultUsersAssembler(LoggerServiceImpl.getInstance().getLogger(DefaultUsersAssembler.class.getName())); } private DefaultUsersAssembler(ILogger logger) { this.setLogger(logger); this.mdoTableAsEnumsAssembler = DefaultMdoTableAsEnumsAssembler.getInstance(); this.userRestaurantsAssembler = DefaultUserRestaurantsAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } public DefaultUsersAssembler() { } public IManagerAssembler getUserRestaurantsAssembler() { return userRestaurantsAssembler; } public void setUserRestaurantsAssembler(IManagerAssembler userRestaurantsAssembler) { this.userRestaurantsAssembler = userRestaurantsAssembler; } public IManagerAssembler getMdoTableAsEnumsAssembler() { return mdoTableAsEnumsAssembler; } public void setMdoTableAsEnumsAssembler(IManagerAssembler mdoTableAsEnumsAssembler) { this.mdoTableAsEnumsAssembler = mdoTableAsEnumsAssembler; } @SuppressWarnings("unchecked") @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { UserDto dto = null; if (daoBean != null) { User bean = (User) daoBean; dto = new UserDto(); dto.setId(bean.getId()); dto.setBirthdate(bean.getBirthdate()); dto.setForename1(bean.getForename1()); dto.setForename2(bean.getForename2()); dto.setName(bean.getName()); dto.setSex(bean.isSex()); MdoTableAsEnumDto title = (MdoTableAsEnumDto) mdoTableAsEnumsAssembler.marshal(bean.getTitle()); dto.setTitle(title); Set<UserRestaurantDto> restaurants = (Set) userRestaurantsAssembler.marshal(bean.getRestaurants()); dto.setRestaurants(restaurants); } return dto; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } User bean = new User(); UserDto dto = (UserDto) dtoBean; bean.setId(dto.getId()); bean.setBirthdate(dto.getBirthdate()); bean.setForename1(dto.getForename1()); bean.setForename2(dto.getForename2()); bean.setName(dto.getName()); bean.setSex(dto.isSex()); MdoTableAsEnum title = (MdoTableAsEnum) mdoTableAsEnumsAssembler.unmarshal(dto.getTitle()); bean.setTitle(title); Set<UserRestaurant> restaurants = new HashSet<UserRestaurant>(); if (dto.getRestaurants() != null) { restaurants = (Set) userRestaurantsAssembler.unmarshal(dto.getRestaurants(), bean); } bean.setRestaurants(restaurants); return bean; } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } }