Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 shop2020 1
/**
2
 * 
3
 */
4
package in.shop2020.metamodel.definitions;
5
 
70 naveen 6
import in.shop2020.metamodel.util.ExpandedCMPSlideRuleDefinition;
45 naveen 7
import in.shop2020.metamodel.util.ExpandedCategory;
62 naveen 8
import in.shop2020.metamodel.util.ExpandedCategoryFacetDefinition;
9
import in.shop2020.metamodel.util.ExpandedFacetDefinition;
64 naveen 10
import in.shop2020.util.DBUtils;
70 naveen 11
import in.shop2020.util.Utils;
17 naveen 12
 
10 shop2020 13
import java.io.Serializable;
18 naveen 14
import java.util.ArrayList;
15
import java.util.Iterator;
16
import java.util.List;
10 shop2020 17
import java.util.Map;
18
 
19
/**
49 naveen 20
 * Single point of access to all definition objects
21
 * 
10 shop2020 22
 * @author naveen
23
 *
24
 */
25
public class DefinitionsContainer implements Serializable {
26
 
41 naveen 27
	/** 
10 shop2020 28
	 * 
29
	 */
30
	private static final long serialVersionUID = 1L;
49 naveen 31
 
32
	/**
33
	 * Hashtable of Category ID to Category object
34
	 */
10 shop2020 35
	private Map<Long, Category> categories;
49 naveen 36
 
37
	/**
38
	 * Hashtable of Slide ID to SlideDefinition object
39
	 */
10 shop2020 40
	private Map<Long, SlideDefinition> slideDefinitions;
49 naveen 41
 
42
	/**
43
	 * Hashtable of Feature Definition ID to FeatureDefinition object
44
	 */
10 shop2020 45
	private Map<Long, FeatureDefinition> featureDefinitions;
49 naveen 46
 
47
	/**
48
	 * Hashtable of Datatype Definition ID to DatatypeDefinition object
49
	 */
10 shop2020 50
	private Map<Long, DatatypeDefinition> datatypeDefinitions;
49 naveen 51
 
52
	/**
53
	 * Hashtable of Enum value ID to EnumValue object
54
	 */
24 naveen 55
	private Map<Long, EnumValue> enumValues;
49 naveen 56
 
57
	/**
58
	 * Hashtable of Unit ID to Unit object
59
	 */
10 shop2020 60
	private Map<Long, Unit> units;
61
 
62
	/**
62 naveen 63
	 * Hashtable of Facet Definition ID to FacetDefinition object
64
	 */
65
	private Map<Long, FacetDefinition> facetDefinitions;
66
 
67
	/**
68
	 * Hashtable of Category Facet Definition ID to CategoryFacetDefinition 
69
	 * object
70
	 */
71
	private Map<Long, CategoryFacetDefinition> categoryFacetDefinitions;
72
 
73
	/**
74
	 * Hashtable of IR Data Rule ID to RuleDefinition object
75
	 */
76
	private Map<Long, RuleDefinition> irDataRuleDefinitions;	
77
 
78
	/**
79
	 * Hashtable of IR Meta Data Rule ID to RuleDefinition object
80
	 */
81
	private Map<Long, RuleDefinition> irMetaDataRuleDefinitions;
82
 
83
 
84
	/**
70 naveen 85
	 * Hashtable of Comparison Rule ID to CMPRuleDefinition object
86
	 */
87
	private Map<Long, CMPRuleDefinition> cmpRuleDefinitions;	
88
 
89
	/**
90
	 * Hashtable of SlideDefinition ID to CMPSlideRuleDefinition object
91
	 */
92
	private Map<Long, CMPSlideRuleDefinition> cmpSlideRuleDefinitions;
93
 
94
	/**
49 naveen 95
	 * Empty constructor. Data structures are initialised as needed
10 shop2020 96
	 */
97
	public DefinitionsContainer() {
17 naveen 98
		// Lazy initialization
10 shop2020 99
	}
100
 
101
	/**
49 naveen 102
	 * Returns all Unit objects in the database
10 shop2020 103
	 * 
49 naveen 104
	 * @return Map Null if units are not imported into definitions db 
105
	 * (serialized java objects)
106
	 * 
18 naveen 107
	 * @throws Exception 
10 shop2020 108
	 */
18 naveen 109
	@SuppressWarnings("unchecked")
110
	public Map<Long, Unit> getUnits() throws Exception {		
17 naveen 111
		// De-serialize
112
		if(this.units == null) {
70 naveen 113
			String dbFile = Utils.DEFINITIONS_DB_PATH + "units" + ".ser";
18 naveen 114
 
115
			this.units = (Map<Long, Unit>) DBUtils.read(dbFile);
17 naveen 116
		}
18 naveen 117
 
10 shop2020 118
		return this.units;
119
	}
120
 
121
	/**
49 naveen 122
	 * Resolves Unit ID into Unit object
10 shop2020 123
	 * 
49 naveen 124
	 * @param unitID Unit ID
10 shop2020 125
	 * @return Unit
18 naveen 126
	 * @throws Exception 
10 shop2020 127
	 */
18 naveen 128
	public Unit getUnit(long unitID) throws Exception {		
129
		// Initialize 
130
		if(this.units == null) {
131
			this.getUnits();
132
		}
17 naveen 133
 
10 shop2020 134
		return this.units.get(new Long(unitID));
135
	}
136
 
137
	/**
49 naveen 138
	 * Returns all DatatypeDefintion object in database
139
	 * 
140
	 * @return the datatypeDefinitions List of DatatypeDefinition objects
18 naveen 141
	 * @throws Exception 
10 shop2020 142
	 */
18 naveen 143
	@SuppressWarnings("unchecked")
144
	public Map<Long, DatatypeDefinition> getDatatypeDefinitions() 
145
		throws Exception {
146
 
147
		// De-serialize
148
		if(this.datatypeDefinitions == null) {
70 naveen 149
			String dbFile = Utils.DEFINITIONS_DB_PATH + "datatypedefinitions" + 
19 naveen 150
				".ser";
18 naveen 151
 
152
			this.datatypeDefinitions = 
153
				(Map<Long, DatatypeDefinition>) DBUtils.read(dbFile);
154
		}
155
		return this.datatypeDefinitions;
10 shop2020 156
	}
18 naveen 157
 
158
	/**
49 naveen 159
	 * Resolves Datatype Definition ID into DatetypeDefinition object
18 naveen 160
	 * 
49 naveen 161
	 * @param unitID Unit ID
18 naveen 162
	 * @return Unit
163
	 * @throws Exception 
164
	 */
165
	public DatatypeDefinition getDatatypeDefinition(long id) throws Exception {
166
 
167
		// Initialize 
168
		if(this.datatypeDefinitions == null) {
169
			this.getDatatypeDefinitions();
170
		}
171
 
172
		return this.datatypeDefinitions.get(new Long(id));
173
	}
19 naveen 174
 
175
	/**
49 naveen 176
	 * Returns EnumValue ID for datatype definition ID and enum value string 
177
	 * to match. Match is case insensitive
19 naveen 178
	 * 
49 naveen 179
	 * @param datatypeDefID DatatypeDefinition ID
180
	 * @param value query enum value string
19 naveen 181
	 * @return long enumValueID - "-1" if not found
182
	 * @throws Exception 
183
	 */
184
	public long getEnumValueID(long datatypeDefID, String value) 
185
		throws Exception {
186
		long enumValueID = -1L;
187
 
188
		// Let the callers catch ClassCastException
189
		EnumDefinition enumDef = 
190
			(EnumDefinition)this.getDatatypeDefinition(datatypeDefID);
191
 
24 naveen 192
		List<EnumValue> enumValues = enumDef.getEnumValues();
19 naveen 193
		for(EnumValue enumValue : enumValues) {
194
			if(value.equalsIgnoreCase(enumValue.getValue())) {
195
				enumValueID = enumValue.getID();
196
				break;
197
			}
198
		}
199
 
200
		return enumValueID;
201
	}
17 naveen 202
 
10 shop2020 203
	/**
49 naveen 204
	 * Returns all category objects in the database
205
	 * 
10 shop2020 206
	 * @return the categories
17 naveen 207
	 * @throws Exception 
10 shop2020 208
	 */
17 naveen 209
	@SuppressWarnings("unchecked")
210
	public Map<Long, Category> getCategories() throws Exception {
211
 
212
		// De-serialize
213
		if(this.categories == null) {
70 naveen 214
			String dbFile = Utils.DEFINITIONS_DB_PATH + "categories" + ".ser";
17 naveen 215
 
216
			this.categories = (Map<Long, Category>) DBUtils.read(dbFile);
217
		}
218
		return this.categories;
10 shop2020 219
	}
17 naveen 220
 
10 shop2020 221
	/**
49 naveen 222
	 * Resolves Category ID into Category object
17 naveen 223
	 * 
49 naveen 224
	 * @param categoryID Category ID
17 naveen 225
	 * @return Category
226
	 * @throws Exception 
10 shop2020 227
	 */
17 naveen 228
	public Category getCategory(long categoryID) throws Exception {
229
 
18 naveen 230
		// Initialize 
17 naveen 231
		if(this.categories == null) {
232
			this.getCategories();
233
		}
234
 
235
		return this.categories.get(new Long(categoryID));
10 shop2020 236
	}
17 naveen 237
 
10 shop2020 238
	/**
49 naveen 239
	 * Returns expanded Category object. All numeric identifiers are resolved 
240
	 * into detailed objects
18 naveen 241
	 * 
242
	 * @param categoryID
45 naveen 243
	 * @return ExpandedCategory
244
	 * @throws Exception
245
	 */
246
	public ExpandedCategory getExpandedCategory(long categoryID) 
247
		throws Exception {
248
		Category category = this.getCategory(categoryID);
249
 
250
		ExpandedCategory expCategory = new ExpandedCategory(category);
251
 
252
		return expCategory;
253
	}
254
 
255
	/**
49 naveen 256
	 * Returns all children categories for a Category ID
45 naveen 257
	 * 
258
	 * @param categoryID
49 naveen 259
	 * @return List<Category> Children Categories
34 naveen 260
	 * @throws Exception
261
	 */
262
	public List<Category> getChildrenCategories(long categoryID) 
263
		throws Exception {
264
 
265
		// Initialize 
266
		if(this.categories == null) {
267
			this.getCategories();
268
		}
269
 
270
		return this.categories.get(new Long(categoryID)).getChildrenCategory();
271
	}
49 naveen 272
 
34 naveen 273
	/**
49 naveen 274
	 * Returns all CategorySlideDefinition objects for a Category ID
34 naveen 275
	 * 
49 naveen 276
	 * @param categoryID Category ID
18 naveen 277
	 * @return List<CategorySlideDefinition> 
278
	 * @throws Exception 
279
	 */
280
	public List<CategorySlideDefinition> getCategorySlideDefinitions(
281
			long categoryID) throws Exception {
282
		Category category = this.getCategory(categoryID);
283
 
284
		return category.getCategorySlideDefintions();
285
	}
286
 
287
	/**
49 naveen 288
	 * Returns All SlideDefinition objects in database
289
	 * 
10 shop2020 290
	 * @return the slideDefinitions
18 naveen 291
	 * @throws Exception 
10 shop2020 292
	 */
18 naveen 293
	@SuppressWarnings("unchecked")
294
	public Map<Long, SlideDefinition> getSlideDefinitions() throws Exception {
295
 
296
		// De-serialize
297
		if(this.slideDefinitions == null) {
70 naveen 298
			String dbFile = Utils.DEFINITIONS_DB_PATH + "slidedefinitions" + 
18 naveen 299
				".ser";
300
 
301
			this.slideDefinitions = 
302
				(Map<Long, SlideDefinition>) DBUtils.read(dbFile);
303
		}
304
		return this.slideDefinitions;
10 shop2020 305
	}
18 naveen 306
 
307
	/**
49 naveen 308
	 * Resolves SlideDefinition ID into SlideDefinition object
18 naveen 309
	 * 
310
	 * @param id
311
	 * @return SlideDefinition
312
	 * @throws Exception
313
	 */
314
	public SlideDefinition getSlideDefinition(long id) throws Exception {
315
 
316
		// Initialize 
317
		if(this.slideDefinitions == null) {
318
			this.getSlideDefinitions();
319
		}
320
 
321
		return this.slideDefinitions.get(new Long(id));
322
	}
323
 
324
	/**
49 naveen 325
	 * Returns SlideDefinition objects for a category and matching slide label
18 naveen 326
	 * 
19 naveen 327
	 * @param label
328
	 * @return List<SlideDefinition>
329
	 * @throws Exception
330
	 */
32 naveen 331
	public List<SlideDefinition> getSlideDefinitions(long categoryID, 
332
			String label) throws Exception {
333
 
334
		// RE-VISIT
335
		// May be we need a new data structure, category id to slide definitions
336
		// for now
337
		List<SlideDefinition> matchingSlides = new ArrayList<SlideDefinition>();
19 naveen 338
 
32 naveen 339
		List<CategorySlideDefinition> csDefs = this.getCategorySlideDefinitions(
340
				categoryID);
341
 
342
		for(CategorySlideDefinition csDef : csDefs) {
343
			SlideDefinition sDef = this.getSlideDefinition(
344
					csDef.getSlideDefintionID());
345
 
346
			if(sDef.getLabel().equalsIgnoreCase(label)) {
347
				matchingSlides.add(sDef);
348
			}
19 naveen 349
		}
350
 
32 naveen 351
		return matchingSlides;
352
	}
353
 
354
	/**
49 naveen 355
	 * Resolves Category ID into Category object
32 naveen 356
	 * 
357
	 * @param categoryID
49 naveen 358
	 * @return List<SlideDefinition> 
32 naveen 359
	 * @throws Exception
360
	 */
361
	public List<SlideDefinition> getSlideDefinitions(long categoryID) 
362
		throws Exception {
363
 
364
		// RE-VISIT
365
		// May be we need a new data structure, category id to slide definitions
366
		// for now
19 naveen 367
		List<SlideDefinition> matchingSlides = new ArrayList<SlideDefinition>();
32 naveen 368
 
369
		List<CategorySlideDefinition> csDefs = this.getCategorySlideDefinitions(
370
				categoryID);
371
 
372
		for(CategorySlideDefinition csDef : csDefs) {
373
			SlideDefinition sDef = this.getSlideDefinition(
374
					csDef.getSlideDefintionID());
19 naveen 375
 
32 naveen 376
			matchingSlides.add(sDef);
19 naveen 377
		}
378
 
379
		return matchingSlides;
380
	}
49 naveen 381
 
19 naveen 382
	/**
49 naveen 383
	 * Returns list of SlideDefinition objects for a category and editorial 
384
	 * importance value
19 naveen 385
	 * 
18 naveen 386
	 * @param categoryID
387
	 * @param EditorialImportance imp
388
	 * @return List<SlideDefinition>
389
	 * @throws Exception 
390
	 */
391
	public List<SlideDefinition> getSlides(long categoryID, 
392
			EditorialImportance imp) 
393
		throws Exception {
394
 
395
		List<CategorySlideDefinition> catSlideDefs = 
396
			this.getCategorySlideDefinitions(categoryID);
397
 
398
		Iterator<CategorySlideDefinition> itCatSlideDefs = 
399
			catSlideDefs.iterator();
400
 
401
		List<SlideDefinition> slideDefs = new ArrayList<SlideDefinition>();
402
		while(itCatSlideDefs.hasNext()) {
403
			CategorySlideDefinition catSlideDef = itCatSlideDefs.next();
404
			if(catSlideDef.getEditorialImportance() == imp) {
405
				long slideDefID = catSlideDef.getSlideDefintionID();
406
				slideDefs.add(this.getSlideDefinition(slideDefID));
407
			}
408
		}
409
		return slideDefs;
410
	}
411
 
412
	/**
49 naveen 413
	 * Returns all FeatureDefinition object in database
18 naveen 414
	 * 
415
	 * @return Map<Long, FeatureDefinition>
416
	 * @throws Exception
417
	 */
418
	@SuppressWarnings("unchecked")
419
	public Map<Long, FeatureDefinition> getFeatureDefinitions() 
420
		throws Exception {
421
 
422
		// De-serialize
423
		if(this.featureDefinitions == null) {
70 naveen 424
			String dbFile = Utils.DEFINITIONS_DB_PATH + "featuredefinitions" + 
18 naveen 425
				".ser";
426
 
427
			this.featureDefinitions = 
428
				(Map<Long, FeatureDefinition>) DBUtils.read(dbFile);
429
		}
430
		return this.featureDefinitions;
431
	}
19 naveen 432
 
10 shop2020 433
	/**
49 naveen 434
	 * Returns all FeatureDefinition objects for a slide
18 naveen 435
	 * 
19 naveen 436
	 * @param slideID
437
	 * @return List<FeatureDefinition> 
438
	 * @throws Exception
439
	 */
440
	public List<FeatureDefinition> getFeatureDefinitions(long slideID) 
441
		throws Exception {
442
		List<FeatureDefinition> featureDefs = 
443
			new ArrayList<FeatureDefinition>();
444
 
445
		SlideDefinition slideDef = this.getSlideDefinition(slideID);
446
		List<SlideFeatureDefinition> slideFeatureDefs = 
447
			slideDef.getSlideFeatureDefinitions();
448
 
449
		for(int i=0; i<slideFeatureDefs.size(); i++) {
450
			featureDefs.add(this.getFeatureDefinition(
451
					slideFeatureDefs.get(i).getFeatureDefintionID()));
452
		}
453
 
454
		return featureDefs;
455
	}
456
 
457
	/**
49 naveen 458
	 * Returns list of FeatureDefinition objects for a slide given editorial 
459
	 * importance
19 naveen 460
	 * 
461
	 * @param slideID
49 naveen 462
	 * @param imp Editorial Importance enum object
19 naveen 463
	 * @return List<FeatureDefinition>
464
	 * @throws Exception
465
	 */
466
	public List<FeatureDefinition> getFeatureDefinitions(long slideID, 
467
			EditorialImportance imp)  throws Exception {
468
		List<FeatureDefinition> featureDefs = 
469
			new ArrayList<FeatureDefinition>();
470
 
471
		SlideDefinition slideDef = this.getSlideDefinition(slideID);
472
		List<SlideFeatureDefinition> slideFeatureDefs = 
473
			slideDef.getSlideFeatureDefinitions();
474
 
475
		for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
476
			if(slideFeatureDef.getEditorialImportance() == imp) {
477
				featureDefs.add(this.getFeatureDefinition(
478
						slideFeatureDef.getFeatureDefintionID()));
479
			}
480
		}
481
 
482
		return featureDefs;
483
	}
