/** * Most of the code in the Qalingo project is copyrighted Hoteia and licensed * under the Apache License Version 2.0 (release version 0.8.0) * http://www.apache.org/licenses/LICENSE-2.0 * * Copyright (c) Hoteia, 2012-2014 * http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com * */ package org.hoteia.qalingo.core.service; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.hoteia.qalingo.core.comparator.CatalogCategoryMasterComparator; import org.hoteia.qalingo.core.comparator.CatalogCategoryVirtualComparator; import org.hoteia.qalingo.core.dao.CatalogCategoryDao; import org.hoteia.qalingo.core.domain.CatalogCategoryMaster; import org.hoteia.qalingo.core.domain.CatalogCategoryVirtual; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service("catalogCategoryService") @Transactional public class CatalogCategoryService { @Autowired protected CatalogCategoryDao catalogCategoryDao; // MASTER public CatalogCategoryMaster getMasterCatalogCategoryById(final Long catalogCategoryId, Object... params) { return catalogCategoryDao.getMasterCatalogCategoryById(catalogCategoryId, params); } public CatalogCategoryMaster getMasterCatalogCategoryById(final String rawCatalogCategoryId, Object... params) { long catalogCategoryId = -1; try { catalogCategoryId = Long.parseLong(rawCatalogCategoryId); } catch (NumberFormatException e) { throw new IllegalArgumentException(e); } return getMasterCatalogCategoryById(catalogCategoryId, params); } public CatalogCategoryMaster getMasterCatalogCategoryByCode(final String catalogCategoryCode, final String catalogMasterCode, Object... params) { return catalogCategoryDao.getMasterCatalogCategoryByCode(catalogCategoryCode, catalogMasterCode, params); } public List<CatalogCategoryMaster> findRootMasterCatalogCategoriesByCatalogCode(final String catalogMasterCode, Object... params) { List<CatalogCategoryMaster> categories = catalogCategoryDao.findRootMasterCatalogCategoriesByCatalogCode(catalogMasterCode, params); return orderCategoryMasterList(categories); } public List<CatalogCategoryMaster> findAllMasterCatalogCategoriesByCatalogCode(final String catalogMasterCode, Object... params) { List<CatalogCategoryMaster> categories = catalogCategoryDao.findAllMasterCatalogCategoriesByCatalogCode(catalogMasterCode, params); return orderCategoryMasterList(categories); } public List<CatalogCategoryMaster> findMasterCategoriesByProductSkuId(final Long productSkuId, Object... params) { return catalogCategoryDao.findMasterCategoriesByProductSkuId(productSkuId, params); } public List<CatalogCategoryMaster> orderCategoryMasterList(final List<CatalogCategoryMaster> categories) { Collections.sort(categories, new CatalogCategoryMasterComparator()); return categories; } public CatalogCategoryMaster saveOrUpdateCatalogCategory(CatalogCategoryMaster catalogCategory) { return catalogCategoryDao.saveOrUpdateCatalogCategory(catalogCategory); } public void deleteCatalogCategory(CatalogCategoryMaster catalogCategory) { catalogCategoryDao.deleteCatalogCategory(catalogCategory); } // VIRTUAL public CatalogCategoryVirtual getVirtualCatalogCategoryById(final Long catalogCategoryId, Object... params) { return catalogCategoryDao.getVirtualCatalogCategoryById(catalogCategoryId, params); } public CatalogCategoryVirtual getVirtualCatalogCategoryById(final String rawCatalogCategoryId, Object... params) { long catalogCategoryId = -1; try { catalogCategoryId = Long.parseLong(rawCatalogCategoryId); } catch (NumberFormatException e) { throw new IllegalArgumentException(e); } return getVirtualCatalogCategoryById(catalogCategoryId, params); } public CatalogCategoryVirtual getVirtualCatalogCategoryByCode(final String catalogCategoryCode, final String catalogVirtualCode, Object... params) { CatalogCategoryVirtual catalogCategoryVirtual = catalogCategoryDao.getVirtualCatalogCategoryByVirtualCategoryCode(catalogCategoryCode, catalogVirtualCode, params); return catalogCategoryVirtual; } public CatalogCategoryVirtual getVirtualCatalogCategoryByCode(final String catalogCategoryCode, final String catalogVirtualCode, final String catalogMasterCode, Object... params) { // FIRST TRY TO LOAD A VIRTUAL CATEGORY BY THE MASTER CATEGORY CODE CatalogCategoryVirtual catalogCategoryVirtual = catalogCategoryDao.getVirtualCatalogCategoryByMasterCategoryCode(catalogCategoryCode, catalogVirtualCode, catalogMasterCode, params); if(catalogCategoryVirtual == null){ // TRY TO FIND VIRTUAL CATAGORY WITH HIS OWN CODE catalogCategoryVirtual = catalogCategoryDao.getVirtualCatalogCategoryByVirtualCategoryCode(catalogCategoryCode, catalogVirtualCode, params); } return catalogCategoryVirtual; } public CatalogCategoryVirtual getDefaultVirtualCatalogCategoryByProductSkuId(final Long productSkuId, Object... params) { List<CatalogCategoryVirtual> categories = catalogCategoryDao.findVirtualCategoriesByProductSkuId(productSkuId, params); CatalogCategoryVirtual catalogCategoryVirtual = null; if (categories != null) { for (Iterator<CatalogCategoryVirtual> iterator = categories.iterator(); iterator.hasNext();) { CatalogCategoryVirtual catalogCategoryVirtualIterator = (CatalogCategoryVirtual) iterator.next(); if (catalogCategoryVirtualIterator.isDefault()) { catalogCategoryVirtual = catalogCategoryVirtualIterator; } } if (categories.size() > 0 && catalogCategoryVirtual == null) { catalogCategoryVirtual = categories.iterator().next(); } } return catalogCategoryVirtual; } public List<CatalogCategoryVirtual> findRootVirtualCatalogCategoriesByCatalogCode(final String catalogVirtualCode, Object... params) { List<CatalogCategoryVirtual> categories = catalogCategoryDao.findRootVirtualCatalogCategoriesByCatalogCode(catalogVirtualCode, params); return orderCategoryVirtualList(categories); } public List<CatalogCategoryVirtual> findAllVirtualCatalogCategoriesByCatalogCode(final String catalogVirtualCode, Object... params) { List<CatalogCategoryVirtual> categories = catalogCategoryDao.findAllVirtualCatalogCategoriesByCatalogCode(catalogVirtualCode, params); return orderCategoryVirtualList(categories); } public List<CatalogCategoryVirtual> findVirtualCategoriesByProductSkuId(final Long productSkuId, Object... params) { return catalogCategoryDao.findVirtualCategoriesByProductSkuId(productSkuId, params); } public List<CatalogCategoryVirtual> orderCategoryVirtualList(final List<CatalogCategoryVirtual> categories) { Collections.sort(categories, new CatalogCategoryVirtualComparator()); return categories; } public CatalogCategoryVirtual saveOrUpdateCatalogCategory(CatalogCategoryVirtual catalogCategory) { return catalogCategoryDao.saveOrUpdateCatalogCategory(catalogCategory); } public void deleteCatalogCategory(CatalogCategoryVirtual catalogCategory) { catalogCategoryDao.deleteCatalogCategory(catalogCategory); } }