Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
162 naveen 1
package in.shop2020.creation.controllers;
2
 
208 naveen 3
import in.shop2020.creation.util.CreationUtils;
201 naveen 4
import in.shop2020.metamodel.core.Bullet;
204 naveen 5
import in.shop2020.metamodel.core.CompositeDataObject;
162 naveen 6
import in.shop2020.metamodel.core.Entity;
204 naveen 7
import in.shop2020.metamodel.core.EnumDataObject;
201 naveen 8
import in.shop2020.metamodel.core.Feature;
198 naveen 9
import in.shop2020.metamodel.core.FreeformContent;
201 naveen 10
import in.shop2020.metamodel.core.PrimitiveDataObject;
198 naveen 11
import in.shop2020.metamodel.core.Slide;
12
import in.shop2020.metamodel.definitions.Category;
208 naveen 13
import in.shop2020.metamodel.definitions.CategorySlideDefinition;
204 naveen 14
import in.shop2020.metamodel.definitions.CompositeDefinition;
15
import in.shop2020.metamodel.definitions.CompositePartDefinition;
198 naveen 16
import in.shop2020.metamodel.definitions.DefinitionsContainer;
162 naveen 17
import in.shop2020.metamodel.definitions.EntityContainer;
201 naveen 18
import in.shop2020.metamodel.definitions.FeatureDefinition;
19
import in.shop2020.metamodel.definitions.SlideDefinition;
20
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
198 naveen 21
import in.shop2020.metamodel.util.ExpandedBullet;
201 naveen 22
import in.shop2020.metamodel.util.ExpandedBulletDefinition;
162 naveen 23
import in.shop2020.metamodel.util.ExpandedEntity;
201 naveen 24
import in.shop2020.metamodel.util.ExpandedFeature;
25
import in.shop2020.metamodel.util.ExpandedFeatureDefinition;
198 naveen 26
import in.shop2020.metamodel.util.ExpandedSlide;
27
import in.shop2020.metamodel.util.ExpandedSlideDefinition;
162 naveen 28
import in.shop2020.metamodel.util.SequenceGenerator;
29
import in.shop2020.util.DBUtils;
30
import in.shop2020.util.Utils;
31
 
208 naveen 32
import java.util.ArrayList;
33
import java.util.Arrays;
34
import java.util.Collection;
35
import java.util.HashMap;
36
import java.util.List;
37
import java.util.Map;
38
 
39
import org.apache.commons.lang.StringUtils;
162 naveen 40
import org.apache.juli.logging.Log;
41
import org.apache.juli.logging.LogFactory;
42
import org.apache.struts2.convention.annotation.Result;
43
import org.apache.struts2.convention.annotation.Results;
44
import org.apache.struts2.interceptor.ParameterAware;
208 naveen 45
import org.apache.struts2.rest.DefaultHttpHeaders;
46
import org.apache.struts2.rest.HttpHeaders;
162 naveen 47
 
