package com.salesmanager.shop.populator.customer;
import org.apache.commons.lang.StringUtils;
import com.salesmanager.core.model.common.Delivery;
import com.salesmanager.core.model.customer.Customer;
import com.salesmanager.core.business.exception.ConversionException;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.model.reference.language.Language;
import com.salesmanager.core.business.utils.AbstractDataPopulator;
import com.salesmanager.shop.model.customer.Address;
public class PersistableCustomerShippingAddressPopulator extends AbstractDataPopulator<Address, Customer>
{
@Override
public Customer populate( Address source, Customer target, MerchantStore store, Language language )
throws ConversionException
{
if( target.getDelivery() == null){
Delivery delivery=new Delivery();
delivery.setFirstName( source.getFirstName()) ;
delivery.setLastName( source.getLastName() );
if(StringUtils.isNotBlank( source.getAddress())){
delivery.setAddress( source.getAddress() );
}
if(StringUtils.isNotBlank( source.getCity())){
delivery.setCity( source.getCity() );
}
if(StringUtils.isNotBlank( source.getCompany())){
delivery.setCompany( source.getCompany() );
}
if(StringUtils.isNotBlank( source.getPhone())){
delivery.setTelephone( source.getPhone());
}
if(StringUtils.isNotBlank( source.getPostalCode())){
delivery.setPostalCode( source.getPostalCode());
}
if(StringUtils.isNotBlank( source.getStateProvince())){
delivery.setPostalCode( source.getStateProvince());
}
target.setDelivery( delivery );
}
else{
target.getDelivery().setFirstName( source.getFirstName() );
target.getDelivery().setLastName( source.getLastName() );
// lets fill optional data now
if(StringUtils.isNotBlank( source.getAddress())){
target.getDelivery().setAddress( source.getAddress() );
}
if(StringUtils.isNotBlank( source.getCity())){
target.getDelivery().setCity( source.getCity() );
}
if(StringUtils.isNotBlank( source.getCompany())){
target.getDelivery().setCompany( source.getCompany() );
}
if(StringUtils.isNotBlank( source.getPhone())){
target.getDelivery().setTelephone( source.getPhone());
}
if(StringUtils.isNotBlank( source.getPostalCode())){
target.getDelivery().setPostalCode( source.getPostalCode());
}
if(StringUtils.isNotBlank( source.getStateProvince())){
target.getDelivery().setPostalCode( source.getStateProvince());
}
}
return target;
}
@Override
protected Customer createTarget()
{
return null;
}
}