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
 
213 naveen 75
	private long firstSlideDefID;
198 naveen 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();
213 naveen 156
			List<Long> slideDefIDs = defs.getCategorySlideSequence(catID);
198 naveen 157
 
213 naveen 158
			this.firstSlideDefID = slideDefIDs.get(0);
198 naveen 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
 
213 naveen 195
			long currentSlideDefID = 0L;
196
			long nextSlideDefID = 0L;
197
			long prevSlideDefID = 0L;
198 naveen 198
 
213 naveen 199
			String[] currentslideDefIDStrings = 
200
				this.reqparams.get("currentslideDefID");
198 naveen 201
 
213 naveen 202
			String[] nextslideDefIDStrings = 
203
				this.reqparams.get("nextslideDefID");
198 naveen 204
 
213 naveen 205
			String[] prevslideDefIDStrings = 
206
				this.reqparams.get("prevslideDefID");
198 naveen 207
 
208
			// Current Slide ID
213 naveen 209
			if(currentslideDefIDStrings != null && 
210
					currentslideDefIDStrings.length > 0) {
198 naveen 211
				try {
213 naveen 212
					currentSlideDefID = Long.parseLong(
213
							currentslideDefIDStrings[0]);
198 naveen 214
				}
215
				catch (NumberFormatException nfe) {}
216
			}
217
 
218
			// Next Slide ID
213 naveen 219
			if(nextslideDefIDStrings != null && 
220
					nextslideDefIDStrings.length > 0) {
198 naveen 221
				try {
213 naveen 222
					nextSlideDefID = Long.parseLong(nextslideDefIDStrings[0]);
198 naveen 223
				}
224
				catch (NumberFormatException nfe) {}
225
			}
226
 
227
			// Prev Slide ID
213 naveen 228
			if(prevslideDefIDStrings != null && 
229
					prevslideDefIDStrings.length > 0) {
198 naveen 230
				try {
213 naveen 231
					prevSlideDefID = Long.parseLong(prevslideDefIDStrings[0]);
198 naveen 232
				}
233
				catch (NumberFormatException nfe) {}
234
			}
213 naveen 235
			log.info("currentSlideDefID:" + currentSlideDefID);
236
			log.info("nextSlideDefID:" + nextSlideDefID);
237
			log.info("prevSlideDefID:" + prevSlideDefID);
198 naveen 238
 
239
			// Save on basic info page
213 naveen 240
			if (this.reqparams.containsKey("save") && currentSlideDefID == 0L) {
198 naveen 241
				log.info("Save");
242
 
243
				Entity entity = this.expEntity.getEntity();
244
 
245
				String categoryID = this.reqparams.get("category")[0];
246
 
247
				entity.setCategoryID(Long.parseLong(categoryID));
248
				entity.setBrand(this.reqparams.get("brand")[0]);
249
				entity.setModelName(this.reqparams.get("modelname")[0]);
250
				entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
251
 
252
				this.updateEntity(entity);
253
 
254
				return "success";
255
			}
256
 
257
			long catID = this.expEntity.getCategoryID();
258
			List<Long> slideIDs = defs.getCategorySlideSequence(catID);
259
			log.info("slideIDs:"+slideIDs);
260
 
208 naveen 261
			boolean skip = false;
262
			if(this.reqparams.containsKey("skipprev") || 
263
					this.reqparams.containsKey("skipnext")) {
264
				skip = true;
265
			}
266
 
267
			boolean next = this.reqparams.containsKey("skipnext") || 
268
				this.reqparams.containsKey("next");
269
 
270
			boolean prev = this.reqparams.containsKey("skipprev") || 
271
			this.reqparams.containsKey("prev");
272
 
273
 
198 naveen 274
			// Save or Next or Prev - When editing a slide
275
			int currentSlideIndex = 0;
213 naveen 276
			currentSlideIndex = slideIDs.indexOf(new Long(currentSlideDefID));
208 naveen 277
			log.info("currentSlideIndex:" + currentSlideIndex);
198 naveen 278
 
