Subversion Repositories SmartDukaan

Rev

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

Rev 6430 Rev 6520
Line 1... Line 1...
1
package in.shop2020.serving.controllers;
1
package in.shop2020.serving.controllers;
2
 
2
 
3
import in.shop2020.serving.cache.SnippetCacheWrapper;
3
import in.shop2020.model.v1.catalog.CatalogService.Client;
4
import in.shop2020.serving.cache.EhcacheWrapper.CacheKeys;
4
import in.shop2020.serving.cache.EhcacheWrapper.CacheKeys;
-
 
5
import in.shop2020.serving.cache.SnippetCacheWrapper;
5
import in.shop2020.serving.services.SolrSearchService;
6
import in.shop2020.serving.services.SolrSearchService;
6
import in.shop2020.serving.services.SpecialPageConfigurer;
7
import in.shop2020.serving.services.SpecialPageConfigurer;
7
import in.shop2020.serving.utils.Utils;
8
import in.shop2020.serving.utils.Utils;
-
 
9
import in.shop2020.thrift.clients.CatalogClient;
8
 
10
 
9
import java.io.IOException;
11
import java.io.IOException;
10
import java.net.URLEncoder;
12
import java.net.URLEncoder;
11
import java.util.ArrayList;
13
import java.util.ArrayList;
12
import java.util.Arrays;
14
import java.util.Arrays;
Line 17... Line 19...
17
import java.util.Map.Entry;
19
import java.util.Map.Entry;
18
 
20
 
19
import org.apache.commons.lang.StringUtils;
21
import org.apache.commons.lang.StringUtils;
20
import org.apache.log4j.Logger;
22
import org.apache.log4j.Logger;
21
import org.apache.struts2.convention.annotation.Result;
23
import org.apache.struts2.convention.annotation.Result;
-
 
24
import org.apache.struts2.convention.annotation.Results;
22
import org.json.JSONException;
25
import org.json.JSONException;
23
 
26
 
24
/**
27
/**
25
 * @author rajveer
28
 * @author rajveer
26
 *
29
 *
27
 */
30
 */
-
 
