package fr.mch.mdo.restaurant.services.business.managers.assembler; 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.CashingType; import fr.mch.mdo.restaurant.dao.beans.DinnerTable; import fr.mch.mdo.restaurant.dao.beans.TableCashing; import fr.mch.mdo.restaurant.dto.beans.CashingTypeDto; import fr.mch.mdo.restaurant.dto.beans.DinnerTableDto; import fr.mch.mdo.restaurant.dto.beans.TableCashingDto; import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl; import fr.mch.mdo.utils.IManagerAssembler; public class DefaultTableCashingsAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean { private ILogger logger; private IManagerAssembler cashingTypesAssembler; private static class LazyHolder { private static IManagerAssembler instance = new DefaultTableCashingsAssembler(LoggerServiceImpl.getInstance().getLogger(DefaultTableCashingsAssembler.class.getName())); } private DefaultTableCashingsAssembler(ILogger logger) { this.setLogger(logger); this.cashingTypesAssembler = DefaultCashingTypesAssembler.getInstance(); } public static IManagerAssembler getInstance() { return LazyHolder.instance; } public DefaultTableCashingsAssembler() { } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDtoBean marshal(IMdoDaoBean daoBean) { TableCashingDto dto = null; if (daoBean != null) { TableCashing bean = (TableCashing) daoBean; dto = new TableCashingDto(); dto.setId(bean.getId()); dto.setCashingDate(bean.getCashingDate()); if (bean.getDinnerTable() != null) { DinnerTableDto dinnerTable = new DinnerTableDto(); dinnerTable.setId(bean.getDinnerTable().getId()); dto.setDinnerTable(dinnerTable); } Set<CashingTypeDto> cashingTypes = null; if (bean.getCashingTypes() != null) { cashingTypes = (Set) cashingTypesAssembler.marshal(bean.getCashingTypes()); } dto.setCashingTypes(cashingTypes); } return dto; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) { if (dtoBean == null) { return null; } TableCashing bean = new TableCashing(); TableCashingDto dto = (TableCashingDto) dtoBean; bean.setId(dto.getId()); bean.setCashingDate(dto.getCashingDate()); DinnerTable dinnerTable = null; if (parents != null && parents.length == 1) { dinnerTable = (DinnerTable) parents[0]; } if (dinnerTable == null && dto.getDinnerTable() != null) { dto.getDinnerTable().setCashing(null); dinnerTable = new DinnerTable(); dinnerTable.setId(dto.getDinnerTable().getId()); } bean.setDinnerTable(dinnerTable); Set<CashingType> cashingTypes = null; if (dto.getCashingTypes() != null) { cashingTypes = (Set) cashingTypesAssembler.unmarshal(dto.getCashingTypes(), bean); } bean.setCashingTypes(cashingTypes); return bean; } @Override public ILogger getLogger() { return logger; } @Override public void setLogger(ILogger logger) { this.logger = logger; } }