Subversion Repositories SmartDukaan

Rev

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

Rev 9269 Rev 9406
Line 61... Line 61...
61
				/**
61
				/**
62
				 * 
62
				 * 
63
				 */
63
				 */
64
				private static final long serialVersionUID = 1L;
64
				private static final long serialVersionUID = 1L;
65
				{
65
				{
66
					put("F_50007", Arrays.asList("Upto 2 Mpx", "2 - 5 Mpx", "5 - 10 Mpx", "10 Mpx and above"));
66
					put("F_50007", Arrays.asList("Upto 2 Mpx", "2 - 5 Mpx", "5 - 10 Mpx", "Above 10 Mpx"));
67
					put("F_50024", Arrays.asList("Upto 10 Mpx", "10 - 12 Mpx", "12 - 15 Mpx", "15 - 18 Mpx", "18 Mpx and above"));
67
					put("F_50024", Arrays.asList("Upto 10 Mpx", "10 - 12 Mpx", "12 - 15 Mpx", "15 - 18 Mpx", "Above 18 Mpx"));
68
					put("F_50025", Arrays.asList("Upto 4x", "4 - 6x", "6 - 10x", "10 - 14x", "14 - 18x", "18x and above"));
68
					put("F_50025", Arrays.asList("Upto 4x", "4 - 6x", "6 - 10x", "10 - 14x", "14 - 18x", "Above 18x"));
69
					put("F_50026", Arrays.asList("Below 2 in.", "2 to 2.9 in.", "3 to 3.9 in.", "4 in. and above"));
69
					put("F_50026", Arrays.asList("Below 2 in.", "2 to 2.9 in.", "3 to 3.9 in.", "Above 4 in."));
70
					put("F_50032", Arrays.asList("Below 3 in.", "3 to 3.9 in.", "4 to 4.9 in.", "5 in. and above"));
70
					put("F_50032", Arrays.asList("Below 3 in.", "3 to 3.9 in.", "4 to 4.9 in.", "Above 5 in."));
71
					put("F_50027", Arrays.asList("Upto 10 Mpx", "10 - 15 Mpx", "15 - 20 Mpx", "20 Mpx and above"));
71
					put("F_50027", Arrays.asList("Upto 10 Mpx", "10 - 15 Mpx", "15 - 20 Mpx", "Above 20 Mpx"));
72
				}
72
				}
73
		});
73
		});