484
 
485
	/**
49 naveen 486
	 * Resolves Feature Definition ID into FeatureDefinition object
19 naveen 487
	 * 
49 naveen 488
	 * @param id Feature Definition ID 
19 naveen 489
	 * @return FeatureDefinition
18 naveen 490
	 * @throws Exception
10 shop2020 491
	 */
18 naveen 492
	public FeatureDefinition getFeatureDefinition(long id) throws Exception {
493
 
494
		// Initialize 
495
		if(this.featureDefinitions == null) {
496
			this.getFeatureDefinitions();
497
		}
498
 
499
		return this.featureDefinitions.get(new Long(id));
500
	}	
19 naveen 501
 
502
	/**
49 naveen 503
	 * Returns matching FeatureDefinition object for slide ID and feature label.
504
	 * Label matching is case insensitive.
19 naveen 505
	 * 
49 naveen 506
	 * @param slideID Slide ID
507
	 * @param featureLabel label to match, case is ignored
19 naveen 508
	 * @return FeatureDefinition 
509
	 * @throws Exception
510
	 */
511
	public FeatureDefinition getFeatureDefinition(long slideID, 
512
			String featureLabel) throws Exception {
513
		FeatureDefinition featureDef = null;
514
 
515
		SlideDefinition slideDef = this.getSlideDefinition(slideID);
516
		for(SlideFeatureDefinition slideFeatureDef : 
517
			slideDef.getSlideFeatureDefinitions()) {
518
 
519
			long featureDefID = slideFeatureDef.getFeatureDefintionID();
520
 
521
			FeatureDefinition thisFeatureDef = this.getFeatureDefinition(
522
					featureDefID);
523
 
28 naveen 524
			if(featureLabel.equalsIgnoreCase(thisFeatureDef.getLabel())) {
19 naveen 525
				featureDef = thisFeatureDef;
526
			}
527
		}
528
 
529
		return featureDef;
530
	}
