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