| 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 |
}
|