24 naveen 531
 
532
	/**
49 naveen 533
	 * Returns all EnumValue objects in the database
534
	 * 
24 naveen 535
	 * @return the enumValues
536
	 * @throws Exception 
537
	 */
538
	@SuppressWarnings("unchecked")
539
	public Map<Long, EnumValue> getEnumValues() throws Exception {
540
		// De-serialise
541
		if(this.enumValues == null) {
70 naveen 542
			String dbFile = Utils.DEFINITIONS_DB_PATH + "enumvalues" + 
24 naveen 543
				".ser";
544
 
545
			this.enumValues = 
546
				(Map<Long, EnumValue>) DBUtils.read(dbFile);
547
		}
548
 
549
		return this.enumValues;
550
	}
19 naveen 551
 
24 naveen 552
	/**
49 naveen 553
	 * Resolves Enum value ID into EnumValue object
24 naveen 554
	 * 
555
	 * @param enumValueID
556
	 * @return EnumValue
557
	 * @throws Exception
558
	 */
559
	public EnumValue getEnumValue(long enumValueID) throws Exception {
560
		// Initialise
561
		if(this.enumValues == null) {
562
			this.getEnumValues();
563
		}
564
 
565
		return this.enumValues.get(new Long(enumValueID));
566
	}
62 naveen 567
 
