Subversion Repositories SmartDukaan

Rev

Rev 19 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 19 Rev 20
Line 14... Line 14...
14
import java.util.List;
14
import java.util.List;
15
import java.util.Map;
15
import java.util.Map;
16
import java.util.TreeMap;
16
import java.util.TreeMap;
17
import java.util.logging.Level;
17
import java.util.logging.Level;
18
 
18
 
-
 
19
import in.shop2020.metamodel.core.Bullet;
-
 
20
import in.shop2020.metamodel.core.BulletDataObject;
-
 
21
import in.shop2020.metamodel.core.CompositeDataObject;
-
 
22
import in.shop2020.metamodel.core.EnumDataObject;
-
 
23
import in.shop2020.metamodel.core.PrimitiveDataObject;
19
import in.shop2020.metamodel.definitions.BulletDefinition;
24
import in.shop2020.metamodel.definitions.BulletDefinition;
20
import in.shop2020.metamodel.definitions.Catalog;
25
import in.shop2020.metamodel.definitions.Catalog;
21
import in.shop2020.metamodel.definitions.Category;
26
import in.shop2020.metamodel.definitions.Category;
22
import in.shop2020.metamodel.definitions.CompositeDefinition;
27
import in.shop2020.metamodel.definitions.CompositeDefinition;
-
 
28
import in.shop2020.metamodel.definitions.CompositePartDefinition;
23
import in.shop2020.metamodel.definitions.DatatypeDefinition;
29
import in.shop2020.metamodel.definitions.DatatypeDefinition;
24
import in.shop2020.metamodel.definitions.DefinitionsContainer;
30
import in.shop2020.metamodel.definitions.DefinitionsContainer;
25
import in.shop2020.metamodel.definitions.EditorialImportance;
31
import in.shop2020.metamodel.definitions.EditorialImportance;
26
import in.shop2020.metamodel.definitions.EnumDefinition;
32
import in.shop2020.metamodel.definitions.EnumDefinition;
27
import in.shop2020.metamodel.definitions.FeatureDefinition;
33
import in.shop2020.metamodel.definitions.FeatureDefinition;
Line 63... Line 69...
63
		new HashMap<String, Long>();
69
		new HashMap<String, Long>();
64
	
70
	
65
	private Map<String, Long> slideNameFeatureNameToFeatureDefID =
71
	private Map<String, Long> slideNameFeatureNameToFeatureDefID =
66
		new HashMap<String, Long>();
72
		new HashMap<String, Long>();
67
 
73
 
68
	private Map<String, Long> slideNameFeatureNameToEnumValueID =
74
	private Map<String, List<Bullet>> slideNameFeatureNameToBullets =
69
		new HashMap<String, Long>();
75
		new HashMap<String, List<Bullet>>();
70
	
76
	
71
	/**
77
	/**
72
	 * @param args
78
	 * @param args
73
	 */
79
	 */
