1 package org.woehlke.greenshop.oodm.catalog; 2 3 import java.util.*; 4 5 import javax.inject.Inject; 6 import javax.inject.Named; 7 8 import org.springframework.transaction.annotation.Propagation; 9 import org.springframework.transaction.annotation.Transactional; 10 import org.woehlke.greenshop.oodm.catalog.entities.*; 11 import org.woehlke.greenshop.oodm.catalog.model.*; 12 import org.woehlke.greenshop.oodm.catalog.repositories.*; 13 14 @Named 15 @Transactional(readOnly=true,propagation= Propagation.REQUIRED) 16 public class CatalogServiceImpl implements CatalogService { 17 18 @Inject 19 private ProductDescriptionRepositoryDao productDescriptionRepositoryDao; 20 21 @Inject 22 private ManufacturerRepository manufacturerRepository; 23 24 @Inject 25 private ManufacturerInfoRepository manufacturerInfoRepository; 26 27 @Inject 28 private ManufacturerInfoDao manufacturerInfoDao; 29 30 @Inject 31 private ProductAttributeRepository productAttributeRepository; 32 33 @Inject 34 private ProductOptionRepository productOptionRepository; 35 36 @Inject 37 private ProductOptionValueRepository productOptionValueRepository; 38 39 @Inject 40 private ProductImageRepository productImageRepository; 41 42 @Inject 43 private ReviewRepository reviewRepository; 44 45 @Inject 46 private SpecialRepository specialRepository; 47 48 @Override 49 public ProductAttributes findProductOptionsByProduct( 50 ProductDescription product) { 51 Language language = product.getLanguage(); 52 List<ProductAttribute> listProductAttribute = productAttributeRepository.findByProduct(product.getProduct()); 53 Map<ProductOption,List<ProductOptionAttribute>> mapProductOptionAttribute = new HashMap<ProductOption,List<ProductOptionAttribute>>(); 54 for(ProductAttribute pa :listProductAttribute){ 55 ProductOptionId oid = new ProductOptionId(); 56 oid.setId(pa.getOptionId()); 57 oid.setLanguage(language); 58 ProductOption po = productOptionRepository.getOne(oid); 59 ProductOptionValueId povid = new ProductOptionValueId(); 60 povid.setId(pa.getValueId()); 61 povid.setLanguage(language); 62 ProductOptionValue pov = productOptionValueRepository.getOne(povid); 63 ProductOptionAttribute poa = new ProductOptionAttribute(); 64 poa.setProductAttribute(pa); 65 poa.setProductOption(po); 66 poa.setProductOptionValue(pov); 67 StringBuilder sb = new StringBuilder(); 68 sb.append(pov.getName()); 69 if(pa.getPrice()!=0.0){ 70 sb.append(" ("); 71 sb.append(pa.getPricePrefix()); 72 sb.append(pa.getPrice()); 73 sb.append(")"); 74 } 75 poa.setOptionValue(sb.toString()); 76 if(mapProductOptionAttribute.containsKey(po)){ 77 List<ProductOptionAttribute> mapList = mapProductOptionAttribute.get(po); 78 mapList.add(poa); 79 mapProductOptionAttribute.remove(po); 80 mapProductOptionAttribute.put(po, mapList); 81 } else { 82 List<ProductOptionAttribute> mapList = new ArrayList<ProductOptionAttribute>(); 83 mapList.add(poa); 84 mapProductOptionAttribute.put(po, mapList); 85 } 86 } 87 ProductAttributes productAttributes = new ProductAttributes(); 88 productAttributes.setProductDescription(product); 89 productAttributes.setMapProductOptionAttribute(mapProductOptionAttribute); 90 return productAttributes; 91 } 92 93 @Override 94 public List<ProductImage> findProductImages(Product product) { 95 return productImageRepository.findByProductOrderBySequenceAsc(product); 96 } 97 98 @Override 99 public int getNumberOfReviewsForProduct(Product product) { 100 List<Review> reviews = reviewRepository.findByProduct(product); 101 return reviews.size(); 102 } 103 104 105 }