Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
317 ashish 1
/**
2
 * 
3
 */
4
package in.shop2020.serving.controllers;
5
 
517 rajveer 6
import in.shop2020.model.v1.widgets.WidgetService.Client;
7
import in.shop2020.serving.pages.PageContentKeys;
8
import in.shop2020.serving.pages.PageEnum;
536 rajveer 9
import in.shop2020.serving.services.CategoryManager;
517 rajveer 10
import in.shop2020.serving.services.PageLoaderHandler;
11
import in.shop2020.serving.services.SolrSearchService;
12
import in.shop2020.serving.utils.FileUtils;
13
import in.shop2020.thrift.clients.WidgetServiceClient;
14
import in.shop2020.util.Utils;
15
 
16
import java.io.File;
317 ashish 17
import java.io.IOException;
517 rajveer 18
import java.net.URLEncoder;
19
import java.util.ArrayList;
20
import java.util.Arrays;
21
import java.util.HashMap;
22
import java.util.LinkedHashMap;
23
import java.util.List;
24
import java.util.Map;
536 rajveer 25
import java.util.StringTokenizer;
317 ashish 26
 
517 rajveer 27
import org.apache.commons.lang.StringUtils;
317 ashish 28
import org.apache.juli.logging.Log;
29
import org.apache.juli.logging.LogFactory;
30
import org.apache.struts2.rest.DefaultHttpHeaders;
31
import org.apache.struts2.rest.HttpHeaders;
32
 
33
/**
517 rajveer 34
 * @author rajveer
317 ashish 35
 *
36
 */