74
	public static void main(String[] args) throws Exception {
80
	public static void main(String[] args) throws Exception {
Line 353... Line 359...
353
		long datatypeDefID = bulletDef.getDatatypeDefinitionID();
359
		long datatypeDefID = bulletDef.getDatatypeDefinitionID();
354
		DatatypeDefinition datatypeDef = 
360
		DatatypeDefinition datatypeDef = 
355
			defs.getDatatypeDefinition(datatypeDefID);
361
			defs.getDatatypeDefinition(datatypeDefID);
356
		Utils.logger.info("datatypeDef=" + datatypeDef);
362
		Utils.logger.info("datatypeDef=" + datatypeDef);
357
 
363
 
-
 
364
		
-
 
365
		String key = slideDef.getLabel() + "_" + featureDef.getLabel();
-
 
366
		List<Bullet> bullets = 
-
 
367
			this.slideNameFeatureNameToBullets.get(key);
-
 
368
		
-
 
369
		if(bullets == null) {
-
 
370
			bullets = new ArrayList<Bullet>();
-
 
371
			this.slideNameFeatureNameToBullets.put(key, bullets);
-
 
372
		}
-
 
373
		
358
		// If primitive
374
		// If primitive
359
		boolean isEnum = false;
375
		boolean isEnum = false;
360
		boolean isComposite = false;
376
		boolean isComposite = false;
361
		boolean isPrimitive = false;
377
		boolean isPrimitive = false;
362
		if(datatypeDef instanceof EnumDefinition) {
378
		if(datatypeDef instanceof EnumDefinition) {
Line 419... Line 435...
419
			}
435
			}
420
			
436
			
421
			// Validate bullet value
437
			// Validate bullet value
422
			Utils.logger.info("bulletValue=" + bulletValue);
438
			Utils.logger.info("bulletValue=" + bulletValue);
423
			if(isPrimitive) {
439
			if(isPrimitive) {
424
				String dt = datatypeDef.getName();
-
 
425
				
-
 
426
				// integer
-
 
427
				if(dt.equals("integer")) {
-
 
428
					try {
-
 
429
						Integer.parseInt(bulletValue);
-
 
430
					}
-
 
431
					catch(NumberFormatException nfe) {
-
 
432
						Utils.logger.severe("Invalide integer value, " + crumb +
440
				if(!this.validatePrimitive(bulletValue, datatypeDef, crumb)) {
433
								" = " + bulletValue);
-
 
434
					}
-
 
435
				}
-
 
436
				
-
 
437
				// decimal
-
 
438
				else if(dt.endsWith("decimal")) {
-
 
439
					try {
441
					continue;
440
						Float.parseFloat(bulletValue);
-
 
441
					}
-
 
442
					catch(NumberFormatException nfe) {
-
 
443
						Utils.logger.severe("Invalide decimal value, " + crumb +
-
 
444
								" = " + bulletValue);
-
 
445
					}
-
 
446
				}
442
				}
447
				
443
				
448
				// string
-
 
449
				// any thing goes
444
				bullets.add(new Bullet(new PrimitiveDataObject(bulletValue)));
450
			}
445
			}
451
			
446
			
452
			// Enum and fixed
447
			// Enum and fixed
453
			else if(isEnum && !bulletDef.isLearned()) {
448
			else if(isEnum && !bulletDef.isLearned()) {
454
				long enumValueID = defs.getEnumValueID(datatypeDef.getID(), 
449
				long enumValueID = defs.getEnumValueID(datatypeDef.getID(), 
Line 459... Line 454...
459
							bulletValue);
454
							bulletValue);
460
					
455
					
461
					continue;
456
					continue;
462
				}
457
				}
463
				
458
				
464
				String key = slideDef.getLabel() + "_" + featureDef.getLabel() +
459
				EnumDataObject enumDataObject = new EnumDataObject(enumValueID);
465
					"_" + bulletValue;
-
 
466
				
-
 
467
				this.slideNameFeatureNameToEnumValueID.put(key, 
-
 
468
						new Long(enumValueID));
460
				bullets.add(new Bullet(enumDataObject));
469
			}
461
			}
470
			
462
			
471
			// Composite
463
			// Composite
