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
 
17 naveen 6
import in.shop2020.metamodel.util.DBUtils;
7
import in.shop2020.metamodel.util.MM;
8
 
10 shop2020 9
import java.io.Serializable;
18 naveen 10
import java.util.ArrayList;
11
import java.util.Iterator;
12
import java.util.List;
10 shop2020 13
import java.util.Map;
14
 
15
/**
16
 * @author naveen
17
 *
18
 */
19
public class DefinitionsContainer implements Serializable {
20
 
21
	/**
22
	 * 
23
	 */
24
	private static final long serialVersionUID = 1L;
25
	private Map<Long, Category> categories;
26
	private Map<Long, SlideDefinition> slideDefinitions;
27
	private Map<Long, FeatureDefinition> featureDefinitions;
28
	private Map<Long, DatatypeDefinition> datatypeDefinitions;
29
	private Map<Long, Unit> units;
30
 
31
	/**
32
	 * 
33
	 */
34
	public DefinitionsContainer() {
17 naveen 35
		// Lazy initialization
10 shop2020 36
	}
37
 
38
	/**
39
	 * 
40
	 * @return Map
18 naveen 41
	 * @throws Exception 
10 shop2020 42
	 */
18 naveen 43
	@SuppressWarnings("unchecked")
44
	public Map<Long, Unit> getUnits() throws Exception {		
17 naveen 45
		// De-serialize
46
		if(this.units == null) {
18 naveen 47
			String dbFile = MM.DEFINITIONS_DB_PATH + "units" + ".ser";
48
 
49
			this.units = (Map<Long, Unit>) DBUtils.read(dbFile);
17 naveen 50
		}
18 naveen 51
 
10 shop2020 52
		return this.units;
53
	}
54
 
55
	/**
56
	 * 
57
	 * @param unitID
58
	 * @return Unit
18 naveen 59
	 * @throws Exception 
10 shop2020 60
	 */
18 naveen 61
	public Unit getUnit(long unitID) throws Exception {		
62
		// Initialize 
63
		if(this.units == null) {
64
			this.getUnits();
65
		}
17 naveen 66
 
10 shop2020 67
		return this.units.get(new Long(unitID));
68
	}
69
 
70
	/**
17 naveen 71
	 * @return the datatypeDefinitions
18 naveen 72
	 * @throws Exception 
10 shop2020 73
	 */
18 naveen 74
	@SuppressWarnings("unchecked")
75
	public Map<Long, DatatypeDefinition> getDatatypeDefinitions() 
76
		throws Exception {
77
 
78
		// De-serialize
79
		if(this.datatypeDefinitions == null) {
19 naveen 80
			String dbFile = MM.DEFINITIONS_DB_PATH + "datatypedefinitions" + 
81
				".ser";
18 naveen 82
 
83
			this.datatypeDefinitions = 
84
				(Map<Long, DatatypeDefinition>) DBUtils.read(dbFile);
85
		}
86
		return this.datatypeDefinitions;
10 shop2020 87
	}
18 naveen 88
 
89
	/**
90
	 * 
91
	 * @param unitID
92
	 * @return Unit
93
	 * @throws Exception 
94
	 */
95
	public DatatypeDefinition getDatatypeDefinition(long id) throws Exception {
96
 
97
		// Initialize 
98
		if(this.datatypeDefinitions == null) {
99
			this.getDatatypeDefinitions();
100
		}
101
 
102
		return this.datatypeDefinitions.get(new Long(id));
103
	}
19 naveen 104
 
105
	/**
106
	 * 
107
	 * @param datatypeDefID
108
	 * @param value
109
	 * @return long enumValueID - "-1" if not found
110
	 * @throws Exception 
111
	 */
112
	public long getEnumValueID(long datatypeDefID, String value) 
113
		throws Exception {
114
		long enumValueID = -1L;
115
 
116
		// Let the callers catch ClassCastException
117
		EnumDefinition enumDef = 
118
			(EnumDefinition)this.getDatatypeDefinition(datatypeDefID);
119
 
120
		List<EnumValue> enumValues = enumDef.getValues();
121
		for(EnumValue enumValue : enumValues) {
122
			if(value.equalsIgnoreCase(enumValue.getValue())) {
123
				enumValueID = enumValue.getID();
124
				break;
125
			}
126
		}
127
 
128
		return enumValueID;
129
	}
17 naveen 130
 
10 shop2020 131
	/**
132
	 * @return the categories
17 naveen 133
	 * @throws Exception 
10 shop2020 134
	 */
17 naveen 135
	@SuppressWarnings("unchecked")
136
	public Map<Long, Category> getCategories() throws Exception {
137
 
138
		// De-serialize
139
		if(this.categories == null) {
140
			String dbFile = MM.DEFINITIONS_DB_PATH + "categories" + ".ser";
141
 
142
			this.categories = (Map<Long, Category>) DBUtils.read(dbFile);
143
		}
144
		return this.categories;
10 shop2020 145
	}
17 naveen 146
 
10 shop2020 147
	/**
17 naveen 148
	 * 
149
	 * @param categoryID
150
	 * @return Category
151
	 * @throws Exception 
10 shop2020 152
	 */
17 naveen 153
	public Category getCategory(long categoryID) throws Exception {
154
 
18 naveen 155
		// Initialize 
17 naveen 156
		if(this.categories == null) {
157
			this.getCategories();
158
		}
159
 
160
		return this.categories.get(new Long(categoryID));
10 shop2020 161
	}
17 naveen 162
 
10 shop2020 163
	/**
18 naveen 164
	 * 
165
	 * @param categoryID
166
	 * @return List<CategorySlideDefinition> 
167
	 * @throws Exception 
168
	 */
169
	public List<CategorySlideDefinition> getCategorySlideDefinitions(
170
			long categoryID) throws Exception {
171
		Category category = this.getCategory(categoryID);
172
 
173
		return category.getCategorySlideDefintions();
174
	}
175
 
176
	/**
10 shop2020 177
	 * @return the slideDefinitions
18 naveen 178
	 * @throws Exception 
10 shop2020 179
	 */
18 naveen 180
	@SuppressWarnings("unchecked")
181
	public Map<Long, SlideDefinition> getSlideDefinitions() throws Exception {
182
 
183
		// De-serialize
184
		if(this.slideDefinitions == null) {
185
			String dbFile = MM.DEFINITIONS_DB_PATH + "slidedefinitions" + 
186
				".ser";
187
 
188
			this.slideDefinitions = 
189
				(Map<Long, SlideDefinition>) DBUtils.read(dbFile);
190
		}
191
		return this.slideDefinitions;
10 shop2020 192
	}
18 naveen 193
 
194
	/**
195
	 * 
196
	 * @param id
197
	 * @return SlideDefinition
198
	 * @throws Exception
199
	 */
200
	public SlideDefinition getSlideDefinition(long id) throws Exception {
201
 
202
		// Initialize 
203
		if(this.slideDefinitions == null) {
204
			this.getSlideDefinitions();
205
		}
206
 
207
		return this.slideDefinitions.get(new Long(id));
208
	}
209
 
210
	/**
211
	 * 
19 naveen 212
	 * @param label
213
	 * @return List<SlideDefinition>
214
	 * @throws Exception
215
	 */
216
	public List<SlideDefinition> getSlideDefinition(String label) 
217
		throws Exception {
218
 
219
		// Initialize 
220
		if(this.slideDefinitions == null) {
221
			this.getSlideDefinitions();
222
		}
223
 
224
		List<SlideDefinition> matchingSlides = new ArrayList<SlideDefinition>();
225
		for(Iterator<SlideDefinition> it = 
226
			this.slideDefinitions.values().iterator(); it.hasNext(); ) {
227
 
228
			SlideDefinition def = it.next();
229
			if(def.getLabel().equals(label)) {
230
				matchingSlides.add(def);
231
			}
232
		}
233
 
234
		return matchingSlides;
235
	}
236
	/**
237
	 * 
18 naveen 238
	 * @param categoryID
239
	 * @param EditorialImportance imp
240
	 * @return List<SlideDefinition>
241
	 * @throws Exception 
242
	 */
243
	public List<SlideDefinition> getSlides(long categoryID, 
244
			EditorialImportance imp) 
245
		throws Exception {
246
 
247
		List<CategorySlideDefinition> catSlideDefs = 
248
			this.getCategorySlideDefinitions(categoryID);
249
 
250
		Iterator<CategorySlideDefinition> itCatSlideDefs = 
251
			catSlideDefs.iterator();
252
 
253
		List<SlideDefinition> slideDefs = new ArrayList<SlideDefinition>();
254
		while(itCatSlideDefs.hasNext()) {
255
			CategorySlideDefinition catSlideDef = itCatSlideDefs.next();
256
			if(catSlideDef.getEditorialImportance() == imp) {
257
				long slideDefID = catSlideDef.getSlideDefintionID();
258
				slideDefs.add(this.getSlideDefinition(slideDefID));
259
			}
260
		}
261
		return slideDefs;
262
	}
263
 
264
	/**
265
	 * 
266
	 * @return Map<Long, FeatureDefinition>
267
	 * @throws Exception
268
	 */
269
	@SuppressWarnings("unchecked")
270
	public Map<Long, FeatureDefinition> getFeatureDefinitions() 
271
		throws Exception {
272
 
273
		// De-serialize
274
		if(this.featureDefinitions == null) {
275
			String dbFile = MM.DEFINITIONS_DB_PATH + "featuredefinitions" + 
276
				".ser";
277
 
278
			this.featureDefinitions = 
279
				(Map<Long, FeatureDefinition>) DBUtils.read(dbFile);
280
		}
281
		return this.featureDefinitions;
282
	}
19 naveen 283
 
10 shop2020 284
	/**
18 naveen 285
	 * 
19 naveen 286
	 * @param slideID
287
	 * @return List<FeatureDefinition> 
288
	 * @throws Exception
289
	 */
290
	public List<FeatureDefinition> getFeatureDefinitions(long slideID) 
291
		throws Exception {
292
		List<FeatureDefinition> featureDefs = 
293
			new ArrayList<FeatureDefinition>();
294
 
295
		SlideDefinition slideDef = this.getSlideDefinition(slideID);
296
		List<SlideFeatureDefinition> slideFeatureDefs = 
297
			slideDef.getSlideFeatureDefinitions();
298
 
299
		for(int i=0; i<slideFeatureDefs.size(); i++) {
300
			featureDefs.add(this.getFeatureDefinition(
301
					slideFeatureDefs.get(i).getFeatureDefintionID()));
302
		}
303
 
304
		return featureDefs;
305
	}
306
 
307
	/**
308
	 * 
309
	 * @param slideID
310
	 * @param imp
311
	 * @return List<FeatureDefinition>
312
	 * @throws Exception
313
	 */
314
	public List<FeatureDefinition> getFeatureDefinitions(long slideID, 
315
			EditorialImportance imp)  throws Exception {
316
		List<FeatureDefinition> featureDefs = 
317
			new ArrayList<FeatureDefinition>();
318
 
319
		SlideDefinition slideDef = this.getSlideDefinition(slideID);
320
		List<SlideFeatureDefinition> slideFeatureDefs = 
321
			slideDef.getSlideFeatureDefinitions();
322
 
323
		for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
324
			if(slideFeatureDef.getEditorialImportance() == imp) {
325
				featureDefs.add(this.getFeatureDefinition(
326
						slideFeatureDef.getFeatureDefintionID()));
327
			}
328
		}
329
 
330
		return featureDefs;
331
	}
