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.CashingType; import fr.mch.mdo.restaurant.dao.beans.MdoTableAsEnum; import fr.mch.mdo.restaurant.dao.beans.TableCashing; import fr.mch.mdo.restaurant.dto.beans.CashingTypeDto; import fr.mch.mdo.restaurant.dto.beans.MdoTableAsEnumDto; import fr.mch.mdo.restaurant.dto.beans.TableCashingDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultCashingTypesAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean { private ILogger logger; private IManagerAssembler mdoTableAsEnumsAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultCashingTypesAssembler(LoggerServiceImpl.getInstance().getLogger(DefaultCashingTypesAssembler.class.getName())); } private DefaultCashingTypesAssembler(ILogger logger) { this.setLogger(logger); this.mdoTableAsEnumsAssembler = DefaultMdoTableAsEnumsAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } public DefaultCashingTypesAssembler() { } @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { CashingTypeDto dto = null; if (daoBean != null) { CashingType bean = (CashingType) daoBean; dto = new CashingTypeDto(); dto.setId(bean.getId()); dto.setAmount(bean.getAmount()); MdoTableAsEnumDto type = (MdoTableAsEnumDto) mdoTableAsEnumsAssembler.marshal(bean.getType()); dto.setType(type); if (bean.getTableCashing() != null) { TableCashingDto tableCashing = new TableCashingDto(); tableCashing.setId(bean.getTableCashing().getId()); dto.setTableCashing(tableCashing); } } return dto; } @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } CashingType bean = new CashingType(); CashingTypeDto dto = (CashingTypeDto) dtoBean; bean.setId(dto.getId()); bean.setAmount(dto.getAmount()); MdoTableAsEnum type = (MdoTableAsEnum) mdoTableAsEnumsAssembler.unmarshal(dto.getType()); bean.setType(type); TableCashing tableCashing = null; if (parents != null && parents.length == 1) { tableCashing = (TableCashing) parents[0]; } if (tableCashing == null && dto.getTableCashing() != null) { dto.getTableCashing().setCashingTypes(null); tableCashing = new TableCashing(); tableCashing.setId(dto.getTableCashing().getId()); } bean.setTableCashing(tableCashing); return bean; } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } }