Subversion Repositories SmartDukaan

Rev

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

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