48
@Results({
49
    @Result(name="success", type="redirectAction", 
198 naveen 50
    		params = {"actionName" , "entity"}),
51
    @Result(name="redirect", location="${url}", type="redirect")
162 naveen 52
})
53
public class EntityController implements ParameterAware {
54
 
55
	/**
56
	 * 
57
	 */
58
	private static Log log = LogFactory.getLog(EntityController.class);
59
 
60
	/**
61
	 * 
62
	 */
63
	private String id;
64
 
65
	private ExpandedEntity expEntity;
66
 
67
	private Collection<Entity> entities;
68
 
69
	private Map<String, String[]> reqparams;
70
 
198 naveen 71
	private EntityContainer ents;
72
 
73
	private DefinitionsContainer defs;
74
 
75
	private long firstSlideID;
76
 
77
	private ExpandedSlideDefinition expSlideDef;
78
 
79
	private ExpandedSlide expSlide;
80
 
81
	private String redirectURL;
82
 
83
	private Exception exception;
84
 
85
	private String errorString;
86
 
87
	private long newCurrentSlideDefinitionID;
88
 
89
	private long newNextSlideDefinitionID;
90
 
91
	private long newPrevSlideDefinitionID;
92
 
93
 
162 naveen 94
    // GET /entity
95
    public HttpHeaders index() {
96
    	log.info("EntityController.index");
97
 
98
    	EntityContainer ents = new EntityContainer();
99
 
100
    	try {
101
			this.entities = ents.getEntities().values();
102
		} catch (Exception e) {
208 naveen 103
			log.error(CreationUtils.getStackTrace(e));
104
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 105
			return new DefaultHttpHeaders("fatal");
162 naveen 106
		}
107
 
208 naveen 108
        return new DefaultHttpHeaders("index").disableCaching();
162 naveen 109
    }
110
 
111
    // GET /entity
112
    public String create() {
113
    	log.info("EntityController.create");
114
 
115
		SequenceGenerator sg;
116
		try {
117
			sg = SequenceGenerator.getInstance();
118
			long entityID = sg.getNextSequence(SequenceGenerator.ENTITY);
119
 
120
			String categoryID = this.reqparams.get("category")[0];
121
			Entity entity = new Entity(entityID, Long.parseLong(categoryID));
122
 
123
			entity.setBrand(this.reqparams.get("brand")[0]);
124
			entity.setModelName(this.reqparams.get("modelname")[0]);
125
			entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
126
 
198 naveen 127
			this.addEntity(entity);
162 naveen 128
 
129
	    	this.setId(new Long(entityID).toString());
130
		} catch (Exception e) {
208 naveen 131
			log.error(CreationUtils.getStackTrace(e));
132
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 133
			return "fatal";
162 naveen 134
		}
198 naveen 135
 
136
		this.redirectURL = "entity/" + this.getId() + "/edit";
162 naveen 137
 
198 naveen 138
		return "redirect";
162 naveen 139
    }
140
 
141
    // GET /entity/1/edit
142
    public String edit() {
143
    	log.info("EntityController.edit");
144
 
145
    	long entityID = Long.parseLong(this.getId());
146
    	log.info("entityID:" + entityID);
147
 
198 naveen 148
    	EntityContainer ents = this.getEntityContainer();
149
    	DefinitionsContainer defs = this.getDefinitionsContainer();
162 naveen 150
 
151
    	try {
152
			this.expEntity = ents.getExpandedEntity(entityID);
198 naveen 153
			//log.info("this.expEntity:" + this.expEntity);
154
 
155
			long catID = this.expEntity.getCategoryID();
156
			List<Long> slideIDs = defs.getCategorySlideSequence(catID);
157
 
158
			this.firstSlideID = slideIDs.get(0);
159
 
162 naveen 160
		} catch (Exception e) {
208 naveen 161
			log.error(CreationUtils.getStackTrace(e));
162
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 163
			return "fatal";
162 naveen 164
		}
165
 
166
        return "edit";
167
    }
198 naveen 168
 
169
 
170
    public String getUrl() {
171
    	return this.redirectURL;
172
    }
162 naveen 173
 
174
    // GET /entity/new
175
    public String editNew() {
176
    	log.info("EntityController.editNew");
177
 
178
        return "editNew";
179
    }
180
 
181
    // GET /entity/1
182
    public String update() {
183
    	log.info("EntityController.update");
184
 
198 naveen 185
    	long entityID = Long.parseLong(this.getId());
186
    	log.info("entityID:" + entityID);
187
 
188
    	EntityContainer ents = this.getEntityContainer();
189
    	DefinitionsContainer defs = this.getDefinitionsContainer();
190
 
191
    	try {
192
			this.expEntity = ents.getExpandedEntity(entityID);
193
			//log.info("this.expEntity:" + this.expEntity);
194
 
195
			long currentSlideID = 0L;
196
			long nextSlideID = 0L;
197
			long prevSlideID = 0L;
198
 
199
			String[] currentslideIDStrings = 
200
				this.reqparams.get("currentslideID");
201
 
202
			String[] nextslideIDStrings = this.reqparams.get("nextslideID");
203
 
204
			String[] prevslideIDStrings = this.reqparams.get("prevslideID");
205
 
206
			// Current Slide ID
207
			if(currentslideIDStrings != null && 
208
					currentslideIDStrings.length > 0) {
209
				try {
210
					currentSlideID = Long.parseLong(currentslideIDStrings[0]);
211
				}
212
				catch (NumberFormatException nfe) {}
213
			}
214
 
215
			// Next Slide ID
216
			if(nextslideIDStrings != null && 
217
					nextslideIDStrings.length > 0) {
218
				try {
219
					nextSlideID = Long.parseLong(nextslideIDStrings[0]);
220
				}
221
				catch (NumberFormatException nfe) {}
222
			}
223
 
224
			// Prev Slide ID
225
			if(prevslideIDStrings != null && 
226
					prevslideIDStrings.length > 0) {
227
				try {
228
					prevSlideID = Long.parseLong(prevslideIDStrings[0]);
229
				}
230
				catch (NumberFormatException nfe) {}
231
			}
232
			log.info("currentSlideID:" + currentSlideID);
233
			log.info("nextSlideID:" + nextSlideID);
234
			log.info("prevSlideID:" + prevSlideID);
235
 
236
			// Save on basic info page
237
			if (this.reqparams.containsKey("save") && currentSlideID == 0L) {
238
				log.info("Save");
239
 
240
				Entity entity = this.expEntity.getEntity();
241
 
242
				String categoryID = this.reqparams.get("category")[0];
243
 
244
				entity.setCategoryID(Long.parseLong(categoryID));
245
				entity.setBrand(this.reqparams.get("brand")[0]);
246
				entity.setModelName(this.reqparams.get("modelname")[0]);
247
				entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
248
 
249
				this.updateEntity(entity);
250
 
251
				return "success";
252
			}
253
 
254
			long catID = this.expEntity.getCategoryID();
255
			List<Long> slideIDs = defs.getCategorySlideSequence(catID);
256
			log.info("slideIDs:"+slideIDs);
257
 
208 naveen 258
			boolean skip = false;
259
			if(this.reqparams.containsKey("skipprev") || 
260
					this.reqparams.containsKey("skipnext")) {
261
				skip = true;
262
			}
263
 
264
			boolean next = this.reqparams.containsKey("skipnext") || 
265
				this.reqparams.containsKey("next");
266
 
267
			boolean prev = this.reqparams.containsKey("skipprev") || 
268
			this.reqparams.containsKey("prev");
269
 
270
 
198 naveen 271
			// Save or Next or Prev - When editing a slide
272
			int currentSlideIndex = 0;
208 naveen 273
			currentSlideIndex = slideIDs.indexOf(new Long(currentSlideID));
274
			log.info("currentSlideIndex:" + currentSlideIndex);
198 naveen 275
 
208 naveen 276
			if(!skip && currentSlideID != 0L) {
198 naveen 277
				Entity entity = this.expEntity.getEntity();
278
 
279
				// Update Entity Record
280
				Slide currentSlide = entity.getSlide(currentSlideID);
281
 
282
				// Slide free-form content
201 naveen 283
				FreeformContent slideFFC = this.getFreeformContent("slide");
198 naveen 284
				log.info("slideFFC:" + slideFFC);
285
 
286
				currentSlide.setFreeformContent(slideFFC);
287
				//log.info("currentSlide:" + currentSlide);
288
 
201 naveen 289
				// Collect Feature bullets
290
				List<Feature> features = this.createFeatures(currentSlide);
291
				log.info("features:" + features);
292
 
293
				currentSlide.setFeatures(features);
294
 
198 naveen 295
				// Store
296
				this.updateEntity(entity);
297
				//log.info("entity:" + entity);
298
			}
299
 
300
			boolean showAnotherSlide = false;
301
 
302
			// -2 : Not set
303
			// -1 : Not found
304
			int newCurrentIndex = -2;  
305
			int newNextIndex = -2;
306
			int newPrevIndex = -2;
307
 
308
			// Next
208 naveen 309
			if(next && nextSlideID != 0L) {
198 naveen 310
				log.info("Next");
311
 
312
				// Decide on next slide ID
313
				int nextSlideIndex = slideIDs.indexOf(new Long(nextSlideID));
314
				log.info("nextSlideIndex:"+nextSlideIndex);
315
 
316
				// New Current
317
				if (nextSlideIndex == -1) {
318
					this.setErrorString("Invalid Next slide ID " + nextSlideID);
319
					return "fatal";
320
				}
321
 
322
				newCurrentIndex = nextSlideIndex;
323
 
324
				// New Next
325
				if (newCurrentIndex != slideIDs.size()-1) {
326
					newNextIndex = newCurrentIndex + 1;
327
				}
328
 
329
				// New Prev.
330
				if(currentSlideID != 0L) {
331
					newPrevIndex = currentSlideIndex;
332
				}
333
 
334
				showAnotherSlide = true;
335
			}
336
 
337
			// Prev
208 naveen 338
			if(prev && prevSlideID != 0L) {
198 naveen 339
				log.info("Prev");
340
 
341
				// Decide on prev slide ID
342
				int prevSlideIndex = slideIDs.indexOf(new Long(prevSlideID));
343
				log.info("prevSlideIndex:" + prevSlideIndex);
344
 
345
				if (prevSlideIndex == -1) {
346
					this.setErrorString("Invalid Prev slide ID " + prevSlideID);
347
					return "fatal";
348
				}
349
 
350
				// New Next
351
				if(currentSlideID != 0L) {
352
					newNextIndex = currentSlideIndex;
353
				}
354
 
355
				// New Current
356
				newCurrentIndex = prevSlideIndex;
357
 
358
				// New Prev.
359
				if (newCurrentIndex != 0) {
360
					newPrevIndex = newCurrentIndex - 1;
361
				}
362
 
363
				showAnotherSlide = true;
364
			}
365
 
366
			if(showAnotherSlide) {
367
 				log.info("newCurrentIndex:"+newCurrentIndex);
368
				log.info("newNextIndex:"+newNextIndex);
369
				log.info("newPrevIndex:"+newPrevIndex);
370
 
371
				if(newCurrentIndex != -2) {
372
					this.setNewCurrentSlideDefinitionID(
373
							slideIDs.get(newCurrentIndex).longValue());
374
				}
375
 
376
				if(newNextIndex != -2) {
377
					this.setNewNextSlideDefinitionID(
378
							slideIDs.get(newNextIndex).longValue());
379
				}
380
 
381
				if(newPrevIndex != -2) {
382
					this.setNewPrevSlideDefinitionID(
383
							slideIDs.get(newPrevIndex).longValue());
384
				}
385
 
386
				// Current Slide Definition
387
				this.expSlideDef = defs.getExpandedSlideDefinition(
388
						this.getNewCurrentSlideDefinitionID());
389
 
390
				// Current Slide Instance
391
				this.expSlide = this.expEntity.getExpandedSlide(
392
						this.getNewCurrentSlideDefinitionID());
204 naveen 393
				//log.info("this.expSlide:" + this.expSlide);
198 naveen 394
 
395
				return "editSlide";
396
			}
397
		}
398
    	catch (Exception e) {
208 naveen 399
			log.error(CreationUtils.getStackTrace(e));
400
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 401
			return "fatal";
402
    	}
403
 
404
        return "success";
162 naveen 405
    }
406
 
407
    /**
201 naveen 408
     * 
409
     * @param slide
410
     * @return
411
     * @throws Exception
412
     */
413
    private List<Feature> createFeatures(Slide slide) throws Exception {
414
 
415
		long slideDefID = slide.getSlideDefinitionID();
416
		SlideDefinition slideDef = defs.getSlideDefinition(slideDefID);
417
 
418
		List<SlideFeatureDefinition> slideFeatureDefs = 
419
			slideDef.getSlideFeatureDefinitions();
420
 
421
		DefinitionsContainer defs = this.getDefinitionsContainer();
422
 
423
		List<Feature> features = new ArrayList<Feature>();	
424
		for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
425
			long featureDefinitionID = slideFeatureDef.getFeatureDefintionID();
204 naveen 426
			log.info("featureDefinitionID:"+featureDefinitionID);
427
 
201 naveen 428
			String featureDefIDString = 
429
				new Long(featureDefinitionID).toString();
430
 
431
			Feature feature = new Feature(featureDefinitionID);
432
 
433
			// Bullets
434
			List<Bullet> bullets = new ArrayList<Bullet>();
435
			FeatureDefinition featureDef = defs.getFeatureDefinition(
436
					featureDefinitionID);
204 naveen 437
			log.info("featureDef:" + featureDef);
201 naveen 438
 
439
			ExpandedFeatureDefinition expFeatureDef = 
440
				new ExpandedFeatureDefinition(featureDef);
441
 
442
			ExpandedBulletDefinition expBulletDef = 
443
				expFeatureDef.getExpandedBulletDefinition();
444
 
206 naveen 445
			// Collect unit
446
			String[] unitIDs = this.reqparams.get(featureDefIDString + "_unit");
447
			long unitID = 0L;
448
			if(unitIDs != null && unitIDs.length > 0) {
449
				unitID = Long.parseLong(unitIDs[0]);
450
			}
451
 
201 naveen 452
			// Composite
453
			if(expBulletDef.isComposite()) {
204 naveen 454
				log.info("Composite");
201 naveen 455
 
204 naveen 456
				CompositeDataObject compositeDataObject = 
457
					new CompositeDataObject();
458
 
459
				CompositeDefinition compositeDef = 
460
					(CompositeDefinition)expBulletDef.getDatatypeDefinition(); 
461
 
462
				List<CompositePartDefinition> compositeParts = 
463
					compositeDef.getCompositePartDefinitions();
464
 
465
				for(int j=0;j<compositeParts.size();j++) {
466
					String[] partValues = this.reqparams.get(
208 naveen 467
							featureDefIDString + "_" + (j + 1));
204 naveen 468
 
469
					if(partValues != null && partValues.length > 0) {
470
						compositeDataObject.addPrimitiveDataObject(
471
							new PrimitiveDataObject(partValues[0]));
472
					}
473
				}
474
 
475
				Bullet bullet = new Bullet(compositeDataObject);
476
 
206 naveen 477
				if(unitID != 0L) {
478
					bullet.setUnitID(unitID);
479
				}
480
 
204 naveen 481
				bullets.add(bullet);
201 naveen 482
			}
483
 
484
			// Enumerated
485
			else if(expBulletDef.isEnumerated()) {
204 naveen 486
				log.info("Enumerated");
487
 
488
				String[] bulletValues = this.reqparams.get(featureDefIDString);
489
				if(bulletValues == null || bulletValues.length == 0) {
490
					continue;
491
				}
201 naveen 492
 
204 naveen 493
				log.info("bulletValues:" + Arrays.toString(bulletValues));
206 naveen 494
 
204 naveen 495
 
206 naveen 496
				for(int i=0;i<bulletValues.length;i++) {
497
					EnumDataObject enumDataObject = 
498
						new EnumDataObject(Long.parseLong(bulletValues[i]));
499
 
500
					Bullet bullet = new Bullet(enumDataObject);
501
 
502
					if(unitID != 0L) {
503
						bullet.setUnitID(unitID);
504
					}
505
 
506
					bullets.add(bullet);
507
				}
201 naveen 508
			}
509
 
510
			// Primitive
511
			else {
204 naveen 512
				log.info("Primitive");
513
 
514
				String[] bulletValues = this.reqparams.get(featureDefIDString);
515
				if(bulletValues == null || bulletValues.length == 0) {
516
					continue;
517
				}
518
 
519
				log.info("bulletValues:" + Arrays.toString(bulletValues));
520
 
206 naveen 521
				for(int i=0;i<bulletValues.length;i++) {
522
					Bullet bullet = new Bullet(
523
							new PrimitiveDataObject(bulletValues[i]));
524
 
525
					if(unitID != 0L) {
526
						bullet.setUnitID(unitID);
527
					}
528
 
529
					bullets.add(bullet);
530
				}
201 naveen 531
			}
532
 
533
			feature.setBullets(bullets);
534
 
535
			// FFC
536
			FreeformContent featureFFC = 
537
				this.getFreeformContent(featureDefIDString);
538
 
539
			feature.setFreeformContent(featureFFC);
540
 
541
			features.add(feature);
542
		}
543
 
544
		return features;
545
	}