332
 
333
	/**
334
	 * 
18 naveen 335
	 * @param id
19 naveen 336
	 * @return FeatureDefinition
18 naveen 337
	 * @throws Exception
10 shop2020 338
	 */
18 naveen 339
	public FeatureDefinition getFeatureDefinition(long id) throws Exception {
340
 
341
		// Initialize 
342
		if(this.featureDefinitions == null) {
343
			this.getFeatureDefinitions();
344
		}
345
 
346
		return this.featureDefinitions.get(new Long(id));
347
	}	
19 naveen 348
 
349
	/**
350
	 * 
351
	 * @param slideID
352
	 * @param featureLabel
353
	 * @return FeatureDefinition 
354
	 * @throws Exception
355
	 */
356
	public FeatureDefinition getFeatureDefinition(long slideID, 
357
			String featureLabel) throws Exception {
358
		FeatureDefinition featureDef = null;
359
 
360
		SlideDefinition slideDef = this.getSlideDefinition(slideID);
361
		for(SlideFeatureDefinition slideFeatureDef : 
362
			slideDef.getSlideFeatureDefinitions()) {
363
 
364
			long featureDefID = slideFeatureDef.getFeatureDefintionID();
365
 
366
			FeatureDefinition thisFeatureDef = this.getFeatureDefinition(
367
					featureDefID);
368
 
369
			if(featureLabel.equals(thisFeatureDef.getLabel())) {
370
				featureDef = thisFeatureDef;
371
			}
372
		}
373
 
374
		return featureDef;
375
	}
376
 
10 shop2020 377
}