/** * 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.pojo; import java.util.List; import org.dozer.Mapper; import org.hoteia.qalingo.core.domain.CatalogCategoryMaster; import org.hoteia.qalingo.core.domain.CatalogCategoryVirtual; import org.hoteia.qalingo.core.domain.CatalogMaster; import org.hoteia.qalingo.core.domain.CatalogVirtual; import org.hoteia.qalingo.core.domain.ProductMarketing; import org.hoteia.qalingo.core.domain.ProductSku; import org.hoteia.qalingo.core.pojo.catalog.CatalogCategoryPojo; import org.hoteia.qalingo.core.pojo.catalog.CatalogPojo; import org.hoteia.qalingo.core.pojo.product.ProductMarketingPojo; import org.hoteia.qalingo.core.pojo.product.ProductSkuPojo; import org.hoteia.qalingo.core.pojo.util.mapper.PojoUtil; import org.hoteia.qalingo.core.service.CatalogCategoryService; import org.hoteia.qalingo.core.service.CatalogService; import org.hoteia.qalingo.core.service.ProductService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service("catalogPojoService") @Transactional(readOnly = true) public class CatalogPojoService { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired protected Mapper dozerBeanMapper; @Autowired protected CatalogService catalogService; @Autowired protected CatalogCategoryService catalogCategoryService; @Autowired protected ProductService productService; public List<CatalogPojo> getAllCatalogMasters() { final List<CatalogMaster> allCatalogMasters = catalogService.findAllCatalogMasters(); logger.debug("Found {} catalogs", allCatalogMasters.size()); return PojoUtil.mapAll(dozerBeanMapper, allCatalogMasters, CatalogPojo.class); } public CatalogPojo getMasterCatalogByCode(final String catalogCode) { final CatalogMaster catalog = catalogService.getMasterCatalogById(catalogCode); logger.debug("Found catalog {} for catalogCode {}", catalog, catalogCode); return buildMasterCatalog(catalog); } public CatalogPojo getVirtualCatalogByCode(final String catalogCode) { final CatalogVirtual catalog = catalogService.getVirtualCatalogByCode(catalogCode); logger.debug("Found catalog {} for catalogCode {}", catalog, catalogCode); return buildVirtualCatalog(catalog); } public CatalogPojo buildMasterCatalog(final CatalogMaster catalogMaster) { final CatalogPojo catalogPojo = dozerBeanMapper.map(catalogMaster, CatalogPojo.class); logger.debug("Load {} catalog", catalogMaster.getCode()); return catalogPojo; } public CatalogPojo buildVirtualCatalog(final CatalogVirtual catalogVirtual) { final CatalogPojo catalogPojo = dozerBeanMapper.map(catalogVirtual, CatalogPojo.class); logger.debug("Load {} catalog", catalogVirtual.getCode()); return catalogPojo; } public List<CatalogCategoryPojo> getAllVirtualCategories(final String catalogVirtualCode) { final List<CatalogCategoryVirtual> allCategories = catalogCategoryService.findAllVirtualCatalogCategoriesByCatalogCode(catalogVirtualCode); logger.debug("Found {} categories", allCategories.size()); return PojoUtil.mapAll(dozerBeanMapper, allCategories, CatalogCategoryPojo.class); } public CatalogCategoryPojo buildCatalogCategory(final CatalogCategoryMaster catalogCategory) { final CatalogCategoryPojo catalogCategoryPojo = dozerBeanMapper.map(catalogCategory, CatalogCategoryPojo.class); logger.debug("Load {} category", catalogCategory.getCode()); return catalogCategoryPojo; } public CatalogCategoryPojo getCatalogCategoryByCode(final String catalogVirtualCode, final String categoryCode) { final CatalogCategoryVirtual catalogCategoryVirtual = catalogCategoryService.getVirtualCatalogCategoryByCode(categoryCode, catalogVirtualCode, categoryCode); logger.debug("Found catalogCategoryVirtual {} for catalogCode {}", catalogCategoryVirtual, categoryCode); return buildCatalogCategory(catalogCategoryVirtual); } public CatalogCategoryPojo buildCatalogCategory(final CatalogCategoryVirtual catalogCategory) { final CatalogCategoryPojo catalogCategoryPojo = dozerBeanMapper.map(catalogCategory, CatalogCategoryPojo.class); logger.debug("Load {} category", catalogCategory.getCode()); return catalogCategoryPojo; } public ProductMarketingPojo getProductMarketing(final String productMarketingCode) { final ProductMarketing productMarketing = productService.getProductMarketingByCode(productMarketingCode); return buildProductMarketing(productMarketing); } public ProductMarketingPojo buildProductMarketing(final ProductMarketing productMarketing) { final ProductMarketingPojo productMarketingPojo = dozerBeanMapper.map(productMarketing, ProductMarketingPojo.class); logger.debug("Load {} product marketing", productMarketing.getCode()); return productMarketingPojo; } public List<ProductMarketingPojo> getProductMarketingsByCategoryCode(final String catalogCode, final String categoryCode) { final List<ProductMarketing> productMarketings = productService.findProductMarketingsByVirtualCatalogCategoryCode(catalogCode, categoryCode); logger.debug("Found {} productMarketings", productMarketings.size()); return PojoUtil.mapAll(dozerBeanMapper, productMarketings, ProductMarketingPojo.class); } public List<ProductMarketingPojo> buildProductMarketings(final List<ProductMarketing> productMarketings) { return PojoUtil.mapAll(dozerBeanMapper, productMarketings, ProductMarketingPojo.class); } public List<ProductSkuPojo> getProductSkusByProductMarketingCode(final String productMarketingCode) { final List<ProductSku> productSkus = productService.findProductSkusByProductMarketingCode(productMarketingCode); logger.debug("Found {} productSkus", productSkus.size()); return PojoUtil.mapAll(dozerBeanMapper, productSkus, ProductSkuPojo.class); } public ProductSkuPojo getProductSku(final String productSkuCode) { final ProductSku productSku = productService.getProductSkuByCode(productSkuCode); return buildProductSku(productSku); } public ProductSkuPojo buildProductSku(final ProductSku productSku) { final ProductSkuPojo productSkuPojo = dozerBeanMapper.map(productSku, ProductSkuPojo.class); logger.debug("Load {} sku", productSku.getCode()); return productSkuPojo; } }