546
 
547
	/**
548
     * 
549
     * @param ID
550
     * @return
551
     */
552
    private FreeformContent getFreeformContent(String ID) {
553
		FreeformContent ffc = new FreeformContent();
554
		String[] ffts = this.reqparams.get(ID + "_fft");
555
		if(ffts != null) {
556
			ffc.setFreeformTexts(Arrays.asList(ffts));
557
		}
558
 
210 naveen 559
		String[] imgRefs = this.reqparams.get(ID + "_image_references");
560
		if(imgRefs != null) {
561
			ffc.setMedia("image", Arrays.asList(imgRefs));
201 naveen 562
		}
563
 
210 naveen 564
		String[] youtubeRefs = 
565
			this.reqparams.get(ID + "_youtube_references");
566
		if(youtubeRefs != null) {
567
			ffc.setMedia("youtube", Arrays.asList(youtubeRefs));
201 naveen 568
		}
569
 
570
		log.info("ffc:" + ffc);
571
		return ffc;
572
	}
573
 
574
	/**
162 naveen 575
	 * @return the entities
576
	 */
577
	public Collection<Entity> getEntities() {
578
		return entities;
579
	}
580
 
581
    /**
582
	 * @return the entities
583
	 */
584
	public ExpandedEntity getEntity() {
585
		return expEntity;
586
	}
