Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 shop2020 1
/**
2
 * 
3
 */
4
package in.shop2020.metamodel.util;
5
 
16 naveen 6
import in.shop2020.metamodel.definitions.BulletDefinition;
45 naveen 7
import in.shop2020.metamodel.definitions.Catalog;
10 shop2020 8
import in.shop2020.metamodel.definitions.Category;
9
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
16 naveen 10
import in.shop2020.metamodel.definitions.CompositeDefinition;
11
import in.shop2020.metamodel.definitions.CompositePartDefinition;
12
import in.shop2020.metamodel.definitions.DatatypeDefinition;
45 naveen 13
import in.shop2020.metamodel.definitions.DefinitionsContainer;
10 shop2020 14
import in.shop2020.metamodel.definitions.EditorialImportance;
16 naveen 15
import in.shop2020.metamodel.definitions.EnumDefinition;
16
import in.shop2020.metamodel.definitions.EnumValue;
17
import in.shop2020.metamodel.definitions.FeatureDefinition;
18
import in.shop2020.metamodel.definitions.SlideDefinition;
19
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
10 shop2020 20
import in.shop2020.metamodel.definitions.Unit;
16 naveen 21
import in.shop2020.metamodel.jaxb.BulletDefinitionType;
10 shop2020 22
import in.shop2020.metamodel.jaxb.CategorySlideDefinitionType;
23
import in.shop2020.metamodel.jaxb.CategoryType;
16 naveen 24
import in.shop2020.metamodel.jaxb.CompositeDefinitionType;
25
import in.shop2020.metamodel.jaxb.CompositePartDefinitionType;
26
import in.shop2020.metamodel.jaxb.DatatypeDefinitionType;
10 shop2020 27
import in.shop2020.metamodel.jaxb.DefinitionType;
28
import in.shop2020.metamodel.jaxb.EditorialImportanceType;
16 naveen 29
import in.shop2020.metamodel.jaxb.EnumDefinitionType;
30
import in.shop2020.metamodel.jaxb.EnumValueType;
31
import in.shop2020.metamodel.jaxb.FeatureDefinitionType;
32
import in.shop2020.metamodel.jaxb.SlideDefinitionType;
33
import in.shop2020.metamodel.jaxb.SlideFeatureDefinitionType;
10 shop2020 34
import in.shop2020.metamodel.jaxb.UnitType;
18 naveen 35
import in.shop2020.util.Utils;
10 shop2020 36
 
37
import java.io.FileInputStream;
16 naveen 38
import java.util.ArrayList;
10 shop2020 39
import java.util.HashMap;
40
import java.util.Iterator;
41
import java.util.List;
42
import java.util.Map;
24 naveen 43
import java.util.TreeMap;
10 shop2020 44
 
45
import javax.xml.bind.JAXBContext;
46
import javax.xml.bind.JAXBElement;
47
import javax.xml.bind.Unmarshaller;
48
 
49
import org.apache.commons.lang.ArrayUtils;
50
import org.apache.commons.lang.StringUtils;
51
 
52
/**
17 naveen 53
 * MM - Meta-Model Tool
54
 * Imports and exports model definitions. Validates against meta model
10 shop2020 55
 * 
56
 * @author naveen
57
 *
58
 */