213 naveen 279
			if(!skip && currentSlideDefID != 0L) {
198 naveen 280
				Entity entity = this.expEntity.getEntity();
281
 
213 naveen 282
				// Create new instance and override existing
283
				Slide currentSlide = this.createSlide(currentSlideDefID);
198 naveen 284
 
213 naveen 285
				entity.addSlide(currentSlide);
198 naveen 286
 
287
				// Store
288
				this.updateEntity(entity);
289
				//log.info("entity:" + entity);
290
			}
291
 
292
			boolean showAnotherSlide = false;
293
 
294
			// -2 : Not set
295
			// -1 : Not found
296
			int newCurrentIndex = -2;  
297
			int newNextIndex = -2;
298
			int newPrevIndex = -2;
299
 
300
			// Next
213 naveen 301
			if(next && nextSlideDefID != 0L) {
198 naveen 302
				log.info("Next");
303
 
304
				// Decide on next slide ID
213 naveen 305
				int nextSlideIndex = slideIDs.indexOf(new Long(nextSlideDefID));
198 naveen 306
				log.info("nextSlideIndex:"+nextSlideIndex);
307
 
308
				// New Current
309
				if (nextSlideIndex == -1) {
213 naveen 310
					this.setErrorString("Invalid Next slide ID " + 
311
							nextSlideDefID);
198 naveen 312
					return "fatal";
313
				}
314
 
315
				newCurrentIndex = nextSlideIndex;
316
 
317
				// New Next
318
				if (newCurrentIndex != slideIDs.size()-1) {
319
					newNextIndex = newCurrentIndex + 1;
320
				}
321
 
322
				// New Prev.
213 naveen 323
				if(currentSlideDefID != 0L) {
198 naveen 324
					newPrevIndex = currentSlideIndex;
325
				}
326
 
327
				showAnotherSlide = true;
328
			}
329
 
330
			// Prev
213 naveen 331
			if(prev && prevSlideDefID != 0L) {
198 naveen 332
				log.info("Prev");
333
 
334
				// Decide on prev slide ID
213 naveen 335
				int prevSlideIndex = slideIDs.indexOf(new Long(prevSlideDefID));
198 naveen 336
				log.info("prevSlideIndex:" + prevSlideIndex);
337
 
338
				if (prevSlideIndex == -1) {
213 naveen 339
					this.setErrorString("Invalid Prev slide ID " + 
340
							prevSlideDefID);
198 naveen 341
					return "fatal";
342
				}
343
 
344
				// New Next
213 naveen 345
				if(currentSlideDefID != 0L) {
198 naveen 346
					newNextIndex = currentSlideIndex;
347
				}
348
 
349
				// New Current
350
				newCurrentIndex = prevSlideIndex;
351
 
352
				// New Prev.
353
				if (newCurrentIndex != 0) {
354
					newPrevIndex = newCurrentIndex - 1;
355
				}
356
 
357
				showAnotherSlide = true;
358
			}
359
 
360
			if(showAnotherSlide) {
213 naveen 361
 				log.info("newCurrentIndex:" + newCurrentIndex);
362
				log.info("newNextIndex:" + newNextIndex);
363
				log.info("newPrevIndex:" + newPrevIndex);
198 naveen 364
 
365
				if(newCurrentIndex != -2) {
366
					this.setNewCurrentSlideDefinitionID(
367
							slideIDs.get(newCurrentIndex).longValue());
368
				}
369
 
370
				if(newNextIndex != -2) {
371
					this.setNewNextSlideDefinitionID(
372
							slideIDs.get(newNextIndex).longValue());
373
				}
374
 
375
				if(newPrevIndex != -2) {
376
					this.setNewPrevSlideDefinitionID(
377
							slideIDs.get(newPrevIndex).longValue());
378
				}
379
 
380
				// Current Slide Definition
381
				this.expSlideDef = defs.getExpandedSlideDefinition(
382
						this.getNewCurrentSlideDefinitionID());
383
 
384
				// Current Slide Instance
385
				this.expSlide = this.expEntity.getExpandedSlide(
386
						this.getNewCurrentSlideDefinitionID());
204 naveen 387
				//log.info("this.expSlide:" + this.expSlide);
198 naveen 388
 
389
				return "editSlide";
390
			}
