package com.salesmanager.core.business.services.catalog.product.price;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.salesmanager.core.business.exception.ServiceException;
import com.salesmanager.core.business.repositories.catalog.product.price.ProductPriceRepository;
import com.salesmanager.core.business.services.common.generic.SalesManagerEntityServiceImpl;
import com.salesmanager.core.model.catalog.product.price.ProductPrice;
import com.salesmanager.core.model.catalog.product.price.ProductPriceDescription;
@Service("productPrice")
public class ProductPriceServiceImpl extends SalesManagerEntityServiceImpl<Long, ProductPrice>
implements ProductPriceService {
@Inject
public ProductPriceServiceImpl(ProductPriceRepository productPriceRepository) {
super(productPriceRepository);
}
@Override
public void addDescription(ProductPrice price,
ProductPriceDescription description) throws ServiceException {
price.getDescriptions().add(description);
//description.setPrice(price);
update(price);
}
@Override
public void saveOrUpdate(ProductPrice price) throws ServiceException {
if(price.getId()!=null && price.getId()>0) {
this.update(price);
} else {
Set<ProductPriceDescription> descriptions = price.getDescriptions();
price.setDescriptions(new HashSet<ProductPriceDescription>());
this.create(price);
for(ProductPriceDescription description : descriptions) {
description.setProductPrice(price);
this.addDescription(price, description);
}
}
}
@Override
public void delete(ProductPrice price) throws ServiceException {
//override method, this allows the error that we try to remove a detached instance
price = this.getById(price.getId());
super.delete(price);
}
}