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.Restaurant;
import fr.mch.mdo.restaurant.dao.beans.RestaurantPrefixTable;
import fr.mch.mdo.restaurant.dao.beans.RestaurantReductionTable;
import fr.mch.mdo.restaurant.dao.beans.RestaurantValueAddedTax;
import fr.mch.mdo.restaurant.dao.beans.RestaurantVatTableType;
import fr.mch.mdo.restaurant.dao.beans.TableType;
import fr.mch.mdo.restaurant.dao.beans.ValueAddedTax;
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.RestaurantReductionTableDto;
import fr.mch.mdo.restaurant.dto.beans.RestaurantValueAddedTaxDto;
import fr.mch.mdo.restaurant.dto.beans.RestaurantVatTableTypeDto;
import fr.mch.mdo.restaurant.dto.beans.TableTypeDto;
import fr.mch.mdo.restaurant.dto.beans.ValueAddedTaxDto;
import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl;
import fr.mch.mdo.utils.IManagerAssembler;
public class DefaultRestaurantsAssembler extends AbstractAssembler implements IManagerAssembler, ILoggerBean
{
private ILogger logger;
private IManagerAssembler mdoTableAsEnumsAssembler;
private IManagerAssembler tableTypesAssembler;
private IManagerAssembler restaurantVatsAssembler;
private IManagerAssembler restaurantPrefixTablesAssembler;
private IManagerAssembler restaurantReductionTablesAssembler;
private IManagerAssembler restaurantVatTableTypesAssembler;
// private IManagerAssembler productSpecialCodesAssembler;
private IManagerAssembler vatsAssembler;
private static class LazyHolder {
private static IManagerAssembler instance = new DefaultRestaurantsAssembler(LoggerServiceImpl.getInstance().getLogger(DefaultRestaurantsAssembler.class.getName()));
}
private DefaultRestaurantsAssembler(ILogger logger) {
this.setLogger(logger);
this.mdoTableAsEnumsAssembler = DefaultMdoTableAsEnumsAssembler.getInstance();
this.tableTypesAssembler = DefaultTableTypesAssembler.getInstance();
this.restaurantVatsAssembler = DefaultRestaurantValueAddedTaxesAssembler.getInstance();
this.restaurantPrefixTablesAssembler = DefaultRestaurantPrefixTablesAssembler.getInstance();
this.restaurantReductionTablesAssembler = DefaultRestaurantReductionTablesAssembler.getInstance();
this.restaurantVatTableTypesAssembler = DefaultRestaurantVatTableTypesAssembler.getInstance();
// this.productSpecialCodesAssembler = DefaultProductSpecialCodesAssembler.getInstance();
this.vatsAssembler = DefaultValueAddedTaxesAssembler.getInstance();
}
public static IManagerAssembler getInstance() {
return LazyHolder.instance;
}
public DefaultRestaurantsAssembler() {
}
public IManagerAssembler getMdoTableAsEnumsAssembler() {
return mdoTableAsEnumsAssembler;
}
public void setMdoTableAsEnumsAssembler(IManagerAssembler mdoTableAsEnumsAssembler) {
this.mdoTableAsEnumsAssembler = mdoTableAsEnumsAssembler;
}
/**
* @return the tableTypesAssembler
*/
public IManagerAssembler getTableTypesAssembler() {
return tableTypesAssembler;
}
/**
* @param tableTypesAssembler the tableTypesAssembler to set
*/
public void setTableTypesAssembler(IManagerAssembler tableTypesAssembler) {
this.tableTypesAssembler = tableTypesAssembler;
}
public IManagerAssembler getRestaurantVatsAssembler() {
return restaurantVatsAssembler;
}
public void setRestaurantVatsAssembler(IManagerAssembler restaurantVatsAssembler) {
this.restaurantVatsAssembler = restaurantVatsAssembler;
}
/**
* @param restaurantPrefixTablesAssembler the restaurantPrefixTablesAssembler to set
*/
public void setRestaurantPrefixTablesAssembler(IManagerAssembler restaurantPrefixTablesAssembler) {
this.restaurantPrefixTablesAssembler = restaurantPrefixTablesAssembler;
}
/**
* @return the restaurantPrefixTablesAssembler
*/
public IManagerAssembler getRestaurantPrefixTablesAssembler() {
return restaurantPrefixTablesAssembler;
}
/**
* @return the restaurantReductionTablesAssembler
*/
public IManagerAssembler getRestaurantReductionTablesAssembler() {
return restaurantReductionTablesAssembler;
}
/**
* @param restaurantReductionTablesAssembler the restaurantReductionTablesAssembler to set
*/
public void setRestaurantReductionTablesAssembler(
IManagerAssembler restaurantReductionTablesAssembler) {
this.restaurantReductionTablesAssembler = restaurantReductionTablesAssembler;
}
// /**
// * @return the productSpecialCodesAssembler
// */
// public IManagerAssembler getProductSpecialCodesAssembler() {
// return productSpecialCodesAssembler;
// }
//
// /**
// * @param productSpecialCodesAssembler the productSpecialCodesAssembler to set
// */
// public void setProductSpecialCodesAssembler(IManagerAssembler productSpecialCodesAssembler) {
// this.productSpecialCodesAssembler = productSpecialCodesAssembler;
// }
/**
* @return the restaurantVatTableTypesAssembler
*/
public IManagerAssembler getRestaurantVatTableTypesAssembler() {
return restaurantVatTableTypesAssembler;
}
/**
* @param restaurantVatTableTypesAssembler the restaurantVatTableTypesAssembler to set
*/
public void setRestaurantVatTableTypesAssembler(
IManagerAssembler restaurantVatTableTypesAssembler) {
this.restaurantVatTableTypesAssembler = restaurantVatTableTypesAssembler;
}
/**
* @return the vatsAssembler
*/
public IManagerAssembler getVatsAssembler() {
return vatsAssembler;
}
/**
* @param vatsAssembler the vatsAssembler to set
*/
public void setVatsAssembler(IManagerAssembler vatsAssembler) {
this.vatsAssembler = vatsAssembler;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public IMdoDtoBean marshal(IMdoDaoBean daoBean) {
RestaurantDto dto = null;
if (daoBean != null) {
Restaurant bean = (Restaurant) daoBean;
dto = new RestaurantDto();
dto.setId(bean.getId());
dto.setAddressCity(bean.getAddressCity());
dto.setAddressRoad(bean.getAddressRoad());
dto.setAddressZip(bean.getAddressZip());
dto.setName(bean.getName());
dto.setPhone(bean.getPhone());
dto.setReference(bean.getReference());
dto.setRegistrationDate(bean.getRegistrationDate());
MdoTableAsEnumDto specificRound = null;
if (bean.getSpecificRound() != null) {
specificRound = (MdoTableAsEnumDto) mdoTableAsEnumsAssembler.marshal(bean.getSpecificRound());
}
dto.setSpecificRound(specificRound);
TableTypeDto defaultTableType = null;
if (bean.getDefaultTableType() != null) {
defaultTableType = (TableTypeDto) tableTypesAssembler.marshal(bean.getDefaultTableType());
}
dto.setDefaultTableType(defaultTableType);
ValueAddedTaxDto orderLineDefaultVat = null;
if (bean.getVat() != null) {
orderLineDefaultVat = (ValueAddedTaxDto) vatsAssembler.marshal(bean.getVat());
}
dto.setVat(orderLineDefaultVat);
dto.setTripleDESKey(bean.getTripleDESKey());
dto.setVatByTakeaway(bean.isVatByTakeaway());
dto.setVatRef(bean.getVatRef());
dto.setVisaRef(bean.getVisaRef());
Set<RestaurantValueAddedTaxDto> vats = null;
if (bean.getVats() != null) {
vats = (Set) restaurantVatsAssembler.marshal(bean.getVats());
}
dto.setVats(vats);
Set<RestaurantPrefixTableDto> prefixTableNames = null;
if (bean.getPrefixTableNames() != null) {
prefixTableNames = (Set) restaurantPrefixTablesAssembler.marshal(bean.getPrefixTableNames());
// Set the user restaurant
// List<String> prefixTakeawayName = new ArrayList<String>();
// for (Iterator iterator = prefixTableNames.iterator(); iterator.hasNext();) {
// RestaurantPrefixTableDto restaurantPrefixTableDto = (RestaurantPrefixTableDto) iterator.next();
// if (ManagedTableType.TAKE_AWAY.name().equals(restaurantPrefixTableDto.getType().getCode().getName())) {
// prefixTakeawayName.add(restaurantPrefixTableDto.getPrefix().getName());
// }
// }
// dto.setPrefixTakeawayNames(prefixTakeawayName.toArray(new String[0]));
}
dto.setPrefixTableNames(prefixTableNames);
Set<RestaurantReductionTableDto> reductionTables = null;
if (bean.getReductionTables() != null) {
reductionTables = (Set) restaurantReductionTablesAssembler.marshal(bean.getReductionTables());
}
dto.setReductionTables(reductionTables);
Set<RestaurantVatTableTypeDto> vatTableTypes = null;
if (bean.getVatTableTypes() != null) {
vatTableTypes = (Set) restaurantVatTableTypesAssembler.marshal(bean.getVatTableTypes());
}
dto.setVatTableTypes(vatTableTypes);
// Set<ProductSpecialCodeDto> productSpecialCodes = null;
// if (bean.getProductSpecialCodes() != null) {
// productSpecialCodes = (Set) productSpecialCodesAssembler.marshal(bean.getProductSpecialCodes());
// }
// dto.setProductSpecialCodes(productSpecialCodes);
}
return dto;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) {
if (dtoBean == null) {
return null;
}
Restaurant bean = new Restaurant();
RestaurantDto dto = (RestaurantDto) dtoBean;
bean.setId(dto.getId());
bean.setAddressCity(dto.getAddressCity());
bean.setAddressRoad(dto.getAddressRoad());
bean.setAddressZip(dto.getAddressZip());
bean.setName(dto.getName());
bean.setPhone(dto.getPhone());
bean.setReference(dto.getReference());
bean.setRegistrationDate(dto.getRegistrationDate());
MdoTableAsEnum specificRound = null;
if (dto.getSpecificRound() != null) {
specificRound = (MdoTableAsEnum) mdoTableAsEnumsAssembler.unmarshal(dto.getSpecificRound());
}
bean.setSpecificRound(specificRound);
TableType defaultTableType = null;
if (dto.getDefaultTableType() != null) {
defaultTableType = (TableType) tableTypesAssembler.unmarshal(dto.getDefaultTableType());
}
bean.setDefaultTableType(defaultTableType);
ValueAddedTax orderLineDefaultVat = null;
if (dto.getVat() != null) {
orderLineDefaultVat = (ValueAddedTax) vatsAssembler.unmarshal(dto.getVat());
}
bean.setVat(orderLineDefaultVat);
bean.setTripleDESKey(dto.getTripleDESKey());
bean.setVatByTakeaway(dto.isVatByTakeaway());
bean.setVatRef(dto.getVatRef());
bean.setVisaRef(dto.getVisaRef());
Set<RestaurantValueAddedTax> vats = new HashSet<RestaurantValueAddedTax>();
if (dto.getVats() != null) {
vats = (Set) restaurantVatsAssembler.unmarshal(dto.getVats(), bean);
}
bean.setVats(vats);
Set<RestaurantPrefixTable> prefixTableNames = new HashSet<RestaurantPrefixTable>();
if (dto.getPrefixTableNames() != null) {
prefixTableNames = (Set) restaurantPrefixTablesAssembler.unmarshal(dto.getPrefixTableNames(), bean);
}
bean.setPrefixTableNames(prefixTableNames);
Set<RestaurantReductionTable> reductionTables = new HashSet<RestaurantReductionTable>();
if (dto.getReductionTables() != null) {
reductionTables = (Set) restaurantReductionTablesAssembler.unmarshal(dto.getReductionTables(), bean);
}
bean.setReductionTables(reductionTables);
Set<RestaurantVatTableType> vatTableTypes = new HashSet<RestaurantVatTableType>();
if (dto.getVatTableTypes() != null) {
vatTableTypes = (Set) restaurantVatTableTypesAssembler.unmarshal(dto.getVatTableTypes(), bean);
}
bean.setVatTableTypes(vatTableTypes);
return bean;
}
@Override
public ILogger getLogger() {
return logger;
}
@Override
public void setLogger(ILogger logger) {
this.logger = logger;
}
}