587
 
198 naveen 588
    /**
589
	 * @return the current slide to edit
590
	 */
591
	public ExpandedSlideDefinition getExpandedSlideDefinition() {
592
		return expSlideDef;
593
	}
162 naveen 594
 
595
	/**
596
     * 
597
     * @param id
598
     */
599
    public void setId(String id) {
600
        this.id = id;
601
    }
602
 
603
    /**
604
     * 
605
     */
606
    public String getId() {
607
    	return this.id;
608
    }
609
 
198 naveen 610
	/**
611
	 * @return the firstSlideID
612
	 */
613
	public long getFirstSlideID() {
614
		return firstSlideID;
615
	}
616
 
162 naveen 617
	@Override
618
	public void setParameters(Map<String, String[]> reqmap) {
619
		log.info("setParameters:" + reqmap);
620
 
621
		this.reqparams = reqmap;
622
	}
623
 
198 naveen 624
	public Map<String, String> getCategories() throws Exception {
625
		DefinitionsContainer defs = this.getDefinitionsContainer();
626
		Map<String, String> cats = new HashMap<String, String>();
627
 
628
		List<Category> children = defs.getChildrenCategories(10001L);
629
		for(Category child : children) {
630
			cats.put(new Long(child.getID()).toString(), child.getLabel());
631
		}
632
 
633
		return cats;
634
	}