568
	/**
569
	 * Returns all FacetDefinition objects in the database
570
	 * 
571
	 * @return Map Null if facet definitions are not imported into definitions 
572
	 * db (serialized java objects)
573
	 * 
574
	 * @throws Exception 
575
	 */
576
	@SuppressWarnings("unchecked")
577
	public Map<Long, FacetDefinition> getFacetDefinitions() throws Exception {
578
 
579
		// De-serialize
580
		if(this.facetDefinitions == null) {
70 naveen 581
			String dbFile = Utils.DEFINITIONS_DB_PATH + "facetdefinitions" + 
63 naveen 582
				".ser";
62 naveen 583
 
584
			this.facetDefinitions = 
585
				(Map<Long, FacetDefinition>) DBUtils.read(dbFile);
586
		}
587
 
588
		return this.facetDefinitions;
589
	}
590
 
591
	/**
592
	 * Resolves Facet Definition ID into FacetDefinition object
593
	 * 
594
	 * @param facetDefinitionID
595
	 * @return FacetDefinition
596
	 * @throws Exception
597
	 */
598
	public FacetDefinition getFacetDefinition(long facetDefinitionID) 
599
		throws Exception {
600
 
601
		if(this.facetDefinitions == null) {
602
			this.getFacetDefinitions();
603
		}
604
 
605
		return this.facetDefinitions.get(new Long(facetDefinitionID));
606
	}
