View Javadoc
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 }