package com.salesmanager.core.business.services.catalog.product; import java.util.List; import java.util.Locale; import com.salesmanager.core.business.exception.ServiceException; import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService; import com.salesmanager.core.model.catalog.category.Category; import com.salesmanager.core.model.catalog.product.Product; import com.salesmanager.core.model.catalog.product.ProductCriteria; import com.salesmanager.core.model.catalog.product.ProductList; import com.salesmanager.core.model.catalog.product.description.ProductDescription; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.reference.language.Language; import com.salesmanager.core.model.tax.taxclass.TaxClass; public interface ProductService extends SalesManagerEntityService<Long, Product> { void addProductDescription(Product product, ProductDescription description) throws ServiceException; ProductDescription getProductDescription(Product product, Language language); Product getProductForLocale(long productId, Language language, Locale locale) throws ServiceException; List<Product> getProductsForLocale(Category category, Language language, Locale locale) throws ServiceException; List<Product> getProducts(List<Long> categoryIds) throws ServiceException; ProductList listByStore(MerchantStore store, Language language, ProductCriteria criteria); List<Product> listByStore(MerchantStore store); List<Product> listByTaxClass(TaxClass taxClass); List<Product> getProducts(List<Long> categoryIds, Language language) throws ServiceException; Product getBySeUrl(MerchantStore store, String seUrl, Locale locale); /** * Get a product by sku (code) field and the language * @param productCode * @param language * @return */ Product getByCode(String productCode, Language language); }