607
 
608
	/**
609
	 * Utility method to get Expanded version of ExpandedFacetDefinition object 
610
	 * 
611
	 * @param facetDefinitionID
612
	 * @return ExpandedFacetDefinition
613
	 * @throws Exception
614
	 */
615
	public ExpandedFacetDefinition getExpandedFacetDefinition(
616
			long facetDefinitionID) throws Exception {
617
 
618
		FacetDefinition facetDefinition = 
619
			this.getFacetDefinition(facetDefinitionID);
620
 
621
		ExpandedFacetDefinition expFacetDefinition = 
622
			new ExpandedFacetDefinition(facetDefinition);
623
 
624
		return expFacetDefinition;
625
	}
626
 
627
	/**
628
	 * Returns all CategoryFacetDefinition objects in the database
629
	 * 
630
	 * @return Map Null if category facet definitions are not imported into 
631
	 * definitions db (serialized java objects)
632
	 * 
633
	 * @throws Exception 
634
	 */
635
	@SuppressWarnings("unchecked")
636
	public Map<Long, CategoryFacetDefinition> getCategoryFacetDefinitions() 
637
		throws Exception {
638
 
639
		// De-serialize
640
		if(this.categoryFacetDefinitions == null) {
70 naveen 641
			String dbFile = Utils.DEFINITIONS_DB_PATH + 
642
				"categoryfacetdefinitions" + ".ser";
62 naveen 643
 
644
			this.categoryFacetDefinitions = 
645
				(Map<Long, CategoryFacetDefinition>) DBUtils.read(dbFile);
646
		}
647
 
648
		return this.categoryFacetDefinitions;
649
	}