391
		}
392
    	catch (Exception e) {
208 naveen 393
			log.error(CreationUtils.getStackTrace(e));
394
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 395
			return "fatal";
396
    	}
397
 
398
        return "success";
162 naveen 399
    }
213 naveen 400
 
162 naveen 401
    /**
201 naveen 402
     * 
213 naveen 403
     * @param slideDefID
404
     * @return
405
     * @throws Exception
406
     */
407
    private Slide createSlide(long slideDefID) throws Exception {
408
		Slide slide = new Slide(slideDefID);
409
 
410
		// Slide free-form content
411
		FreeformContent slideFFC = this.getFreeformContent(
412
				"slide_" + slideDefID);
413
 
414
		log.info("slideFFC:" + slideFFC);
415
 
416
		slide.setFreeformContent(slideFFC);
417
		//log.info("currentSlide:" + currentSlide);
418
 
419
		// Collect Feature bullets
420
		List<Feature> features = this.createFeatures(slide);
421
		log.info("features:" + features);
422
 
423
		slide.setFeatures(features);
424
 
425
		// Collect children slides
426
		SlideDefinition slideDef = 
427
			this.getDefinitionsContainer().getSlideDefinition(slideDefID);
428
 
429
		List<Long> childrenSlideIDs = slideDef.getChildrenSlideDefinitionIDs();
430
		if(childrenSlideIDs != null) {
431
			List<Slide> childrenSlides = new ArrayList<Slide>();
432
			for (Long childSlideID : childrenSlideIDs) {
433
				Slide childSlide = this.createSlide(childSlideID.longValue());
434
				if(childSlide != null) {
435
					childrenSlides.add(childSlide);
436
				}
437
			}
438
 
439
			slide.setChildrenSlides(childrenSlides);
440
		}
441
 
442
		return slide;
443
    }
444
 
445
    /**
446
     * 
201 naveen 447
     * @param slide
448
     * @return
449
     * @throws Exception
450
     */