74
	public static final Map<String, List<String>> CATEGORY_FACET_MAP = Collections.unmodifiableMap(
74
	public static final Map<String, List<String>> CATEGORY_FACET_MAP = Collections.unmodifiableMap(
75
			new HashMap<String, List<String>>(){
75
			new HashMap<String, List<String>>(){
76
				/**
76
				/**
77
				 * 
77
				 * 
78
				 */
78
				 */
79
				private static final long serialVersionUID = 1L;
79
				private static final long serialVersionUID = 1L;
80
				//Data Connectivity, Camera Resolution,Operating System,Screen Size
80
				//Data Connectivity, Camera Resolution,Operating System,Screen Size
81
				List<String> mobileFacets = Arrays.asList("F_50006", "F_50007", "F_50031", "F_50032");
81
				List<String> mobileFacets = Arrays.asList("F_50038", "F_50006", "F_50007", "F_50031", "F_50032");
82
				//Camera Resolution,Operating System,Screen Size
82
				//Camera Resolution,Operating System,Screen Size
83
				List<String> tabletFacets = Arrays.asList("F_50036", "F_50035", "F_50034");
83
				List<String> tabletFacets = Arrays.asList("F_50037","F_50036", "F_50035", "F_50034");
84
				//Operating System, Processor, Storage, RAM, Screen Size
84
				//Operating System, Processor, Storage, RAM, Screen Size
85
				List<String> laptopFacets = Arrays.asList("F_50013", "F_50014", "F_50015","F_50017", "F_50033");
85
				List<String> laptopFacets = Arrays.asList("F_50013", "F_50014", "F_50015","F_50017", "F_50033");
86
				//Resolution, Optical Zoon, Display Size
86
				//Resolution, Optical Zoon, Display Size
87
				List<String> compactCameras = Arrays.asList("F_50024", "F_50025", "F_50026");
87
				List<String> compactCameras = Arrays.asList("F_50024", "F_50025", "F_50026");
88
				//Display Size
88
				//Display Size
Line 136... Line 136...
136
	
136
	
137
	long numberOfResults=0;
137
	long numberOfResults=0;
138
	
138
	
139
	String priceFacetName = "F_50002";
139
	String priceFacetName = "F_50002";
140
	
140
	
141
	List<String> filtrableFacets;
141
	List<String> filtrableFacets = new ArrayList<String>(Utils.rootfacetDefIDs);
142
	
142
	
143
	/**
143
	/**
144
	 * 
144
	 * 
145
	 * @param query
145
	 * @param query
146
	 * @param facetDefinitionIDs
146
	 * @param facetDefinitionIDs
Line 153... Line 153...
153
		if(sourceId != -1){
153
		if(sourceId != -1){
154
			priceFacetName = priceFacetName + "_" + sourceId;
154
			priceFacetName = priceFacetName + "_" + sourceId;
155
		}
155
		}
156
		
156
		
157
		setFilterableFacets(facetqueries);
157
		setFilterableFacets(facetqueries);
-
 
158
		this.filtrableFacets.remove(Utils.availabilityFacet);
-
 
159
		this.filtrableFacets.add(Utils.availabilityFacet);
158
		
160
		
159
		
161
		
160
		this.xpath = XPathFactory.newInstance().newXPath();
162
		this.xpath = XPathFactory.newInstance().newXPath();
161
		
163
		
162
		query = query.trim().replaceAll("\\s+", " ");
164
		query = query.trim().replaceAll("\\s+", " ");
Line 228... Line 230...
228
	}
230
	}
229
 
231
 
230
	@SuppressWarnings("unchecked")
232
	@SuppressWarnings("unchecked")
231
	private void setFilterableFacets(String[] facetqueries) {
233
	private void setFilterableFacets(String[] facetqueries) {
232
		List<String> queriedFacets = getAllMatches(this.query);
234
		List<String> queriedFacets = getAllMatches(this.query);
233
		if(facetqueries != null) {
235
		if(facetqueries != null && facetqueries.length!=0) {
234
			String facetString = Arrays.toString(facetqueries);
236
			String facetString = Arrays.toString(facetqueries);
235
			List<String> filteredFacets = getAllMatches(facetString);
237
			List<String> filteredFacets = getAllMatches(facetString);
236
			if(filteredFacets.contains("F_50011")){
238
			if(filteredFacets.contains("F_50011")){
237
				for(String facetQuery : facetqueries) {
239
				for(String facetQuery : facetqueries) {
238
					if(facetQuery.contains("F_50011")){
240
					if(facetQuery.contains("F_50011")){
239
						String facetVal = facetQuery.split(":")[1];
241
						String facetVal = facetQuery.split(":")[1];
240
						if(CATEGORY_FACET_MAP.containsKey(facetVal)){
242
						if(CATEGORY_FACET_MAP.containsKey(facetVal)){
241
							this.filtrableFacets = ListUtils.sum(Utils.rootfacetDefIDs, CATEGORY_FACET_MAP.get(facetVal));
243
							this.filtrableFacets.addAll(CATEGORY_FACET_MAP.get(facetVal));
242
							return;
244
							return;
243
						} else {
245
						} else {
244
							break;
246
							break;
245
						}
247
						}
246
					}
248
					}
Line 249... Line 251...
249
			if(filteredFacets.contains("F_50010")){
251
			if(filteredFacets.contains("F_50010")){
250
				for(String facetQuery : facetqueries) {
252
				for(String facetQuery : facetqueries) {
251
					if(facetQuery.contains("F_50010")){
253
					if(facetQuery.contains("F_50010")){
252
						String facetVal = facetQuery.split(":")[1];
254
						String facetVal = facetQuery.split(":")[1];
253
						if(CATEGORY_FACET_MAP.containsKey(facetVal)){
255
						if(CATEGORY_FACET_MAP.containsKey(facetVal)){
254
							this.filtrableFacets = ListUtils.sum(Utils.rootfacetDefIDs, CATEGORY_FACET_MAP.get(facetVal));
-
 
255
							return;
256
							return;
256
						} else {
257
						} else {
257
							break;
258
							break;
258
						}
259
						}
259
					}
260
					}
260
				}
261
				}
261
			}
262
			}
262
		}
263
		}
263
		if(queriedFacets.contains("F_50011")) {
264
		if(queriedFacets.contains("F_50011")) {
264
			String facetVal = this.query.split("F_50011:")[1];
265
			String facetVal = this.query.split("F_50011:")[1].split("&")[0].replaceAll("[\"()]", "");
265
			if (facetVal.contains(" OR ")) {
266
			if (facetVal.contains(" OR ")) {
266
				this.filtrableFacets = Utils.rootfacetDefIDs;
-
 
267
				return;
267
				return;
268
			} else if(CATEGORY_FACET_MAP.containsKey(facetVal)){
268
			} else if(CATEGORY_FACET_MAP.containsKey(facetVal)){
269
				facetVal = facetVal.split("&")[0].replaceAll("[\"()]", "");
269
				//facetVal = facetVal.split("&")[0].replaceAll("[\"()]", "");
270
				if(CATEGORY_FACET_MAP.containsKey(facetVal)){
-
 
271
					this.filtrableFacets = ListUtils.sum(Utils.rootfacetDefIDs, CATEGORY_FACET_MAP.get(facetVal));
270
					this.filtrableFacets.addAll(CATEGORY_FACET_MAP.get(facetVal));
272
					return;
271
					return;
-
 
272
			} else {
273
				}
273
				return;
274
			} 
274
			}
275
		}
275
		}
276
		if(queriedFacets.contains("F_50010")){
276
		if(queriedFacets.contains("F_50010")){
277
			String facetVal = this.query.split("F_50010:")[1];
277
			String facetVal = this.query.split("F_50010:")[1].split("&")[0].replaceAll("[\"()]", "");
278
			if (facetVal.contains(" OR ")) {
278
			if (facetVal.contains(" OR ")) {
279
				this.filtrableFacets = Utils.rootfacetDefIDs;
-
 
280
				return;
279
				return;
281
			} else if(CATEGORY_FACET_MAP.containsKey(facetVal)){
280
			} else if(CATEGORY_FACET_MAP.containsKey(facetVal)){
282
				facetVal = facetVal.split("&")[0].replaceAll("[\"()]", "");
-
 
283
				if(CATEGORY_FACET_MAP.containsKey(facetVal)){
-
 
284
					this.filtrableFacets = ListUtils.sum(Utils.rootfacetDefIDs, CATEGORY_FACET_MAP.get(facetVal));
281
					this.filtrableFacets.addAll(CATEGORY_FACET_MAP.get(facetVal));
285
					return;
282
					return;
-
 
283
			} else {
286
				}
284
				return;
287
			}
285
			}
288
		}
286
		}
289
		this.filtrableFacets = Utils.rootfacetDefIDs;
-
 
290
	}
287
	}
291
 
288
 
292
	public List<String> getFilterableFacets() {
289
	public List<String> getFilterableFacets() {
293
		return this.filtrableFacets; 
290
		return this.filtrableFacets; 
294
	}
291
	}