650
 
651
	/**
652
	 * Resolves Category-Facet Definition ID into CategoryFacetDefinition object
653
	 * 
654
	 * @param categoryID
655
	 * @return CategoryFacetDefinition
656
	 * @throws Exception
657
	 */
658
	public CategoryFacetDefinition getCategoryFacetDefinition(
659
			long categoryID) throws Exception {
660
 
661
		if(this.categoryFacetDefinitions == null) {
662
			this.getCategoryFacetDefinitions();
663
		}
664
 
665
		return this.categoryFacetDefinitions.get(
666
				new Long(categoryID));
667
	}
668
 
669
	/**
670
	 * Utility method to get Expanded version of CategoryFacetDefinition object 
671
	 * 
672
	 * @param categoryID
673
	 * @return ExpandedCategoryFacetDefinition
674
	 * @throws Exception
675
	 */
676
	public ExpandedCategoryFacetDefinition getExpandedCategoryFacetDefinition(
677
			long categoryID) throws Exception  {
678
		CategoryFacetDefinition categoryFacetDef = 
679
			this.getCategoryFacetDefinition(categoryID);
680
 
681
		ExpandedCategoryFacetDefinition expCategoryFacetDef = 
682
			new ExpandedCategoryFacetDefinition(categoryFacetDef);
683
 
684
		return expCategoryFacetDef;
685
	}