635
 
636
	public String getBrandString() throws Exception {
637
		List<String> brands = this.getBrands();
638
		return "\"" + StringUtils.join(brands, "\", \"") + "\"";
639
	}
640
 
641
	public List<String> getBrands() throws Exception {
642
		EntityContainer ents = this.getEntityContainer();
643
		List<String> brands = new ArrayList<String>();
644
 
645
		List<ExpandedBullet> expBullets;
646
 
647
		expBullets = ents.getLearnedBullets(
648
				Utils.BRAND_FEATURE_DEFINITION_ID);
649
 
650
		for(ExpandedBullet expBullet : expBullets) {
651
			brands.add(expBullet.getValue());
652
		}
653
 
654
		return brands;
655
	}
656
 
657
    private EntityContainer getEntityContainer() {
658
    	if(this.ents == null) {
659
    		this.ents = new EntityContainer();
660
    	}
661
 
662
	    return this.ents;
663
    }
664
 
665
    private DefinitionsContainer getDefinitionsContainer() {
666
    	if(this.defs == null) {
667
    		this.defs = new DefinitionsContainer();
668
    	}
669
 
670
	    return this.defs;
671
    }
672
 
673
    /**
674
     * 
675
     * @param entity
676
     * @throws Exception
677
     */
678
	private void addEntity(Entity entity) throws Exception {			
679
		EntityContainer entContainer = new EntityContainer();
680
 
681
		entContainer.addEntity(entity);
682
 
683
		DBUtils.store(entContainer.getEntities(), Utils.ENTITIES_DB_PATH + 
684
				"entities" + ".ser");
685
 
686
		String entitiesbycategoryDBFile = Utils.ENTITIES_DB_PATH + 
687
			"entitiesbycategory" + ".ser";
688
 
689
		DBUtils.store(entContainer.getEntitiesbyCategory(), 
690
				entitiesbycategoryDBFile);
691
	}