451
    private List<Feature> createFeatures(Slide slide) throws Exception {
452
 
453
		long slideDefID = slide.getSlideDefinitionID();
454
		SlideDefinition slideDef = defs.getSlideDefinition(slideDefID);
455
 
456
		List<SlideFeatureDefinition> slideFeatureDefs = 
457
			slideDef.getSlideFeatureDefinitions();
458
 
459
		DefinitionsContainer defs = this.getDefinitionsContainer();
460
 
461
		List<Feature> features = new ArrayList<Feature>();	
462
		for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
463
			long featureDefinitionID = slideFeatureDef.getFeatureDefintionID();
204 naveen 464
			log.info("featureDefinitionID:"+featureDefinitionID);
465
 
201 naveen 466
			String featureDefIDString = 
467
				new Long(featureDefinitionID).toString();
468
 
469
			Feature feature = new Feature(featureDefinitionID);
470
 
471
			// Bullets
472
			List<Bullet> bullets = new ArrayList<Bullet>();
473
			FeatureDefinition featureDef = defs.getFeatureDefinition(
474
					featureDefinitionID);
204 naveen 475
			log.info("featureDef:" + featureDef);
201 naveen 476
 
477
			ExpandedFeatureDefinition expFeatureDef = 
478
				new ExpandedFeatureDefinition(featureDef);
479
 
480
			ExpandedBulletDefinition expBulletDef = 
481
				expFeatureDef.getExpandedBulletDefinition();
482
 
206 naveen 483
			// Collect unit
484
			String[] unitIDs = this.reqparams.get(featureDefIDString + "_unit");
485
			long unitID = 0L;
486
			if(unitIDs != null && unitIDs.length > 0) {
487
				unitID = Long.parseLong(unitIDs[0]);
488
			}
489
 
201 naveen 490
			// Composite
491
			if(expBulletDef.isComposite()) {
204 naveen 492
				log.info("Composite");
201 naveen 493
 
204 naveen 494
				CompositeDataObject compositeDataObject = 
495
					new CompositeDataObject();
496
 
497
				CompositeDefinition compositeDef = 
498
					(CompositeDefinition)expBulletDef.getDatatypeDefinition(); 
499
 
500
				List<CompositePartDefinition> compositeParts = 
501
					compositeDef.getCompositePartDefinitions();
502
 
503
				for(int j=0;j<compositeParts.size();j++) {
504
					String[] partValues = this.reqparams.get(
208 naveen 505
							featureDefIDString + "_" + (j + 1));
204 naveen 506
 
507
					if(partValues != null && partValues.length > 0) {
508
						compositeDataObject.addPrimitiveDataObject(
509
							new PrimitiveDataObject(partValues[0]));
510
					}
511
				}
512
 
513
				Bullet bullet = new Bullet(compositeDataObject);
514
 
206 naveen 515
				if(unitID != 0L) {
516
					bullet.setUnitID(unitID);
517
				}
518
 
204 naveen 519
				bullets.add(bullet);
201 naveen 520
			}
521
 
522
			// Enumerated
523
			else if(expBulletDef.isEnumerated()) {
204 naveen 524
				log.info("Enumerated");
525
 
526
				String[] bulletValues = this.reqparams.get(featureDefIDString);
527
				if(bulletValues == null || bulletValues.length == 0) {
528
					continue;
529
				}
201 naveen 530
 
204 naveen 531
				log.info("bulletValues:" + Arrays.toString(bulletValues));
206 naveen 532
 
204 naveen 533
 
206 naveen 534
				for(int i=0;i<bulletValues.length;i++) {
535
					EnumDataObject enumDataObject = 
536
						new EnumDataObject(Long.parseLong(bulletValues[i]));
537
 
538
					Bullet bullet = new Bullet(enumDataObject);
539
 
540
					if(unitID != 0L) {
541
						bullet.setUnitID(unitID);
542
					}
543
 
544
					bullets.add(bullet);
545
				}
201 naveen 546
			}
547
 
548
			// Primitive
549
			else {
204 naveen 550
				log.info("Primitive");
551
 
552
				String[] bulletValues = this.reqparams.get(featureDefIDString);
553
				if(bulletValues == null || bulletValues.length == 0) {
554
					continue;
555
				}
556
 
557
				log.info("bulletValues:" + Arrays.toString(bulletValues));
558
 
206 naveen 559
				for(int i=0;i<bulletValues.length;i++) {
560
					Bullet bullet = new Bullet(
561
							new PrimitiveDataObject(bulletValues[i]));
562
 
563
					if(unitID != 0L) {
564
						bullet.setUnitID(unitID);
565
					}
566
 
567
					bullets.add(bullet);
568
				}
201 naveen 569
			}
570
 
571
			feature.setBullets(bullets);
572
 
573
			// FFC
574
			FreeformContent featureFFC = 
575
				this.getFreeformContent(featureDefIDString);
576
 
577
			feature.setFreeformContent(featureFFC);
578
 
579
			features.add(feature);
580
		}
581
 
582
		return features;
583
	}
584
 
585
	/**
586
     * 
587
     * @param ID
588
     * @return
589
     */
590
    private FreeformContent getFreeformContent(String ID) {
591
		FreeformContent ffc = new FreeformContent();
592
		String[] ffts = this.reqparams.get(ID + "_fft");
593
		if(ffts != null) {
594
			ffc.setFreeformTexts(Arrays.asList(ffts));
595
		}
596
 
210 naveen 597
		String[] imgRefs = this.reqparams.get(ID + "_image_references");
598
		if(imgRefs != null) {
599
			ffc.setMedia("image", Arrays.asList(imgRefs));
201 naveen 600
		}
601
 
210 naveen 602
		String[] youtubeRefs = 
603
			this.reqparams.get(ID + "_youtube_references");
604
		if(youtubeRefs != null) {
605
			ffc.setMedia("youtube", Arrays.asList(youtubeRefs));
201 naveen 606
		}
607
 
608
		log.info("ffc:" + ffc);
609
		return ffc;
610
	}
