package com.salesmanager.core.business.services.catalog.product.relationship; import java.util.List; import com.salesmanager.core.business.exception.ServiceException; import com.salesmanager.core.business.services.common.generic.SalesManagerEntityService; import com.salesmanager.core.model.catalog.product.Product; import com.salesmanager.core.model.catalog.product.relationship.ProductRelationship; import com.salesmanager.core.model.catalog.product.relationship.ProductRelationshipType; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.reference.language.Language; public interface ProductRelationshipService extends SalesManagerEntityService<Long, ProductRelationship> { void saveOrUpdate(ProductRelationship relationship) throws ServiceException; /** * Get product relationship List for a given type (RELATED, FEATURED...) and language allows * to return the product description in the appropriate language * @param store * @param product * @param type * @param language * @return * @throws ServiceException */ List<ProductRelationship> getByType(MerchantStore store, Product product, ProductRelationshipType type, Language language) throws ServiceException; /** * Get product relationship List for a given type (RELATED, FEATURED...) and a given base product * @param store * @param product * @param type * @return * @throws ServiceException */ List<ProductRelationship> getByType(MerchantStore store, Product product, ProductRelationshipType type) throws ServiceException; /** * Get product relationship List for a given type (RELATED, FEATURED...) * @param store * @param type * @return * @throws ServiceException */ List<ProductRelationship> getByType(MerchantStore store, ProductRelationshipType type) throws ServiceException; List<ProductRelationship> listByProduct(Product product) throws ServiceException; List<ProductRelationship> getByType(MerchantStore store, ProductRelationshipType type, Language language) throws ServiceException; /** * Get a list of relationship acting as groups of products * @param store * @return */ List<ProductRelationship> getGroups(MerchantStore store); /** * Creates a product group * @param groupName * @throws ServiceException */ void addGroup(MerchantStore store, String groupName) throws ServiceException; List<ProductRelationship> getByGroup(MerchantStore store, String groupName) throws ServiceException; void deleteGroup(MerchantStore store, String groupName) throws ServiceException; void deactivateGroup(MerchantStore store, String groupName) throws ServiceException; void activateGroup(MerchantStore store, String groupName) throws ServiceException; List<ProductRelationship> getByGroup(MerchantStore store, String groupName, Language language) throws ServiceException; }