package com.salesmanager.core.business.services.catalog.product.attribute; import java.util.List; import javax.inject.Inject; import org.springframework.stereotype.Service; import com.salesmanager.core.business.exception.ServiceException; import com.salesmanager.core.business.repositories.catalog.product.attribute.ProductOptionValueRepository; import com.salesmanager.core.business.services.common.generic.SalesManagerEntityServiceImpl; import com.salesmanager.core.model.catalog.product.attribute.ProductAttribute; import com.salesmanager.core.model.catalog.product.attribute.ProductOptionValue; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.reference.language.Language; @Service("productOptionValueService") public class ProductOptionValueServiceImpl extends SalesManagerEntityServiceImpl<Long, ProductOptionValue> implements ProductOptionValueService { @Inject private ProductAttributeService productAttributeService; private ProductOptionValueRepository productOptionValueRepository; @Inject public ProductOptionValueServiceImpl( ProductOptionValueRepository productOptionValueRepository) { super(productOptionValueRepository); this.productOptionValueRepository = productOptionValueRepository; } @Override public List<ProductOptionValue> listByStore(MerchantStore store, Language language) throws ServiceException { return productOptionValueRepository.findByStoreId(store.getId(), language.getId()); } @Override public List<ProductOptionValue> listByStoreNoReadOnly(MerchantStore store, Language language) throws ServiceException { return productOptionValueRepository.findByReadOnly(store.getId(), language.getId(), false); } @Override public List<ProductOptionValue> getByName(MerchantStore store, String name, Language language) throws ServiceException { try { return productOptionValueRepository.findByName(store.getId(), name, language.getId()); } catch (Exception e) { throw new ServiceException(e); } } @Override public void saveOrUpdate(ProductOptionValue entity) throws ServiceException { //save or update (persist and attach entities if(entity.getId()!=null && entity.getId()>0) { super.update(entity); } else { super.save(entity); } } public void delete(ProductOptionValue entity) throws ServiceException { //remove all attributes having this option List<ProductAttribute> attributes = productAttributeService.getByOptionValueId(entity.getMerchantStore(), entity.getId()); for(ProductAttribute attribute : attributes) { productAttributeService.delete(attribute); } ProductOptionValue option = getById(entity.getId()); //remove option super.delete(option); } @Override public ProductOptionValue getByCode(MerchantStore store, String optionValueCode) { return productOptionValueRepository.findByCode(store.getId(), optionValueCode); } @Override public ProductOptionValue getById(MerchantStore store, Long optionValueId) { return productOptionValueRepository.findOne(store.getId(), optionValueId); } }