213 naveen 611
 
612
 
613
    /**
614
     * 
615
     * @param slideDefinitionID
616
     * @return
617
     */
618
	public ExpandedSlide getChildSlide(long slideDefinitionID) {
619
		return this.getChildSlide(this.expSlide, slideDefinitionID);
620
	}
621
 
622
 
623
    /**
624
     * 
625
     * @param expSlide
626
     * @param slideDefinitionID
627
     * @return
628
     */
629
	public ExpandedSlide getChildSlide(ExpandedSlide expSlide, 
630
			long slideDefinitionID) {
631
 
632
		List<ExpandedSlide> childrenSlides = 
633
			expSlide.getExpandedChildrenSlides();
634
 
635
		ExpandedSlide resultSlide = null;
636
 
637
		if(childrenSlides != null) {
638
			for(ExpandedSlide childSlide : childrenSlides) {
639
				if(childSlide.getSlideDefinitionID() == slideDefinitionID) {
640
					return childSlide;
641
				}
642
 
643
				resultSlide = this.getChildSlide(childSlide, slideDefinitionID);
644
				if(resultSlide == null) {
645
					continue;
646
				}
647
				else {
648
					break;
649
				}
650
			}
651
		}
652
 
653
		return resultSlide;
654
	}
201 naveen 655
 
656
	/**
162 naveen 657
	 * @return the entities
658
	 */
659
	public Collection<Entity> getEntities() {
660
		return entities;
661
	}
662
 
663
    /**
664
	 * @return the entities
665
	 */
666
	public ExpandedEntity getEntity() {
667
		return expEntity;
668
	}
669
 
198 naveen 670
    /**
671
	 * @return the current slide to edit
672
	 */
673
	public ExpandedSlideDefinition getExpandedSlideDefinition() {
674
		return expSlideDef;
675
	}
213 naveen 676
 
677
	/**
678
	 * 
679
	 * @param slideDefID
680
	 * @return
681
	 */
682
	public ExpandedSlideDefinition getExpandedSlideDefinition(long slideDefID) {
683
		DefinitionsContainer defs = this.getDefinitionsContainer();
684
 
685
		try {
686
			return defs.getExpandedSlideDefinition(slideDefID);
687
		} catch (Exception e) {
688
			return null;
689
		}
690
	}
162 naveen 691
 
692
	/**
693
     * 
694
     * @param id
695
     */
696
    public void setId(String id) {
697
        this.id = id;
698
    }
699
 
700
    /**
701
     * 
702
     */
703
    public String getId() {
704
    	return this.id;
705
    }
706
 
198 naveen 707
	/**
708
	 * @return the firstSlideID
709
	 */
213 naveen 710
	public long getFirstSlideDefID() {
711
		return firstSlideDefID;
198 naveen 712
	}
713
 
162 naveen 714
	@Override
715
	public void setParameters(Map<String, String[]> reqmap) {
716
		log.info("setParameters:" + reqmap);
717
 
718
		this.reqparams = reqmap;
719
	}
720
 
198 naveen 721
	public Map<String, String> getCategories() throws Exception {
722
		DefinitionsContainer defs = this.getDefinitionsContainer();
723
		Map<String, String> cats = new HashMap<String, String>();
724
 
725
		List<Category> children = defs.getChildrenCategories(10001L);
726
		for(Category child : children) {
727
			cats.put(new Long(child.getID()).toString(), child.getLabel());
728
		}
729
 
730
		return cats;
731
	}
732
 
733
	public String getBrandString() throws Exception {
734
		List<String> brands = this.getBrands();
735
		return "\"" + StringUtils.join(brands, "\", \"") + "\"";
736
	}
737
 