31
@Results({
28
@Result(name = "index", location = "special-page-index.vm")
32
	@Result(name = "index", location = "special-page-index.vm"),
-
 
33
	@Result(name = "tag-index", location = "tag-page-index.vm")
-
 
34
})
29
public class SpecialPageController extends BaseController {
35
public class SpecialPageController extends BaseController {
30
    private static final long serialVersionUID = 1L;
36
    private static final long serialVersionUID = 1L;
31
    private static Logger log = Logger.getLogger(Class.class);
37
    private static Logger log = Logger.getLogger(Class.class);
32
 
38
 
33
/*	private static final String[] facetDefIDs = 
39
/*	private static final String[] facetDefIDs = 
Line 38... Line 44...
38
*/
44
*/
39
	private List<String> results;
45
	private List<String> results;
40
	private Map<String, String> snippets;
46
	private Map<String, String> snippets;
41
	private Map<String, List<String[]>> facets;
47
	private Map<String, List<String[]>> facets;
42
	private List<String[]> crumbs;
48
	private List<String[]> crumbs;
43
 
-
 
-
 
49
	private List<String> tagSnippets = new ArrayList<String>();
44
	private String specialPageName;
50
	private String specialPageName;
45
	private String specialPageTitle;
51
	private String specialPageTitle;
46
	private String facetSelection = "";
52
	private String facetSelection = "";
47
 
53
 
48
	private String query;
54
	private String query;
49
 
55
 
50
	private Double minPrice;
56
	private Double minPrice;
51
	private Double maxPrice;
57
	private Double maxPrice;
52
	
58
	
-
 
59
	private long type = 0;
53
	private long windowSize = 20;
60
	private long windowSize = 20;
54
	private long page = 1;
61
	private long page = 1;
55
	private long totalResults;
62
	private long totalResults;
56
	private long beginIndex = 0;
63
	private long beginIndex = 0;
57
	private String url;
64
	private String url;
Line 63... Line 70...
63
		uri = uri.replace("/", "");
70
		uri = uri.replace("/", "");
64
	    log.info("Uri: " + uri);
71
	    log.info("Uri: " + uri);
65
	    specialPageName  = SpecialPageConfigurer.getSpecialPageNameFromUri(uri);
72
	    specialPageName  = SpecialPageConfigurer.getSpecialPageNameFromUri(uri);
66
	    specialPageTitle = SpecialPageConfigurer.getSpecialPageTitleFromUri(uri);
73
	    specialPageTitle = SpecialPageConfigurer.getSpecialPageTitleFromUri(uri);
67
	    query            = SpecialPageConfigurer.getQueryFromUri(uri);
74
	    query            = SpecialPageConfigurer.getQueryFromUri(uri);
-
 
75
	    type            =  SpecialPageConfigurer.getPageType(uri);
68
        
76
        
69
    	String[] fqrys = this.request.getParameterValues("fq");
77
    	String[] fqrys = this.request.getParameterValues("fq");
70
 
78
 
71
    	url = "?";
79
    	url = "?";
72
 
80
 
Line 112... Line 120...
112
 
120
 
113
    	if(this.request.getParameter("maxPrice") != null){
121
    	if(this.request.getParameter("maxPrice") != null){
114
    		this.maxPrice = (new Double(this.request.getParameter("maxPrice")));
122
    		this.maxPrice = (new Double(this.request.getParameter("maxPrice")));
115
    		url= url + "&maxPrice=" + this.request.getParameter("maxPrice");
123
    		url= url + "&maxPrice=" + this.request.getParameter("maxPrice");
116
    	}
124
    	}
117
 
-
 
118
    	String sortOrder = "F_50002+asc";
-
 
119
    	
-
 
120
    	SolrSearchService search = new SolrSearchService(query, fqrys, Utils.facetDefIDs, (page-1)*windowSize, windowSize, minPrice, maxPrice, 10000, sortOrder, sourceId);
-
 
121
    	this.results =  search.getResultMap(); 
-
 
122
 
-
 
123
    	
125
    	
-
 
126
    	if (type==0) {
-
 
127
	    	String sortOrder = "F_50002+asc";
-
 
128
	    	
-
 
129
	    	SolrSearchService search = new SolrSearchService(query, fqrys, Utils.facetDefIDs, (page-1)*windowSize, windowSize, minPrice, maxPrice, 10000, sortOrder, sourceId);
-
 
130
	    	this.results =  search.getResultMap(); 
-
 
131
	
-
 
132
	    	
124
    	this.facets = new LinkedHashMap<String, List<String[]>>();
133
	    	this.facets = new LinkedHashMap<String, List<String[]>>();
125
    	String qryString = this.request.getQueryString();
134
	    	String qryString = this.request.getQueryString();
126
    	log.info("qryString=" + qryString);
135
	    	log.info("qryString=" + qryString);
127
    	
136
	    	
128
    	for (int i=0; i<Utils.facetDefIDs.length; i++) {
137
	    	for (int i=0; i<Utils.facetDefIDs.length; i++) {
129
    		String facetDefID = Utils.facetDefIDs[i];
138
	    		String facetDefID = Utils.facetDefIDs[i];
130
    		String facetLabel = Utils.facetLabels[i];
139
	    		String facetLabel = Utils.facetLabels[i];
131
    		Map<String, Integer> facetDetailMap = search.getFacetDetails(facetDefID);
140
	    		Map<String, Integer> facetDetailMap = search.getFacetDetails(facetDefID);
132
    		if(facetDetailMap==null)
141
	    		if(facetDetailMap==null)
133
    			continue;
142
	    			continue;
134
    		List<String[]> values = new ArrayList<String[]>();
143
	    		List<String[]> values = new ArrayList<String[]>();
135
    		String drilldownURL = url + "&fq=" + facetDefID + ":";
144
	    		String drilldownURL = url + "&fq=" + facetDefID + ":";
136
    		for(Entry<String, Integer> facetEntry: facetDetailMap.entrySet()){
145
	    		for(Entry<String, Integer> facetEntry: facetDetailMap.entrySet()){
137
    		    String facet = facetEntry.getKey();
146
	    		    String facet = facetEntry.getKey();
138
 
147
	
139
    			String[] afacet = new String[] { facet, 
148
	    			String[] afacet = new String[] { facet, 
140
      					facetEntry.getValue().toString(), drilldownURL  + URLEncoder.encode(facet, "UTF-8")  };
149
	      					facetEntry.getValue().toString(), drilldownURL  + URLEncoder.encode(facet, "UTF-8")  };
141
 
150
	
142
      			values.add(afacet);
151
	      			values.add(afacet);
143
    		}
152
	    		}
144
    		
153
	    		
145
    		this.facets.put(facetLabel, values);
154
	    		this.facets.put(facetLabel, values);
146
    	}
155
	    	}
147
 
156
	
148
    	Map<String, Double> priceMap = search.getPriceStatsMap();
157
	    	Map<String, Double> priceMap = search.getPriceStatsMap();
149
    	if(priceMap != null){
158
	    	if(priceMap != null){
150
    		this.minPrice = priceMap.get("min");
159
	    		this.minPrice = priceMap.get("min");
151
    		this.maxPrice = priceMap.get("max");
160
	    		this.maxPrice = priceMap.get("max");
152
    	}
161
	    	}
153
    	else{
162
	    	else{
154
    		this.minPrice = 0.0;
163
	    		this.minPrice = 0.0;
155
    		this.maxPrice = 0.0;
164
	    		this.maxPrice = 0.0;
-
 
165
	    	}
-
 
166
	
-
 
167
	    	this.totalResults = search.getTotalResults();
-
 
168
	        return "index";
-
 
169
    	} else {
-
 
170
    		return "tag-index";
156
    	}
171
    	}
157
 
-
 
158
    	this.totalResults = search.getTotalResults();
-
 
159
        return "index";
-
 
160
    }
172
    }
