Subversion Repositories SmartDukaan

Rev

Rev 2950 | Rev 3118 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2950 Rev 3112
Line 1... Line 1...
1
/**
1
/**
2
 * 
2
 * 
3
 */
3
 */
4
package in.shop2020.serving.controllers;
4
package in.shop2020.serving.controllers;
5
 
5
 
-
 
6
import in.shop2020.model.v1.catalog.InventoryServiceException;
-
 
7
import in.shop2020.serving.utils.EhcacheWrapper;
-
 
8
import in.shop2020.serving.utils.FileUtils;
-
 
9
import in.shop2020.serving.utils.Utils;
-
 
10
import in.shop2020.thrift.clients.CatalogServiceClient;
-
 
11
 
6
import java.io.File;
12
import java.io.File;
7
import java.io.IOException;
13
import java.io.IOException;
8
import java.util.ArrayList;
14
import java.util.ArrayList;
9
import java.util.List;
15
import java.util.List;
10
 
16
 
11
import in.shop2020.model.v1.catalog.InventoryServiceException;
-
 
12
import in.shop2020.serving.utils.FileUtils;
-
 
13
import in.shop2020.serving.utils.Utils;
17
import net.sf.ehcache.CacheManager;
14
import in.shop2020.thrift.clients.CatalogServiceClient;
-
 
15
 
18
 
16
import org.apache.log4j.Logger;
19
import org.apache.log4j.Logger;
17
import org.apache.struts2.rest.DefaultHttpHeaders;
20
import org.apache.struts2.rest.DefaultHttpHeaders;
18
import org.apache.struts2.rest.HttpHeaders;
21
import org.apache.struts2.rest.HttpHeaders;
19
import org.apache.thrift.TException;
22
import org.apache.thrift.TException;
Line 28... Line 31...
28
	private static final long serialVersionUID = 3380274695464543863L;
31
	private static final long serialVersionUID = 3380274695464543863L;
29
	
32
	
30
	private static Logger log = Logger.getLogger(Class.class);	
33
	private static Logger log = Logger.getLogger(Class.class);	
31
	private static final int windowSize = 20;
34
	private static final int windowSize = 20;
32
	
35
	
-
 
36
	private static final String SHOWCASE_BEST_SELLERS_CACHE_KEY = "SHOWCASE_BEST_SELLERS";
-
 
37
    private static final String SHOWCASE_BEST_SELLERS_COUNT_CACHE_KEY = "SHOWCASE_BEST_SELLERS_COUNT";
-
 
38
	
33
	private long beginIndex = 0;
39
	private long beginIndex = 0;
34
	
40
	
35
	private long totalItems;
41
	private Long totalItems = 0l;
36
	
42
	
37
	private String id;
43
	private String id;
38
	
44
	
39
	List<Long> items = null;
45
	List<Long> items = null;
-
 
46
    
-
 
47
    private List<String> snippets = null;
40
	
48
	
41
	CatalogServiceClient catalogClientService = null;
49
	CatalogServiceClient catalogClientService = null;
42
	
50
	
43
	public BestSellersController() {
51
	public BestSellersController() {
44
		super();
52
		super();
Line 62... Line 70...
62
    	return new DefaultHttpHeaders("index");
70
    	return new DefaultHttpHeaders("index");
63
    }
71
    }
64
 
72
 
65
    // GET /show
73
    // GET /show
66
    public HttpHeaders show() {
74
    public HttpHeaders show() {
-
 
75
        EhcacheWrapper<String, Object> showcasePageSnippetsCache = new EhcacheWrapper<String, Object>(
-
 
76
                EhcacheWrapper.SHOWCASE_PAGE_SNIPPET_CACHE_NAME, CacheManager.create());
-
 
77
        this.snippets = (List<String>)showcasePageSnippetsCache.get(SHOWCASE_BEST_SELLERS_CACHE_KEY + beginIndex);
-
 
78
        this.totalItems = (Long)showcasePageSnippetsCache.get(SHOWCASE_BEST_SELLERS_COUNT_CACHE_KEY);
-
 
79
        if(this.snippets != null && !this.snippets.isEmpty() && this.totalItems > 0) {
-
 
80
            log.info("Using Cache.");
-
 
81
            return new DefaultHttpHeaders("show");
-
 
82
        }
-
 
83
        log.info("Getting best sellers from snippets.");
67
    	in.shop2020.model.v1.catalog.InventoryService.Client client = catalogClientService.getClient();
84
    	in.shop2020.model.v1.catalog.InventoryService.Client client = catalogClientService.getClient();
68
    	try {
85
    	try {
69
			this.setTotalItems(client.getBestSellersCount());
86
			this.setTotalItems(client.getBestSellersCount());
-
 
87
			showcasePageSnippetsCache.put(SHOWCASE_BEST_SELLERS_COUNT_CACHE_KEY, this.totalItems);
70
			this.items = client.getBestSellersCatalogIds(beginIndex, windowSize, null, -1);
88
			this.items = client.getBestSellersCatalogIds(beginIndex, windowSize, null, -1);
-
 
89
			setSnippets(items);
-
 
90
			showcasePageSnippetsCache.put(SHOWCASE_BEST_SELLERS_CACHE_KEY + beginIndex, this.snippets);
71
		} catch (InventoryServiceException e) {
91
		} catch (InventoryServiceException e) {
72
			log.error("Unable to get best sellers from inventory service.", e);
92
			log.error("Unable to get best sellers from inventory service.", e);
73
		} catch (TException e) {
93
		} catch (TException e) {
74
			log.error("Unable to get best sellers from inventory service.", e);
94
			log.error("Unable to get best sellers from inventory service.", e);
75
		}
95
		}
76
    	return new DefaultHttpHeaders("show");
96
    	return new DefaultHttpHeaders("show");
77
    }
97
    }
78
    
98
    
79
    public List<String> getItems() {
99
    public void setSnippets(List<Long> items) {
80
    	ArrayList<String> snippets = new ArrayList<String>();
100
    	this.snippets = new ArrayList<String>();
81
    	if(items != null){
101
    	if(items != null){
82
    		for(long item: items){
102
    		for(long item: items){
83
				try {
103
				try {
84
					snippets.add(FileUtils.read(Utils.EXPORT_ENTITIES_PATH + item + File.separator +"CategorySnippet.html"));
104
					snippets.add(FileUtils.read(Utils.EXPORT_ENTITIES_PATH + item + File.separator +"CategorySnippet.html"));
85
				} catch (IOException ioex) {
105
				} catch (IOException ioex) {
86
					log.error("Error while getting the snippet for: " + item, ioex);
106
					log.error("Error while getting the snippet for: " + item, ioex);
87
				}
107
				}
88
			}
108
			}
89
    	}
109
    	}
90
		
-
 
91
    	return snippets;
-
 
92
    } 
110
    } 
93
    
111
    
-
 
112
    public List<String> getSnippets() {
-
 
113
        return snippets;
-
 
114
    }
-
 
115
    
94
	public void setId(String id) {
116
	public void setId(String id) {
95
		this.id = id;
117
		this.id = id;
96
		this.beginIndex = windowSize * (Long.parseLong(id)-1);
118
		this.beginIndex = windowSize * (Long.parseLong(id)-1);
97
	}
119
	}
98
 
120