738
	public List<String> getBrands() throws Exception {
739
		EntityContainer ents = this.getEntityContainer();
740
		List<String> brands = new ArrayList<String>();
741
 
742
		List<ExpandedBullet> expBullets;
743
 
744
		expBullets = ents.getLearnedBullets(
745
				Utils.BRAND_FEATURE_DEFINITION_ID);
746
 
747
		for(ExpandedBullet expBullet : expBullets) {
748
			brands.add(expBullet.getValue());
749
		}
750
 
751
		return brands;
752
	}
753
 
754
    private EntityContainer getEntityContainer() {
755
    	if(this.ents == null) {
756
    		this.ents = new EntityContainer();
757
    	}
758
 
759
	    return this.ents;
760
    }
761
 
762
    private DefinitionsContainer getDefinitionsContainer() {
763
    	if(this.defs == null) {
764
    		this.defs = new DefinitionsContainer();
765
    	}
766
 
767
	    return this.defs;
768
    }
769
 
770
    /**
771
     * 
772
     * @param entity
773
     * @throws Exception
774
     */
775
	private void addEntity(Entity entity) throws Exception {			
776
		EntityContainer entContainer = new EntityContainer();
777
 
778
		entContainer.addEntity(entity);
779
 
780
		DBUtils.store(entContainer.getEntities(), Utils.ENTITIES_DB_PATH + 
781
				"entities" + ".ser");
782
 
783
		String entitiesbycategoryDBFile = Utils.ENTITIES_DB_PATH + 
784
			"entitiesbycategory" + ".ser";
785
 
786
		DBUtils.store(entContainer.getEntitiesbyCategory(), 
787
				entitiesbycategoryDBFile);
788
	}
789
 
790
    /**
791
     * 
792
     * @param entity
793
     * @throws Exception
794
     */
795
	private void updateEntity(Entity entity) throws Exception {			
796
		EntityContainer entContainer = new EntityContainer();
797
 
798
		entContainer.updateEntity(entity);
799
 
800
		DBUtils.store(entContainer.getEntities(), Utils.ENTITIES_DB_PATH + 
801
				"entities" + ".ser");
802
 
803
		String entitiesbycategoryDBFile = Utils.ENTITIES_DB_PATH + 
804
			"entitiesbycategory" + ".ser";
805
 
806
		DBUtils.store(entContainer.getEntitiesbyCategory(), 
807
				entitiesbycategoryDBFile);
808
	}
809
 
162 naveen 810
	/**
198 naveen 811
	 * @param exception the exception to set
812
	 */
813
	public void setException(Exception exception) {
814
		this.exception = exception;
815
	}
816
 
817
	/**
818
	 * @return the exception
819
	 */
820
	public Exception getException() {
821
		return exception;
822
	}
823
 
824
	/**
825
	 * @param errorString the exceptionString to set
826
	 */
827
	public void setErrorString(String errorString) {
828
		this.errorString = errorString;
829
	}
830
 
831
	/**
832
	 * @return the exceptionString
833
	 */
834
	public String getErrorString() {
835
		return errorString;
836
	}
837
 
838
	/**
839
	 * @param newCurrentSlideID the newCurrentSlideID to set
840
	 */
841
	public void setNewCurrentSlideDefinitionID(
842
			long newCurrentSlideDefinitionID) {
843
		this.newCurrentSlideDefinitionID = newCurrentSlideDefinitionID;
844
	}
845
 
846
	/**
847
	 * @return the newCurrentSlideID
848
	 */
849
	public long getNewCurrentSlideDefinitionID() {
850
		return newCurrentSlideDefinitionID;
851
	}
852
 
853
	/**
854
	 * @param newNextSlideID the newNextSlideID to set
855
	 */
856
	public void setNewNextSlideDefinitionID(long newNextSlideDefinitionID) {
857
		this.newNextSlideDefinitionID = newNextSlideDefinitionID;
858
	}
859
 
860
	/**
861
	 * @return the newNextSlideID
862
	 */
863
	public long getNewNextSlideDefinitionID() {
864
		return newNextSlideDefinitionID;
865
	}
866
 
867
	/**
868
	 * @param expSlide the expSlide to set
869
	 */
