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.MdoTableAsEnum; import fr.mch.mdo.restaurant.dao.beans.Restaurant; import fr.mch.mdo.restaurant.dao.beans.RestaurantPrefixTable; import fr.mch.mdo.restaurant.dao.beans.TableType; import fr.mch.mdo.restaurant.dto.beans.MdoTableAsEnumDto; import fr.mch.mdo.restaurant.dto.beans.RestaurantDto; import fr.mch.mdo.restaurant.dto.beans.RestaurantPrefixTableDto; import fr.mch.mdo.restaurant.dto.beans.TableTypeDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultRestaurantPrefixTablesAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean { private ILogger logger; private IManagerAssembler mdoTableAsEnumsAssembler; private IManagerAssembler tableTypesAssembler; //private IManagerAssembler restaurantsAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultRestaurantPrefixTablesAssembler(LoggerServiceImpl.getInstance().getLogger( DefaultRestaurantPrefixTablesAssembler.class.getName())); } private DefaultRestaurantPrefixTablesAssembler(ILogger logger) { this.setLogger(logger); this.mdoTableAsEnumsAssembler = DefaultMdoTableAsEnumsAssembler.getInstance(); this.tableTypesAssembler = DefaultTableTypesAssembler.getInstance(); //this.restaurantsAssembler = DefaultRestaurantsAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } public DefaultRestaurantPrefixTablesAssembler() { } public IManagerAssembler getMdoTableAsEnumsAssembler() { return mdoTableAsEnumsAssembler; } public void setMdoTableAsEnumsAssembler(IManagerAssembler mdoTableAsEnumsAssembler) { this.mdoTableAsEnumsAssembler = mdoTableAsEnumsAssembler; } public IManagerAssembler getTableTypesAssembler() { return tableTypesAssembler; } public void setTableTypesAssembler(IManagerAssembler tableTypesAssembler) { this.tableTypesAssembler = tableTypesAssembler; } // /** // * @param restaurantsAssembler the restaurantsAssembler to set // */ // public void setRestaurantsAssembler(IManagerAssembler restaurantsAssembler) { // this.restaurantsAssembler = restaurantsAssembler; // } // // /** // * @return the restaurantsAssembler // */ // public IManagerAssembler getRestaurantsAssembler() { // return restaurantsAssembler; // } @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { RestaurantPrefixTableDto dto = null; if (daoBean != null) { RestaurantPrefixTable bean = (RestaurantPrefixTable) daoBean; dto = new RestaurantPrefixTableDto(); dto.setId(bean.getId()); MdoTableAsEnumDto prefix = (MdoTableAsEnumDto) mdoTableAsEnumsAssembler.marshal(bean.getPrefix()); dto.setPrefix(prefix); if(bean.getRestaurant() != null) { RestaurantDto restaurant = new RestaurantDto(); restaurant.setId(bean.getRestaurant().getId()); dto.setRestaurant(restaurant); } TableTypeDto type = (TableTypeDto) tableTypesAssembler.marshal(bean.getType()); dto.setType(type); } return dto; } @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } RestaurantPrefixTable bean = new RestaurantPrefixTable(); RestaurantPrefixTableDto dto = (RestaurantPrefixTableDto) dtoBean; bean.setId(dto.getId()); MdoTableAsEnum prefix = (MdoTableAsEnum) mdoTableAsEnumsAssembler.unmarshal(dto.getPrefix()); bean.setPrefix(prefix); Restaurant restaurant = null; if (parents != null && parents.length == 1) { restaurant = (Restaurant) parents[0]; } if (restaurant == null && dto.getRestaurant() != null) { dto.getRestaurant().setPrefixTableNames(null); restaurant = new Restaurant(); restaurant.setId(dto.getRestaurant().getId()); } bean.setRestaurant(restaurant); TableType type = (TableType) tableTypesAssembler.unmarshal(dto.getType()); bean.setType(type); return bean; } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } }