package com.salesmanager.core.business.services.catalog.category; 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.category.Category; import com.salesmanager.core.model.catalog.category.CategoryDescription; import com.salesmanager.core.model.merchant.MerchantStore; import com.salesmanager.core.model.reference.language.Language; public interface CategoryService extends SalesManagerEntityService<Long, Category> { List<Category> listByLineage(MerchantStore store, String lineage) throws ServiceException; List<Category> listBySeUrl(MerchantStore store, String seUrl) throws ServiceException; CategoryDescription getDescription(Category category, Language language) throws ServiceException; void addCategoryDescription(Category category, CategoryDescription description) throws ServiceException; void addChild(Category parent, Category child) throws ServiceException; List<Category> listByParent(Category category) throws ServiceException; List<Category> listByStoreAndParent(MerchantStore store, Category category) throws ServiceException; List<Category> getByName(MerchantStore store, String name, Language language) throws ServiceException; List<Category> listByStore(MerchantStore store) throws ServiceException; Category getByCode(MerchantStore store, String code) throws ServiceException; List<Category> listByStore(MerchantStore store, Language language) throws ServiceException; void saveOrUpdate(Category category) throws ServiceException; List<Category> listByDepth(MerchantStore store, int depth); /** * Get root categories by store for a given language * @param store * @param depth * @param language * @return */ List<Category> listByDepth(MerchantStore store, int depth, Language language); List<Category> listByLineage(String storeCode, String lineage) throws ServiceException; Category getByCode(String storeCode, String code) throws ServiceException; Category getBySeUrl(MerchantStore store, String seUrl); List<Category> listByParent(Category category, Language language); Category getByLanguage(long categoryId, Language language); /** * Returns a list by category containing the category code and the number of products * 1->obj[0] = book * obj[1] = 150 * 2->obj[0] = novell * obj[1] = 35 * ... * @param store * @param categoryIds * @return * @throws ServiceException */ List<Object[]> countProductsByCategories(MerchantStore store, List<Long> categoryIds) throws ServiceException; /** * Returns a list of Category by category code for a given language * @param store * @param codes * @param language * @return */ List<Category> listByCodes(MerchantStore store, List<String> codes, Language language); /** * List of Category by id * @param store * @param ids * @param language * @return */ List<Category> listByIds(MerchantStore store, List<Long> ids, Language language); }