870
	public void setExpandedSlide(ExpandedSlide expSlide) {
871
		this.expSlide = expSlide;
872
	}
873
 
874
	/**
875
	 * @return the expSlide
876
	 */
877
	public ExpandedSlide getExpandedSlide() {
878
		return expSlide;
879
	}
880
 
881
	/**
882
	 * @param newPrevSlideDefinitionID the newPrevSlideDefinitionID to set
883
	 */
884
	public void setNewPrevSlideDefinitionID(long newPrevSlideDefinitionID) {
885
		this.newPrevSlideDefinitionID = newPrevSlideDefinitionID;
886
	}
887
 
888
	/**
889
	 * @return the newPrevSlideDefinitionID
890
	 */
891
	public long getNewPrevSlideDefinitionID() {
892
		return newPrevSlideDefinitionID;
893
	}
894
 
895
	/**
162 naveen 896
	 * 
200 naveen 897
	 * @param featureDefinitionID
898
	 * @return
899
	 * @throws Exception
900
	 */
901
	public String getLearnedValuesString(long featureDefinitionID) 
902
			throws Exception {
206 naveen 903
		List<String> learnedValues = this.getLearnedValues(featureDefinitionID);
904
		if(learnedValues == null) {
905
			return "";
906
		}
907
 
908
		return "\"" + StringUtils.join(learnedValues, "\", \"") + "\"";
909
	}
910
 
911
	/**
912
	 * 
913
	 * @param featureDefinitionID
914
	 * @return
915
	 * @throws Exception
916
	 */
917
	public List<String> getLearnedValues(long featureDefinitionID) 
918
			throws Exception {
200 naveen 919
		EntityContainer ents = this.getEntityContainer();
920
		List<ExpandedBullet> learnedBullets = 
921
			ents.getLearnedBullets(featureDefinitionID);
922
 
201 naveen 923
		if(learnedBullets == null) {
206 naveen 924
			return null;
201 naveen 925
		}
926
 
200 naveen 927
		List<String> learnedValues = new ArrayList<String>();
928
		for(ExpandedBullet expBullet : learnedBullets) {
929
			learnedValues.add(expBullet.getValue());
930
		}
931
 
206 naveen 932
		return learnedValues;
200 naveen 933
	}
934
 
935
	/**
936
	 * 
201 naveen 937
	 * @param featureDefinitionID
938
	 * @return
939
	 * @throws Exception
940
	 */
941
	public ExpandedFeature getFeature(long featureDefinitionID) 
942
		throws Exception {
943
		EntityContainer ents = this.getEntityContainer();
944
 
945
		Feature feature = ents.getFeature(this.expSlide, featureDefinitionID);
946
		if(feature == null) {
947
			return null;
948
		}
949
 
950
		return new ExpandedFeature(feature);
951
	}
952
 
953
	/**
954
	 * 
162 naveen 955
	 * @return
956
	 */
208 naveen 957
	public String getEditorialImportance() {
958
		long catID = this.expEntity.getCategoryID();
959
		long slideDefID = this.getNewCurrentSlideDefinitionID();
960
 
961
		try {
962
			List<CategorySlideDefinition> catSlideDefs =
963
				defs.getCategorySlideDefinitions(catID);
964
			for(CategorySlideDefinition catSlideDef : catSlideDefs) {
965
				if(catSlideDef.getSlideDefintionID() == slideDefID) {
966
					return catSlideDef.getEditorialImportance().toString();
967
				}
968
			}
969
		} catch (Exception e) {
970
			log.error(CreationUtils.getStackTrace(e));
971
    	}
972
 
973
		return "";
162 naveen 974
	}
210 naveen 975
 
976
	/**
977
	 * 
978
	 * @return
979
	 * @throws Exception 
980
	 * @throws NumberFormatException 
981
	 */
982
	public List<String> getMediaLabels(String type) {
983
		try {
984
			return CreationUtils.getMediaLabels(Long.parseLong(this.getId()), 
985
					type);
986
		}
987
		catch(Exception nfe) {
988
			return null;
989
		}
990
	}
162 naveen 991
}