686
 
687
	/**
688
	 * Returns all IR Data RuleDefintion objects in the database
689
	 * 
690
	 * @return Map Null if IR data rule definitions are not imported into 
691
	 * definitions db (serialized java objects)
692
	 * 
693
	 * @throws Exception 
694
	 */
695
	@SuppressWarnings("unchecked")
696
	public Map<Long, RuleDefinition> getIrDataRuleDefinitions() 
697
		throws Exception {
698
 
699
		// De-serialize
700
		if(this.irDataRuleDefinitions == null) {
70 naveen 701
			String dbFile = Utils.DEFINITIONS_DB_PATH + "irdatarules" + ".ser";
62 naveen 702
 
703
			this.irDataRuleDefinitions = 
704
				(Map<Long, RuleDefinition>) DBUtils.read(dbFile);
705
		}
706
 
707
		return this.irDataRuleDefinitions;
708
	}
709
 
710
	/**
711
	 * Resolves IR Data Rule Definition ID into RuleDefinition object
712
	 * 
713
	 * @param irDataRuleDefinitionID
714
	 * @return RuleDefinition
715
	 * @throws Exception
716
	 */
717
	public RuleDefinition getIrDataRuleDefinition(
718
			long irDataRuleDefinitionID) throws Exception {
719
 
720
		if(this.irDataRuleDefinitions == null) {
721
			this.getIrDataRuleDefinitions();
722
		}
723
 
724
		return this.irDataRuleDefinitions.get(new Long(irDataRuleDefinitionID));
725
	}
726
 
727
	/**
728
	 * Returns all IR Meta Data RuleDefintion objects in the database
729
	 * 
730
	 * @return Map Null if IR meta-data rule definitions are not imported into 
731
	 * definitions db (serialized java objects)
732
	 * 
733
	 * @throws Exception 
734
	 */
735
	@SuppressWarnings("unchecked")
736
	public Map<Long, RuleDefinition> getIrMetaDataRuleDefinitions() 
737
		throws Exception {
738
 
739
		// De-serialize
740
		if(this.irMetaDataRuleDefinitions == null) {
70 naveen 741
			String dbFile = Utils.DEFINITIONS_DB_PATH + "irmetadatarules" + 
742
				".ser";
62 naveen 743
 
744
			this.irMetaDataRuleDefinitions = 
745
				(Map<Long, RuleDefinition>) DBUtils.read(dbFile);
746
		}
747
 
748
		return this.irMetaDataRuleDefinitions;
749
	}
750
 
751
	/**
752
	 * Resolves IR Meta Data Rule Definition ID into RuleDefinition object
753
	 * 
754
	 * @param irMetaDataRuleDefinitionID
755
	 * @return RuleDefinition
756
	 * @throws Exception
757
	 */
758
	public RuleDefinition getIrMetaDataRuleDefinition(
759
			long irMetaDataRuleDefinitionID) throws Exception {
760
 
761
		if(this.irMetaDataRuleDefinitions == null) {
762
			this.getIrMetaDataRuleDefinitions();
763
		}
764
 
765
		return this.irMetaDataRuleDefinitions.get(
766
				new Long(irMetaDataRuleDefinitionID));
767
	}
70 naveen 768
 
769
	/**
770
	 * Returns all Comparison RuleDefintion objects in the database
771
	 * 
772
	 * @return Map Null if Comparison rule definitions are not imported into 
773
	 * definitions db (serialized java objects)
774
	 * 
775
	 * @throws Exception 
776
	 */