692
 
693
    /**
694
     * 
695
     * @param entity
696
     * @throws Exception
697
     */
698
	private void updateEntity(Entity entity) throws Exception {			
699
		EntityContainer entContainer = new EntityContainer();
700
 
701
		entContainer.updateEntity(entity);
702
 
703
		DBUtils.store(entContainer.getEntities(), Utils.ENTITIES_DB_PATH + 
704
				"entities" + ".ser");
705
 
706
		String entitiesbycategoryDBFile = Utils.ENTITIES_DB_PATH + 
707
			"entitiesbycategory" + ".ser";
708
 
709
		DBUtils.store(entContainer.getEntitiesbyCategory(), 
710
				entitiesbycategoryDBFile);
711
	}
712
 
162 naveen 713
	/**
198 naveen 714
	 * @param exception the exception to set
715
	 */
716
	public void setException(Exception exception) {
717
		this.exception = exception;
718
	}
719
 
720
	/**
721
	 * @return the exception
722
	 */
723
	public Exception getException() {
724
		return exception;
725
	}
726
 
727
	/**
728
	 * @param errorString the exceptionString to set
729
	 */
730
	public void setErrorString(String errorString) {
731
		this.errorString = errorString;
732
	}
733
 
734
	/**
735
	 * @return the exceptionString
736
	 */