59
public class MM {
16 naveen 60
	public static final String DEFINITIONS_SRC_PATH = 
61
		"/home/naveen/workspace/eclipse/webapp/src/xml/model/";
34 naveen 62
 
43 naveen 63
	// LOCAL
16 naveen 64
	public static final String DEFINITIONS_DB_PATH = 
26 naveen 65
		"/home/naveen/workspace/eclipse/db/definitions/";
16 naveen 66
	public static final String ENTITIES_DB_PATH = 
26 naveen 67
		"/home/naveen/workspace/eclipse/db/entities/";
10 shop2020 68
 
34 naveen 69
	/** WEB
70
	public static final String DEFINITIONS_DB_PATH = 
71
		"/var/lib/tomcat6/webapps/shop2020/db/definitions/";
72
	public static final String ENTITIES_DB_PATH = 
73
		"/var/lib/tomcat6/webapps/shop2020/db/entities/";
74
	*/
43 naveen 75
 
76
	/** Validation tool
77
	public static final String DEFINITIONS_DB_PATH = 
78
		"./db/definitions/";
79
	public static final String ENTITIES_DB_PATH = 
80
		"./db/entities/";
81
	*/
34 naveen 82
 
10 shop2020 83
	private String definitionSetName;
84
	private String srcFile;
85
	private String dbFile;
86
 
87
	/**
88
	 * @param args
89
	 */
90
	public static void main(String[] args) throws Exception {
16 naveen 91
		String[] definitionSetNames = new String[] {"units", 
92
				"datatypedefinitions", "featuredefinitions", "slidedefinitions", 
93
				"categories"};
10 shop2020 94
 
45 naveen 95
		String[] commands = new String[] {"show", "import", "showcategory"};
10 shop2020 96
 
16 naveen 97
		String usage = "Usage: MM ["+ StringUtils.join(commands, "|") +"] ["+ 
45 naveen 98
			StringUtils.join(definitionSetNames, "|") + "] {Category ID}";
16 naveen 99
 
10 shop2020 100
		if(args.length < 2) {
101
			System.out.println(usage);
102
			System.exit(-1);
103
		}
42 naveen 104
		Utils.info("MM "+ args[0] + " " + args[1]);
17 naveen 105
 
10 shop2020 106
		String inputCommand = args[0];
107
 
108
		if(!ArrayUtils.contains(commands, inputCommand)) {
109
			System.out.println(usage);
110
			System.exit(-1);
111
		}
112
 
45 naveen 113
		if(inputCommand.equals("show") || inputCommand.endsWith("import")) {
114
			String inputDefinitionSet = args[1];
115
			if(!ArrayUtils.contains(definitionSetNames, inputDefinitionSet)) {
116
				System.out.println(usage);
117
				System.exit(-1);
118
			}
119
 
120
			MM mm = new MM(inputDefinitionSet);
121
			if(inputCommand.equals("import")) {
122
				mm.importDefinitionSet();
123
			}
124
			else if(inputCommand.equals("show")) {
125
				mm.showDefinitionSet();
126
			}
10 shop2020 127
		}
128
 
45 naveen 129
		if(inputCommand.equals("showcategory")) {
130
			String categoryID = args[1];
131
			long catID = 0;
132
			try {
133
				catID = Long.parseLong(categoryID);
134
			} 
135
			catch (NumberFormatException nfe) {
136
				System.out.println("Invalid category ID");
137
				System.exit(-1);
138
			}
139
 
140
			MM mm = new MM();
141
			mm.showCategory(catID);
10 shop2020 142
		}
143
	}
144
 
145
	/**
146
	 * 
45 naveen 147
	 */
148
	public MM() {
149
	}
150
 
151
	/**
152
	 * 
10 shop2020 153
	 * @param definitionSet
154
	 */
155
	public MM(String definitionSetName) {
156
		this.definitionSetName = definitionSetName;
157
		this.srcFile = DEFINITIONS_SRC_PATH + this.definitionSetName + ".xml";
158
		this.dbFile = DEFINITIONS_DB_PATH + this.definitionSetName + ".ser";
159
	}
160
 
161
	/**
162
	 * 
45 naveen 163
	 * @param categoryID
164
	 * @throws Exception 
10 shop2020 165
	 */
45 naveen 166
	public void showCategory(long categoryID) throws Exception {
167
		DefinitionsContainer defs = 
168
			Catalog.getInstance().getDefinitionsContainer();
169
 
170
		ExpandedCategory expCategory = defs.getExpandedCategory(categoryID);
171
 
172
		Utils.info(expCategory);
173
	}
174
 
175
	/**
176
	 * 
177
	 */
10 shop2020 178
	@SuppressWarnings("unchecked")
179
	public void importDefinitionSet() throws Exception {
180
		DefinitionType defType = this.unmarshallSrcFile(this.srcFile);
16 naveen 181
		Object objectToStore = null;
10 shop2020 182
 
183
		// Units
184
		if(this.definitionSetName.equals("units")) {
185
			Map unitsMap = this.convertUnits(defType);
16 naveen 186
			objectToStore = unitsMap;
10 shop2020 187
		}
188
 
189
		// Categories
190
		else if(this.definitionSetName.equals("categories")) {
191
			Map<Long, Category> categoriesMap = new HashMap<Long, Category>();
192
			Category root = this.convertCategories(defType, categoriesMap);
42 naveen 193
			//Utils.info(categoriesMap);
194
			//Utils.info(root);
10 shop2020 195
			//System.exit(0);
196
 
197
			// Tree
16 naveen 198
			String categoryTreeDBFile = DEFINITIONS_DB_PATH + "categorytree" + 
199
				".ser";
200
 
10 shop2020 201
			if(root != null) {
17 naveen 202
				DBUtils.store(root, categoryTreeDBFile);
10 shop2020 203
			}
204
 
205
			// Map
16 naveen 206
			objectToStore = categoriesMap;
10 shop2020 207
		}
16 naveen 208
 
209
		// Datatype Definitions
210
		else if(this.definitionSetName.equals("datatypedefinitions")) {
24 naveen 211
			Map<Long, DatatypeDefinition> datatypeDefsMap = 
212
				this.convertDatatypeDefinition(defType);
16 naveen 213
 
24 naveen 214
			// Store enum value id to value map separately
215
			String enumValueDBFile = DEFINITIONS_DB_PATH + "enumvalues" + 
216
				".ser";
217
 
218
			// RE-VISIT - May not be optimal
219
			Map<Long, EnumValue> enumValuesMap = new TreeMap<Long, EnumValue>();
220
			for(Long datatypeDefID : datatypeDefsMap.keySet()) {
221
				DatatypeDefinition datatypeDef = 
222
					datatypeDefsMap.get(datatypeDefID);
223
 
224
				if(datatypeDef instanceof EnumDefinition) {
225
					List<EnumValue> enumValues = 
226
						((EnumDefinition) datatypeDef).getEnumValues();
227
 
228
					for(EnumValue enumValue : enumValues) {
229
						enumValuesMap.put(new Long(enumValue.getID()), 
230
								enumValue);
231
					}
232
				}
233
			}
42 naveen 234
			Utils.info("enumValuesMap=" + enumValuesMap);
24 naveen 235
			DBUtils.store(enumValuesMap, enumValueDBFile);
236
 
16 naveen 237
			objectToStore = datatypeDefsMap;
238
		}
239
 
240
		// Feature Definitions
241
		else if(this.definitionSetName.equals("featuredefinitions")) {
242
			Map featureDefsMap = this.convertFeatureDefinitions(defType);
243
 
244
			objectToStore = featureDefsMap;
245
		}
246
 
247
		// Slide Definitions
248
		else if(this.definitionSetName.equals("slidedefinitions")) {
249
			Map slideDefsMap = this.convertSlideDefinitions(defType);
250
 
251
			objectToStore = slideDefsMap;
252
		}
253
 
254
		if(objectToStore != null) {
17 naveen 255
			DBUtils.store(objectToStore, this.dbFile);
16 naveen 256
		}
10 shop2020 257
	}
258
 
259
	/**
260
	 * 
261
	 */
262
	public void showDefinitionSet() throws Exception {
17 naveen 263
		Object obj = DBUtils.read(this.dbFile);
42 naveen 264
		Utils.info(obj.toString());
10 shop2020 265
 
266
		if(this.definitionSetName.equals("categories")) {
16 naveen 267
			String categoryTreeDBFile = DEFINITIONS_DB_PATH + "categorytree" + 
268
				".ser";
269
 
17 naveen 270
			Category root = (Category)DBUtils.read(categoryTreeDBFile);
42 naveen 271
			Utils.info(root.toString());
272
			//Utils.info("root.getChildrenCategory().size: " + 
18 naveen 273
			//		root.getChildrenCategory().size());
10 shop2020 274
		}
275
	}
276
 
277
	/**
278
	 * 
279
	 * @return Map
280
	 */
16 naveen 281
	private Map<Long, SlideDefinition> convertSlideDefinitions(
282
			DefinitionType defType) {
283
 
284
		Map<Long, SlideDefinition> defs = 
285
			new HashMap<Long, SlideDefinition>();
286
 
287
		List<SlideDefinitionType> jaxbDefs = defType.getSlideDefinition();
288
		Iterator<SlideDefinitionType> itjaxbDefs = jaxbDefs.iterator();
289
 
290
		// Slide definitions
291
		while(itjaxbDefs.hasNext()) {
292
			SlideDefinitionType jaxbDef = itjaxbDefs.next();
293
 
42 naveen 294
			Utils.info("Slide label=" + jaxbDef.getLabel());
16 naveen 295
			SlideDefinition def = new SlideDefinition(jaxbDef.getID(),
296
					jaxbDef.getLabel());
297
			def.setDescription(jaxbDef.getDescription());
298
 
42 naveen 299
			// Children Slides
300
			Utils.info("jaxbDef.getChildSlideID=" + jaxbDef.getChildSlideID());
301
			def.setChildrenSlideDefinitionIDs(jaxbDef.getChildSlideID());
302
 
16 naveen 303
			// Slide Feature Definition
304
			List<SlideFeatureDefinitionType> jaxbSlideFeatureDefs = 
305
				jaxbDef.getSlideFeatureDefinition();
306
 
307
			if(jaxbSlideFeatureDefs != null) {
308
				def.setSlideFeatureDefinitions((
309
						this.convertSlideFeatureDefinitions(
310
								jaxbSlideFeatureDefs)));
311
			}
42 naveen 312
			Utils.info("def=" + def);
16 naveen 313
 
314
			defs.put(new Long(jaxbDef.getID()), def);
315
		}
316
 
317
		return defs;
318
	}
319
 
320
	/**
321
	 * 
322
	 * @param jaxbDefs
323
	 * @return List<SlideFeatureDefinition>
324
	 */
325
	private List<SlideFeatureDefinition> convertSlideFeatureDefinitions(
326
			List<SlideFeatureDefinitionType> jaxbDefs) {
327
 
328
		List<SlideFeatureDefinition> defs = 
329
			new ArrayList<SlideFeatureDefinition>();
330
 
331
		Iterator<SlideFeatureDefinitionType> itjaxbDefs = jaxbDefs.iterator();
332
 
333
		// Slide-feature definitions
334
		while(itjaxbDefs.hasNext()) {
335
			SlideFeatureDefinitionType jaxbDef = itjaxbDefs.next();
336
			SlideFeatureDefinition def = new SlideFeatureDefinition(
337
					jaxbDef.getFeatureDefinitionID());
338
 
339
			def.setEditorialImportance(this.convertEditorialImportance(
340
					jaxbDef.getEditorialImportance()));
341
 
342
			def.setDescription(jaxbDef.getDescription());
343
 
344
			defs.add(def);
345
		}
346
 
347
		return defs;
348
	}
349
 
350
	/**
351
	 * 
352
	 * @return Map
353
	 */
354
	private Map<Long, FeatureDefinition> convertFeatureDefinitions(
355
			DefinitionType defType) {
356
 
357
		Map<Long, FeatureDefinition> defs = 
358
			new HashMap<Long, FeatureDefinition>();
359
 
360
		List<FeatureDefinitionType> jaxbDefs = defType.getFeatureDefinition();
361
		Iterator<FeatureDefinitionType> itjaxbDefs = jaxbDefs.iterator();
362
 
363
		// Feature definitions
364
		while(itjaxbDefs.hasNext()) {
365
			FeatureDefinitionType jaxbDef = itjaxbDefs.next();
366
 
42 naveen 367
			//Utils.info("Feature label=" + jaxbDef.getLabel());
16 naveen 368
			FeatureDefinition def = new FeatureDefinition(jaxbDef.getID(),
369
					jaxbDef.getLabel());
370
			def.setAllowsBlank(jaxbDef.isCanbeBlank());
371
			def.setDescription(jaxbDef.getDescription());
372
 
373
			// Bullet Definition
374
			BulletDefinitionType jaxbBulletDef = jaxbDef.getBulletDefinition();
375
			if(jaxbBulletDef != null) {
376
				def.setBulletDefinition(this.convertBulletDefinition(
377
						jaxbBulletDef));
378
			}
42 naveen 379
			Utils.info("def=" + def);
16 naveen 380
 
381
			defs.put(new Long(jaxbDef.getID()), def);
382
		}
383
 
384
		return defs;
385
	}
386
 
387
	/**
388
	 * 
389
	 * @param jaxbDef BulletDefinitionType
390
	 * @return BulletDefinition
391
	 */
392
	private BulletDefinition convertBulletDefinition(
393
			BulletDefinitionType jaxbDef) {
394
 
395
		BulletDefinition def = new BulletDefinition(
396
				jaxbDef.getDatatypeDefinitionID());
397
 
398
		Long unitID = jaxbDef.getUnitID();
399
		if(unitID != null) {
400
			def.setUnitID(unitID.longValue());
401
		}
402
		def.setMultivalue(jaxbDef.isIsMultivalue());
403
		def.setLearned(jaxbDef.isIsLearned());
404
		def.setDescription(jaxbDef.getDescription());
405
 
406
		return def;
407
	}
408
 
409
	/**
410
	 * 
411
	 * @return Map
412
	 */
413
	private Map<Long, DatatypeDefinition> convertDatatypeDefinition(
414
			DefinitionType defType) {
415
 
416
		Map<Long, DatatypeDefinition> defs = 
417
			new HashMap<Long, DatatypeDefinition>();
418
 
419
		List<DatatypeDefinitionType> jaxbDefs = defType.getDatatypeDefinition();
420
		Iterator<DatatypeDefinitionType> it = jaxbDefs.iterator();
421
 
422
		while(it.hasNext()) {
423
			DatatypeDefinitionType jaxbDef = it.next();
424
 
425
			DatatypeDefinition def = null;
426
			CompositeDefinitionType compositeDefType = 
427
				jaxbDef.getCompositeDefinition();
428
 
429
			EnumDefinitionType enumDefType = 
430
				jaxbDef.getEnumDefinition();
431
 
432
			// Composite data type
433
			if(compositeDefType != null) {
434
				CompositeDefinition compDef = new CompositeDefinition(
20 naveen 435
						jaxbDef.getID(), jaxbDef.getName(), 
436
						compositeDefType.getSeparator());
16 naveen 437
 
438
				List<CompositePartDefinitionType> jaxbPartDefs = 
439
					compositeDefType.getCompositePartDefinition();
440
 
441
				Iterator<CompositePartDefinitionType> itPartDefs = 
442
					jaxbPartDefs.iterator();
443
 
444
				// Collect parts
445
				while(itPartDefs.hasNext()) {
446
					CompositePartDefinitionType jaxbPartDef = itPartDefs.next();
447
					CompositePartDefinition partDef = 
448
						this.convertCompositePartDefinition(jaxbPartDef);
449
 
450
					compDef.addCompositePartDefinition(partDef);
451
				}
452
 
453
				def = compDef;
454
			}
455
 
456
			// Enumerated values
457
			else if(enumDefType != null) {
458
				EnumDefinition enumDef = new EnumDefinition(jaxbDef.getID(), 
459
						jaxbDef.getName());
460
 
461
				List<EnumValueType> jaxbEnumValues = 
462
					enumDefType.getEnumValue();
463
 
464
				Iterator<EnumValueType> itEnumValues = 
465
					jaxbEnumValues.iterator();
466
 
467
				// Collect individual value
468
				while(itEnumValues.hasNext()) {
469
					EnumValueType jaxbEnumValue = itEnumValues.next();
470
					EnumValue enumValue = 
471
						this.convertEnumValueDefinition(jaxbEnumValue);
472
 
473
					enumDef.addEnumValue(enumValue);
474
				}
475
 
476
				def = enumDef;
477
			}
478
 
479
			// Primitive
480
			else {
481
				def = new DatatypeDefinition(jaxbDef.getID(), 
482
						jaxbDef.getName());
483
			}
484
 
485
			def.setDescription(jaxbDef.getDescription());
42 naveen 486
			Utils.info("def=" + def);
16 naveen 487
 
488
			defs.put(new Long(jaxbDef.getID()), def);
489
		}
490
 
491
		return defs;
492
	}
493
 
494
	/**
495
	 * 
496
	 * @param jaxbEnumValue
497
	 * @return EnumValue
498
	 */
499
	private EnumValue convertEnumValueDefinition(EnumValueType jaxbEnumValue) {
500
 
501
		EnumValue enumValue = new EnumValue(jaxbEnumValue.getID(), 
502
				jaxbEnumValue.getValue());
503
 
504
		return enumValue;
505
	}
506
	/**
507
	 * 
508
	 * @param jaxbPartDef
509
	 * @return CompositePartDefinition
510
	 */
511
	private CompositePartDefinition convertCompositePartDefinition(
512
			CompositePartDefinitionType jaxbPartDef) {
513
 
514
		CompositePartDefinition partDef = new CompositePartDefinition(
515
				jaxbPartDef.getLabel(), jaxbPartDef.getDatatypeDefinitionID(), 
516
				jaxbPartDef.getUnitID());
517
 
518
		partDef.setDescription(jaxbPartDef.getDescription());
519
 
520
		return partDef;
521
	}
522
 
523
	/**
524
	 * 
525
	 * @return Map
526
	 */
527
	private Category convertCategories(DefinitionType defType, 
528
			Map<Long, Category> catMap) {
10 shop2020 529
 
530
		List<CategoryType> jaxbCats = defType.getCategory();
531
		Iterator<CategoryType> it = jaxbCats.iterator();
532
 
533
		// Get root category
534
		CategoryType jaxbCat = it.next();
535
		if(jaxbCat == null) {
42 naveen 536
			Utils.info("Invalid file: " + this.srcFile);
10 shop2020 537
			return null;
538
		}
539
 
540
		Category root = this.convertCategoryType(jaxbCat, null, catMap);
42 naveen 541
		Utils.info("catMap.get(10002)=" + catMap.get(new Long(10002)));
32 naveen 542
 
10 shop2020 543
		return root;
544
	}
545
 
546
	/**
547
	 * 
548
	 * @param jaxbCat
549
	 * @return Category
550
	 */
32 naveen 551
	@SuppressWarnings("unchecked")
16 naveen 552
	private Category convertCategoryType(CategoryType jaxbCat, 
553
			Category parentCat, Map<Long, Category> catMap) {
18 naveen 554
 
10 shop2020 555
		Category cat = new Category(jaxbCat.getID());
556
		cat.setLabel(jaxbCat.getName());
557
		cat.setDescription(jaxbCat.getDescription());
558
		if(parentCat != null) {
559
			cat.setParentCategory(parentCat);
32 naveen 560
 
561
			// Copy parent's category-slide definitions
562
			ArrayList<CategorySlideDefinition> parentCSDef = 
563
				(ArrayList<CategorySlideDefinition>) 
564
				parentCat.getCategorySlideDefintions();
565
 
566
			if(parentCSDef != null) {
567
				cat.setCategorySlideDefintions(
568
					(List<CategorySlideDefinition>) parentCSDef.clone());
569
			}
10 shop2020 570
		}
571
 
572
		// Category Slide Definition
32 naveen 573
		List<CategorySlideDefinitionType> jaxbDefs = 
574
			jaxbCat.getCategorySlideDefinition();
575
 
10 shop2020 576
		Iterator<CategorySlideDefinitionType> it = jaxbDefs.iterator();
577
		while(it.hasNext()) {
578
			CategorySlideDefinitionType jaxbDef = it.next();
32 naveen 579
			CategorySlideDefinition catSlideDef 
580
			= this.convertCategorySlideDefinitionType(jaxbCat.getID(), jaxbDef);
581
 
10 shop2020 582
			cat.addCategorySlideDefintion(catSlideDef);
583
		}
584
 
585
		// Children
586
		List<CategoryType> jaxbChildren = jaxbCat.getChildCategory();
42 naveen 587
		//Utils.info("jaxbChildren.size: " + jaxbChildren.size());
10 shop2020 588
 
589
		Iterator<CategoryType> itChildren = jaxbChildren.iterator();
590
		while(itChildren.hasNext()) {
591
			CategoryType jaxbChildCat = itChildren.next();
32 naveen 592
			Category childCat = this.convertCategoryType(jaxbChildCat, cat, 
593
					catMap);
10 shop2020 594
			cat.addChild(childCat);
595
		}
42 naveen 596
		//Utils.info("Parent cat: " + cat);
32 naveen 597
		// DEBUG ONLY
42 naveen 598
		Utils.info("####### Cat ID: " + cat.getID());
32 naveen 599
		if(cat.getCategorySlideDefintions() != null) {
600
			for(CategorySlideDefinition csd : cat.getCategorySlideDefintions()){
42 naveen 601
				Utils.info("####### SlideDefintionID=" + 
32 naveen 602
						csd.getSlideDefintionID());
603
			}
604
		}
605
 
10 shop2020 606
		catMap.put(new Long(jaxbCat.getID()), cat);
607
		return cat;
608
	}
609
 
610
	/**
611
	 * 
612
	 * @param jaxbDef
613
	 * @return
614
	 */
16 naveen 615
	private CategorySlideDefinition convertCategorySlideDefinitionType(
616
			long categoryID, CategorySlideDefinitionType jaxbDef) {
617
 
10 shop2020 618
		CategorySlideDefinition catSlideDef = new CategorySlideDefinition(
32 naveen 619
				jaxbDef.getSlideDefinitionID());
10 shop2020 620
 
621
		catSlideDef.setDescription(jaxbDef.getDescription());
622
 
623
		EditorialImportanceType jaxbEdImp = jaxbDef.getEditorialImportance();
624
		EditorialImportance edImp = this.convertEditorialImportance(jaxbEdImp);
625
		catSlideDef.setEditorialImportance(edImp);
626
 
627
		return catSlideDef;
628
	}
629
 
630
	/**
631
	 * 
632
	 * @return Map
633
	 */
634
	private Map<Long, Unit> convertUnits(DefinitionType defType) {
635
 
636
		Map<Long, Unit> allUnits = new HashMap<Long, Unit>();
637
		List<UnitType> jaxbUnits = defType.getUnit();
638
		Iterator<UnitType> it = jaxbUnits.iterator();
639
 
640
		while(it.hasNext()) {
641
			UnitType jaxbUnit = it.next();
642
 
643
			Unit unit = new Unit(jaxbUnit.getID());
644
			unit.setDescription(jaxbUnit.getDescription());
645
			unit.setFullForm(jaxbUnit.getFullform());
646
			unit.setShortForm(jaxbUnit.getShortform());
42 naveen 647
			Utils.info("unit=" + unit);
10 shop2020 648
 
649
			allUnits.put(new Long(jaxbUnit.getID()), unit);
650
		}
651
 
652
		return allUnits;
653
	}
654
 
655
	/**
656
	 * 
657
	 * @return DefinitionType
658
	 */
659
	private DefinitionType unmarshallSrcFile(String srcFile) throws Exception {
660
 
16 naveen 661
        JAXBContext jc = JAXBContext.newInstance("in.shop2020.metamodel.jaxb");
10 shop2020 662
 
663
        // create an Unmarshaller
664
        Unmarshaller u = jc.createUnmarshaller();
665
 
16 naveen 666
        JAXBElement<?> element = (JAXBElement<?>)u.unmarshal(
667
        		new FileInputStream(srcFile));
10 shop2020 668
 
669
        return (DefinitionType)element.getValue();
670
	}
671
 
672
	/**
673
	 * 
16 naveen 674
	 * @param jaxbEdImp
675
	 * @return EditorialImportance
676
	 */
677
	private EditorialImportance convertEditorialImportance(
678
			EditorialImportanceType jaxbEdImp) {
679
 
680
		String strEdImp = jaxbEdImp.value();
681
		EditorialImportance edImp = null;
682
 
683
		if(strEdImp.equals("Mandatory"))
684
			edImp = EditorialImportance.MANDATORY;
685
		else if(strEdImp.equals("Optional"))
686
			edImp = EditorialImportance.OPTIONAL;
687
		else 
688
			edImp = EditorialImportance.RECOMMENDED;
689
 
690
		return edImp;
691
	}
10 shop2020 692
}