777
	@SuppressWarnings("unchecked")
778
	public Map<Long, CMPRuleDefinition> getComparisonRuleDefinitions() 
779
		throws Exception {
780
 
781
		// De-serialize
782
		if(this.cmpRuleDefinitions == null) {
783
			String dbFile = Utils.DEFINITIONS_DB_PATH + "comparisonrules" + 
784
				".ser";
785
 
786
			this.cmpRuleDefinitions = 
787
				(Map<Long, CMPRuleDefinition>) DBUtils.read(dbFile);
788
		}
789
 
790
		return this.cmpRuleDefinitions;
791
	}
792
 
793
	/**
794
	 * Resolves IR Data Rule Definition ID into RuleDefinition object
795
	 * 
796
	 * @param cmpRuleDefinitionID
797
	 * @return CMPRuleDefinition
798
	 * @throws Exception
799
	 */
800
	public CMPRuleDefinition getComparisonRuleDefinition(
801
			long cmpRuleDefinitionID) throws Exception {
802
 
803
		if(this.cmpRuleDefinitions == null) {
804
			this.getComparisonRuleDefinitions();
805
		}
806
 
807
		return this.cmpRuleDefinitions.get(new Long(cmpRuleDefinitionID));
808
	}
809
 
810
 
811
	/**
812
	 * Returns all ComparisonSlideRuleDefintion objects in the database
813
	 * 
814
	 * @return Map Null if Comparison slide-rule definitions are not imported 
815
	 * into definitions db (serialized java objects)
816
	 * 
817
	 * @throws Exception 
818
	 */
819
	@SuppressWarnings("unchecked")
820
	public Map<Long, CMPSlideRuleDefinition> getComparisonSlideRuleDefinitions() 
821
		throws Exception {
822
 
823
		// De-serialize
824
		if(this.cmpSlideRuleDefinitions == null) {
825
			String dbFile = Utils.DEFINITIONS_DB_PATH +	
826
				"comparisondefinitions.ser";
71 naveen 827
			Utils.info("dbFile=" + dbFile);
70 naveen 828
 
829
			this.cmpSlideRuleDefinitions = 
830
				(Map<Long, CMPSlideRuleDefinition>) DBUtils.read(dbFile);
71 naveen 831
 
832
			//Utils.info("this.cmpSlideRuleDefinitions=" +
833
			//		this.cmpSlideRuleDefinitions);
70 naveen 834
		}
835
 
836
		return this.cmpSlideRuleDefinitions;
837
	}
838
 
839
	/**
840
	 * Resolves Category ID into List of CMPSlideRuleDefinition object
841
	 * 
842
	 * @param categoryID
843
	 * @return List<CMPSlideRuleDefinition> 
844
	 * @throws Exception
845
	 */
846
	public CMPSlideRuleDefinition getComparisonSlideRuleDefinition(
847
			long slideDefinitionID) throws Exception {
848
 
849
		if(this.cmpSlideRuleDefinitions == null) {
850
			this.getComparisonSlideRuleDefinitions();
851
		}
852
 
853
		return this.cmpSlideRuleDefinitions.get(new Long(slideDefinitionID));
854
	}
855
 
856
 
857
	/**
858
	 * Resolves Slide Definition ID into ExpandedCMPSlideRuleDefinition object
859
	 * 
860
	 * @param categoryID
861
	 * @return ExpandedCMPSlideRuleDefinition 
862
	 * @throws Exception
863
	 */
864
	public ExpandedCMPSlideRuleDefinition
865
		getExpandedComparisonSlideRuleDefinition(long slideDefinitionID) 
866
		throws Exception {
71 naveen 867
		Utils.info("slideDefinitionID=" + slideDefinitionID);
70 naveen 868
 
869
		CMPSlideRuleDefinition cmpSlideRuleDef = 
870
			this.getComparisonSlideRuleDefinition(slideDefinitionID);
871
 
71 naveen 872
		if(cmpSlideRuleDef == null) {
873
			return null;
874
		}
875
 
70 naveen 876
		ExpandedCMPSlideRuleDefinition expDef = 
877
			new ExpandedCMPSlideRuleDefinition(cmpSlideRuleDef);
878
 
879
		return expDef;
880
	}
881
 
10 shop2020 882
}