737
	public String getErrorString() {
738
		return errorString;
739
	}
740
 
741
	/**
742
	 * @param newCurrentSlideID the newCurrentSlideID to set
743
	 */
744
	public void setNewCurrentSlideDefinitionID(
745
			long newCurrentSlideDefinitionID) {
746
		this.newCurrentSlideDefinitionID = newCurrentSlideDefinitionID;
747
	}
748
 
749
	/**
750
	 * @return the newCurrentSlideID
751
	 */
752
	public long getNewCurrentSlideDefinitionID() {
753
		return newCurrentSlideDefinitionID;
754
	}
755
 
756
	/**
757
	 * @param newNextSlideID the newNextSlideID to set
758
	 */
759
	public void setNewNextSlideDefinitionID(long newNextSlideDefinitionID) {
760
		this.newNextSlideDefinitionID = newNextSlideDefinitionID;
761
	}
762
 
763
	/**
764
	 * @return the newNextSlideID
765
	 */
766
	public long getNewNextSlideDefinitionID() {
767
		return newNextSlideDefinitionID;
768
	}
769
 
770
	/**
771
	 * @param expSlide the expSlide to set
772
	 */
773
	public void setExpandedSlide(ExpandedSlide expSlide) {
774
		this.expSlide = expSlide;
775
	}