161
    
173
    
162
    public String getPageMetaDesc() {
174
    public String getPageMetaDesc() {
163
    	return "Best price " + this.facetSelection + this.specialPageName.replaceAll("Phones", "mobile phones") 
175
    	return "Best price " + this.facetSelection + this.specialPageName.replaceAll("Phones", "mobile phones") 
164
    	    + " mobile phones in India. Experience n' buy online. FREE Next Day delivery. Original product - Full manufacturer warranty. Comprehensive reviews."; 
176
    	    + " mobile phones in India. Experience n' buy online. FREE Next Day delivery. Original product - Full manufacturer warranty. Comprehensive reviews."; 
Line 235... Line 247...
235
        return this.priceUrl;
247
        return this.priceUrl;
236
    }
248
    }
237
 
249
 
238
    public String getSpecialPageName() {
250
    public String getSpecialPageName() {
239
        return this.specialPageName;
251
        return this.specialPageName;
240
    }   
252
    }
-
 
253
    
-
 
254
	public void addEntityId(Long entityId, List<String> snippets)	{
-
 
255
 
-
 
256
	    String snippet = (String) SnippetCacheWrapper.getSnippet(CacheKeys.CATEGORY_SNIPPET_CACHE_KEY, entityId+"", sourceId);
-
 
257
	    
-
 
258
	    if (snippet != null)	{
-
 
259
	        snippets.add(snippet);
-
 
260
	    }
-
 
261
	}
-
 
262
	
-
 
263
	public List<String> getTagSnippets() {
-
 
264
		CatalogClient catalogClientService;
-
 
265
		try {
-
 
266
			catalogClientService = new CatalogClient();
-
 
267
			Client cc = catalogClientService.getClient();
-
 
268
			for (long entityId : cc.getAllEntitiesByTagName(uri)) {
-
 
269
				addEntityId(entityId, tagSnippets);
-
 
270
			}
-
 
271
		} catch (Exception e) {
-
 
272
			// TODO Auto-generated catch block
-
 
273
			e.printStackTrace();
-
 
274
		}
-
 
275
		return tagSnippets;
-
 
276
	}
241
}
277
}