472
			else if(isComposite) {
464
			else if(isComposite) {
-
 
465
				CompositeDefinition compositeDef = 
-
 
466
					(CompositeDefinition)datatypeDef;
-
 
467
				
-
 
468
				String separator = compositeDef.getSeparator();
-
 
469
				String[] compositeParts = 
-
 
470
					StringUtils.split(bulletValue, separator);
-
 
471
				
-
 
472
				List<CompositePartDefinition> compositePartDefs = 
-
 
473
					compositeDef.getCompositePartDefinitions();
-
 
474
				
-
 
475
				// Validate number of parts
-
 
476
				if(compositeParts.length != compositePartDefs.size()) {
-
 
477
					Utils.logger.severe("Invalid value, " + crumb + " = " + 
-
 
478
							bulletValue);
-
 
479
					
-
 
480
					continue;
-
 
481
				}
473
				
482
				
-
 
483
				// Remove spurious whitespaces
-
 
484
				boolean validPart = true;
-
 
485
				for(int j=0;j<compositeParts.length;j++) {
-
 
486
					compositeParts[j] = StringUtils.strip(compositeParts[j]);
-
 
487
					Utils.logger.info("compositeParts[j]=" + compositeParts[j]);
-
 
488
					
-
 
489
					// Validate each part
-
 
490
					// Each part can be enum or composite in itself
-
 
491
					// We will stick to primitive for now
-
 
492
					long partDatatypeDefID = 
-
 
493
						compositePartDefs.get(j).getDatatypeDefinitionID();
-
 
494
					
-
 
495
					DatatypeDefinition partDatatypeDef = 
-
 
496
						defs.getDatatypeDefinition(partDatatypeDefID);
-
 
497
					Utils.logger.info("partDatatypeDef=" + partDatatypeDef);
-
 
498
					
-
 
499
					if(!this.validatePrimitive(compositeParts[j], 
-
 
500
							partDatatypeDef, crumb)) {
-
 
501
						validPart = false;
-
 
502
						break;
-
 
503
					}
-
 
504
				}
-
 
505
				
-
 
506
				if(!validPart) {
-
 
507
					continue;
-
 
508
				}
-
 
509
 
-
 
510
				CompositeDataObject compositeDataObject = 
-
 
511
					new CompositeDataObject();
-
 
512
 
-
 
513
				for(int j=0;j<compositeParts.length;j++) {
-
 
514
					compositeDataObject.addPrimitiveDataObject(
-
 
515
							new PrimitiveDataObject(compositeParts[j]));
-
 
516
				}
-
 
517
				
-
 
518
				bullets.add(new Bullet(compositeDataObject));
-
 
519
			}
-
 
520
		}
-
 
521
		
-
 
522
		Utils.logger.info("slideNameFeatureNameToBullets=" + 
-
 
523
				this.slideNameFeatureNameToBullets);
-
 
524
	}
-
 
525
	
-
 
526
	/**
-
 
527
	 * 
-
 
528
	 * @param bulletValue
-
 
529
	 * @param datatypeDef
-
 
530
	 * @param crumb
-
 
531
	 */
-
 
532
	private boolean validatePrimitive(String bulletValue, 
-
 
533
			DatatypeDefinition datatypeDef, String crumb) {
-
 
534
		String dt = datatypeDef.getName();
-
 
535
		boolean valid = true;
-
 
536
		
-
 
537
		// integer
-
 
538
		if(dt.equals("integer")) {
-
 
539
			try {
-
 
540
				Integer.parseInt(bulletValue);
-
 
541
			}
-
 
542
			catch(NumberFormatException nfe) {
-
 
543
				Utils.logger.severe("Invalid integer value, " + crumb +
-
 
544
						" = " + bulletValue);
-
 
545
				valid = false;
-
 
546
			}
-
 
547
		}
-
 
548
		
-
 
549
		// decimal
-
 
550
		else if(dt.endsWith("decimal")) {
-
 
551
			try {
-
 
552
				Float.parseFloat(bulletValue);
-
 
553
			}
-
 
554
			catch(NumberFormatException nfe) {
-
 
555
				Utils.logger.severe("Invalid decimal value, " + crumb +
-
 
556
						" = " + bulletValue);
-
 
557
				valid = false;
474
			}
558
			}
475
		}
559
		}
476
		
560
		
477
		Utils.logger.info("slideNameFeatureNameToEnumValueID=" + 
-
 
478
				this.slideNameFeatureNameToEnumValueID);
561
		return valid;
479
	}
562
	}
480
	
563
	
-
 
564
	// string
-
 
565
	// any thing goes
481
	/**
566
	/**
482
	 * 
567
	 * 
483
	 * @param allLines
568
	 * @param allLines
484
	 * @param featureLabels
569
	 * @param featureLabels
485
	 * @return
570
	 * @return