776
 
777
	/**
778
	 * @return the expSlide
779
	 */
780
	public ExpandedSlide getExpandedSlide() {
781
		return expSlide;
782
	}
783
 
784
	/**
785
	 * @param newPrevSlideDefinitionID the newPrevSlideDefinitionID to set
786
	 */
787
	public void setNewPrevSlideDefinitionID(long newPrevSlideDefinitionID) {
788
		this.newPrevSlideDefinitionID = newPrevSlideDefinitionID;
789
	}
790
 
791
	/**
792
	 * @return the newPrevSlideDefinitionID
793
	 */
794
	public long getNewPrevSlideDefinitionID() {
795
		return newPrevSlideDefinitionID;
796
	}
797
 
798
	/**
162 naveen 799
	 * 
200 naveen 800
	 * @param featureDefinitionID
801
	 * @return
802
	 * @throws Exception
803
	 */
804
	public String getLearnedValuesString(long featureDefinitionID) 
805
			throws Exception {
206 naveen 806
		List<String> learnedValues = this.getLearnedValues(featureDefinitionID);
807
		if(learnedValues == null) {
808
			return "";
809
		}
810
 
811
		return "\"" + StringUtils.join(learnedValues, "\", \"") + "\"";
812
	}
813
 
814
	/**
815
	 * 
816
	 * @param featureDefinitionID
817
	 * @return
818
	 * @throws Exception
819
	 */
820
	public List<String> getLearnedValues(long featureDefinitionID) 
821
			throws Exception {
200 naveen 822
		EntityContainer ents = this.getEntityContainer();
823
		List<ExpandedBullet> learnedBullets = 
824
			ents.getLearnedBullets(featureDefinitionID);
825
 
201 naveen 826
		if(learnedBullets == null) {
206 naveen 827
			return null;
201 naveen 828
		}
829
 
200 naveen 830
		List<String> learnedValues = new ArrayList<String>();
831
		for(ExpandedBullet expBullet : learnedBullets) {
832
			learnedValues.add(expBullet.getValue());
833
		}
834
 
206 naveen 835
		return learnedValues;
200 naveen 836
	}
837
 
838
	/**
839
	 * 
201 naveen 840
	 * @param featureDefinitionID
841
	 * @return
842
	 * @throws Exception
843
	 */
844
	public ExpandedFeature getFeature(long featureDefinitionID) 
845
		throws Exception {
846
		EntityContainer ents = this.getEntityContainer();
847
 
848
		Feature feature = ents.getFeature(this.expSlide, featureDefinitionID);
849
		if(feature == null) {
850
			return null;
851
		}
852
 
853
		return new ExpandedFeature(feature);
854
	}
855
 
856
	/**
857
	 * 
162 naveen 858
	 * @return
859
	 */
208 naveen 860
	public String getEditorialImportance() {
861
		long catID = this.expEntity.getCategoryID();
862
		long slideDefID = this.getNewCurrentSlideDefinitionID();
863
 
864
		try {
865
			List<CategorySlideDefinition> catSlideDefs =
866
				defs.getCategorySlideDefinitions(catID);
867
			for(CategorySlideDefinition catSlideDef : catSlideDefs) {
868
				if(catSlideDef.getSlideDefintionID() == slideDefID) {
869
					return catSlideDef.getEditorialImportance().toString();
870
				}
871
			}
872
		} catch (Exception e) {
873
			log.error(CreationUtils.getStackTrace(e));
874
    	}
875
 
876
		return "";
162 naveen 877
	}
210 naveen 878
 
879
	/**
880
	 * 
881
	 * @return
882
	 * @throws Exception 
883
	 * @throws NumberFormatException 
884
	 */
885
	public List<String> getMediaLabels(String type) {
886
		try {
887
			return CreationUtils.getMediaLabels(Long.parseLong(this.getId()), 
888
					type);
889
		}
890
		catch(Exception nfe) {
891
			return null;
892
		}
893
	}
162 naveen 894
}