37
public class CategoryController extends BaseController {
38
 
39
	/**
40
	 * 
41
	 */
42
	private static Log log = LogFactory.getLog(CategoryController.class);
517 rajveer 43
 
317 ashish 44
	/**
45
	 * 
46
	 */
517 rajveer 47
	private Map<String,String> htmlSnippets;
48
	private Map<String, String[]> results;
49
	private Map<String, String> snippets;
50
	private Map<String, List<String[]>> facets;
51
	/**
52
	 * 
53
	 */
317 ashish 54
	private String id;
55
 
536 rajveer 56
	private String categoryName;
57
 
517 rajveer 58
	private String query;
59
 
60
	private Double minPrice;
61
	private Double maxPrice;
62
 
317 ashish 63
	/**
64
	 * GET /category/10004
65
	 * 
66
	 */
67
    public HttpHeaders show() throws SecurityException, IOException {
68
    	log.info("id=" + id);
536 rajveer 69
    	this.categoryName = CategoryManager.getCategoryManager().getCategoryLabel(Long.parseLong(id));
70
 
71
 
517 rajveer 72
    	htmlSnippets = new HashMap<String, String>();
73
    	PageLoaderHandler pageLoader = new PageLoaderHandler();
74
 
75
		htmlSnippets.put("HEADER", pageLoader.getHeaderHtml(userinfo.getUserId(), userinfo.isSessionId(), userinfo.getNameOfUser()));
76
		htmlSnippets.put("MAIN_MENU", pageLoader.getMainMenuHtml());
77
		htmlSnippets.put("SEARCH_BAR", pageLoader.getSearchBarHtml(userinfo.getTotalItems(), 10000));
78
		htmlSnippets.put("CUSTOMER_SERVICE", pageLoader.getCustomerServiceHtml());
79
		htmlSnippets.put("MY_RESEARCH", pageLoader.getMyResearchHtml(userinfo.getUserId(), userinfo.isSessionId()));
80
		htmlSnippets.put("FOOTER",pageLoader.getFooterHtml());
81
 
82
		htmlSnippets.put("CATEGORY_HEADER", pageLoader.getCategoryHeaderSnippet());
83
		htmlSnippets.put("MAIN_BANNER", "");
84
		htmlSnippets.put("SIDE_BANNER", "");
85
		htmlSnippets.put("TAB_BUTTONS", "");
86
		htmlSnippets.put("FOOTER", "");
317 ashish 87
 
517 rajveer 88
 
89
 
90
		String[] facetDefIDs = new String[] {"Category","F_50002","F_50001",  "F_50006", "F_50007" };
91
 
92
    	String[] facetLabels = new String[] {"Category","Price", "Brand", "Data Connectivity", "Camera Resolution" 	};
93
 
94
    	String[] fqrys = this.request.getParameterValues("fq");
536 rajveer 95
 
517 rajveer 96
    	query = "*";
97
 
536 rajveer 98
    	int length = 1;
99
 
100
    	if(fqrys!= null){
101
    		length += fqrys.length;
102
    	}
103
 
104
    	String[] newfqrys = new String[length];
105
    	newfqrys[0] = "F_50001:"+categoryName;
106
 
107
    	for(int i=1; i<length; i++) {
108
    		newfqrys[i] = fqrys[i-1];
109
    	}
110
 
111
 
112
    	SolrSearchService search = new SolrSearchService(query, newfqrys, facetDefIDs);
517 rajveer 113
    	this.results = new LinkedHashMap<String, String[]>();
114
    	this.results =  search.getResultMap(); 
115
 
116
 
117
 
118
 
119
    	this.facets = new LinkedHashMap<String, List<String[]>>();
120
    	String qryString = this.request.getQueryString();
121
    	log.info("qryString=" + qryString);
122
 
123
    	for (int i=0; i<facetDefIDs.length; i++) {
124
    		String facetDefID = facetDefIDs[i];
125
    		String facetLabel = facetLabels[i];
126
    		HashMap<String, Integer> facetDetailMap = search.getFacetDetails(facetDefID);
127
    		if(facetDetailMap==null)
128
    			continue;
129
    		List<String[]> values = new ArrayList<String[]>();
130
    		for(String facet: facetDetailMap.keySet()){
536 rajveer 131
    			String drilldownURL = new String();
132
 
133
    			if(qryString != null){
134
    				drilldownURL = qryString;
135
    			}
136
 
137
    			drilldownURL = "fq=" + facetDefID + ":" + 
517 rajveer 138
    				URLEncoder.encode(facet, "UTF-8"); 
139
      			String[] afacet = new String[] { facet, 
140
      					facetDetailMap.get(facet).toString(), drilldownURL  };
141
      			values.add(afacet);    
142
 
143
    		}
144
 
145
    		this.facets.put(facetLabel, values);
146
    	}
147
 
148
 
149
    	Map<String, Double> priceMap = search.getPriceStatsMap();
150
    	if(priceMap != null){
151
    		this.minPrice = priceMap.get("min");
152
    		this.maxPrice = priceMap.get("max");
153
    	}else{
154
    		this.minPrice = 0.0;
155
    		this.maxPrice = 0.0;
156
    	}
157
 
317 ashish 158
        return new DefaultHttpHeaders("show");
159
    }
160
 
161
    /**
162
     * 
163
     * @param id
164
     */
165
    public void setId(String id) {
536 rajveer 166
    	StringTokenizer tokenizer = new StringTokenizer(id,"-");
167
    	while(tokenizer.hasMoreTokens()){
168
    		this.id = tokenizer.nextToken();
169
    	}
317 ashish 170
    }
171
 
172
    /**
173
     * 
174
     */
175
    public String getId() {
176
    	return this.id;
177
    }
517 rajveer 178
 
536 rajveer 179
    public String getCategoryName() {
180
    	return this.categoryName;
181
    }
182
 
183
 
517 rajveer 184
    public String getHeaderSnippet(){
185
		return htmlSnippets.get("HEADER");
186
	}
187
 
188
	public String getMainMenuSnippet(){
189
		return htmlSnippets.get("MAIN_MENU");
190
	}
191
 
192
	public String getSearchBarSnippet(){
193
		return htmlSnippets.get("SEARCH_BAR");
194
	}
195
 
196
	public String getCustomerServiceSnippet(){
197
		return htmlSnippets.get("CUSTOMER_SERVICE");
198
	}
199
 
200
	public String getSearchHeaderSnippet(){
201
		return htmlSnippets.get("SEARCH_HEADER");
202
	}
203
 
204
	public String getSearchDetailsSnippet(){
205
		return htmlSnippets.get("SEARCH_DETAILS");
206
	}
207
 
208
	public String getMyResearchSnippet(){
209
		return htmlSnippets.get("MY_RESEARCH");
210
	}
211
 
212
	public String getFooterSnippet(){
213
		return htmlSnippets.get("FOOTER");
214
	}
215
 
216
	public String getJsFileSnippet(){
217
		return htmlSnippets.get("JS_FILES");
218
	}
219
 
220
	public String getCssFileSnippet(){
221
		return htmlSnippets.get("CSS_FILES");
222
	}
223
 
224
    /**
225
     * 
226
     * @return
227
     */
228
    public String getQuery() {
229
    	return this.query;
230
    }
231
 
232
 
233
    /**
234
     * 
235
     * @return
236
     */
237
    public Map<String, String[]> getResults() {
238
    	return this.results;
239
    }
240
 
241
    /**
242
     * 
243
     * @return
244
     */
245
    public Map<String, List<String[]>> getFacets() {
246
    	return this.facets;
247
    }
248
 
249
    public Double getMinPrice() {
250
    	return this.minPrice;
251
    }
252
 
253
    public Double getMaxPrice() {
254
    	return this.maxPrice;
255
    }
256
 
257
    public Map<String, String> getSnippets() throws Exception {
258
    	if(results != null){
259
    		snippets = new HashMap<String, String>();	
260
	    	for(String docId: results.keySet()){
536 rajveer 261
				snippets.put(docId, FileUtils.read( Utils.EXPORT_ENTITIES_PATH + docId + File.separator +"CategorySnippet.html"));
517 rajveer 262
			}
263
    	}
264
		return snippets;
265
    }
266
 
317 ashish 267
}