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.Locale; import fr.mch.mdo.restaurant.dao.beans.Restaurant; import fr.mch.mdo.restaurant.dao.beans.User; import fr.mch.mdo.restaurant.dao.beans.UserAuthentication; import fr.mch.mdo.restaurant.dao.beans.UserLocale; import fr.mch.mdo.restaurant.dao.beans.UserRole; import fr.mch.mdo.restaurant.dto.beans.LocaleDto; import fr.mch.mdo.restaurant.dto.beans.RestaurantDto; import fr.mch.mdo.restaurant.dto.beans.UserAuthenticationDto; import fr.mch.mdo.restaurant.dto.beans.UserDto; import fr.mch.mdo.restaurant.dto.beans.UserLocaleDto; import fr.mch.mdo.restaurant.dto.beans.UserRoleDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultUserAuthenticationsAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean { private ILogger logger; private IManagerAssembler localesAssembler; private IManagerAssembler restaurantsAssembler; private IManagerAssembler usersAssembler; private IManagerAssembler userRolesAssembler; private IManagerAssembler userLocalesAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultUserAuthenticationsAssembler(LoggerServiceImpl.getInstance().getLogger( DefaultUserAuthenticationsAssembler.class.getName())); } private DefaultUserAuthenticationsAssembler(ILogger logger) { this.setLogger(logger); this.localesAssembler = DefaultLocalesAssembler.getInstance(); this.restaurantsAssembler = DefaultRestaurantsAssembler.getInstance(); this.usersAssembler = DefaultUsersAssembler.getInstance(); this.userRolesAssembler = DefaultUserRolesAssembler.getInstance(); this.userLocalesAssembler = DefaultUserLocalesAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } public DefaultUserAuthenticationsAssembler() { } public IManagerAssembler getLocalesAssembler() { return localesAssembler; } public void setLocalesAssembler(IManagerAssembler localesAssembler) { this.localesAssembler = localesAssembler; } public IManagerAssembler getRestaurantsAssembler() { return restaurantsAssembler; } public void setRestaurantsAssembler(IManagerAssembler restaurantsAssembler) { this.restaurantsAssembler = restaurantsAssembler; } public IManagerAssembler getUsersAssembler() { return usersAssembler; } public void setUsersAssembler(IManagerAssembler usersAssembler) { this.usersAssembler = usersAssembler; } public IManagerAssembler getUserRolesAssembler() { return userRolesAssembler; } public void setUserRolesAssembler(IManagerAssembler userRolesAssembler) { this.userRolesAssembler = userRolesAssembler; } public IManagerAssembler getUserLocalesAssembler() { return userLocalesAssembler; } public void setUserLocalesAssembler(IManagerAssembler userLocalesAssembler) { this.userLocalesAssembler = userLocalesAssembler; } @SuppressWarnings("unchecked") @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { UserAuthenticationDto dto = null; if (daoBean != null) { UserAuthentication bean = (UserAuthentication) daoBean; dto = new UserAuthenticationDto(); dto.setId(bean.getId()); dto.setLevelPass1(bean.getLevelPass1()); dto.setLevelPass2(bean.getLevelPass2()); dto.setLevelPass3(bean.getLevelPass3()); dto.setLogin(bean.getLogin()); dto.setPassword(bean.getPassword()); LocaleDto printingLocale = (LocaleDto) localesAssembler.marshal(bean.getPrintingLocale()); dto.setPrintingLocale(printingLocale); RestaurantDto restaurant = (RestaurantDto) restaurantsAssembler.marshal(bean.getRestaurant()); dto.setRestaurant(restaurant); UserDto user = (UserDto) usersAssembler.marshal(bean.getUser()); dto.setUser(user); UserRoleDto userRole = (UserRoleDto) userRolesAssembler.marshal(bean.getUserRole()); dto.setUserRole(userRole); Set<UserLocaleDto> locales = (Set) userLocalesAssembler.marshal(bean.getLocales()); dto.setLocales(locales); } return dto; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } UserAuthentication bean = new UserAuthentication(); UserAuthenticationDto dto = (UserAuthenticationDto) dtoBean; bean.setId(dto.getId()); bean.setLevelPass1(dto.getLevelPass1()); bean.setLevelPass2(dto.getLevelPass2()); bean.setLevelPass3(dto.getLevelPass3()); bean.setLogin(dto.getLogin()); bean.setPassword(dto.getPassword()); Locale printingLocale = (Locale) localesAssembler.unmarshal(dto.getPrintingLocale()); bean.setPrintingLocale(printingLocale); Restaurant restaurant = (Restaurant) restaurantsAssembler.unmarshal(dto.getRestaurant()); bean.setRestaurant(restaurant); User user = (User) usersAssembler.unmarshal(dto.getUser()); bean.setUser(user); UserRole userRole = (UserRole) userRolesAssembler.unmarshal(dto.getUserRole()); bean.setUserRole(userRole); Set<UserLocale> locales = new HashSet<UserLocale>(); if (dto.getLocales() != null) { locales = (Set) userLocalesAssembler.unmarshal(dto.getLocales(), bean); } bean.setLocales(locales); return bean; } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } }