Subversion Repositories SmartDukaan

Rev

Rev 1051 | Rev 1152 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
162 naveen 1
package in.shop2020.creation.controllers;
2
 
1051 rajveer 3
import in.shop2020.content.security.User;
4
import in.shop2020.content.security.UserManager;
480 rajveer 5
import in.shop2020.metamodel.util.CreationUtils;
201 naveen 6
import in.shop2020.metamodel.core.Bullet;
204 naveen 7
import in.shop2020.metamodel.core.CompositeDataObject;
162 naveen 8
import in.shop2020.metamodel.core.Entity;
1051 rajveer 9
import in.shop2020.metamodel.core.EntityState;
204 naveen 10
import in.shop2020.metamodel.core.EnumDataObject;
201 naveen 11
import in.shop2020.metamodel.core.Feature;
198 naveen 12
import in.shop2020.metamodel.core.FreeformContent;
201 naveen 13
import in.shop2020.metamodel.core.PrimitiveDataObject;
198 naveen 14
import in.shop2020.metamodel.core.Slide;
242 naveen 15
import in.shop2020.metamodel.definitions.Catalog;
198 naveen 16
import in.shop2020.metamodel.definitions.Category;
204 naveen 17
import in.shop2020.metamodel.definitions.CompositeDefinition;
18
import in.shop2020.metamodel.definitions.CompositePartDefinition;
198 naveen 19
import in.shop2020.metamodel.definitions.DefinitionsContainer;
310 rajveer 20
import in.shop2020.metamodel.definitions.EditorialImportance;
162 naveen 21
import in.shop2020.metamodel.definitions.EntityContainer;
201 naveen 22
import in.shop2020.metamodel.definitions.FeatureDefinition;
23
import in.shop2020.metamodel.definitions.SlideDefinition;
24
import in.shop2020.metamodel.definitions.SlideFeatureDefinition;
198 naveen 25
import in.shop2020.metamodel.util.ExpandedBullet;
201 naveen 26
import in.shop2020.metamodel.util.ExpandedBulletDefinition;
162 naveen 27
import in.shop2020.metamodel.util.ExpandedEntity;
201 naveen 28
import in.shop2020.metamodel.util.ExpandedFeature;
29
import in.shop2020.metamodel.util.ExpandedFeatureDefinition;
198 naveen 30
import in.shop2020.metamodel.util.ExpandedSlide;
31
import in.shop2020.metamodel.util.ExpandedSlideDefinition;
162 naveen 32
import in.shop2020.metamodel.util.SequenceGenerator;
739 chandransh 33
import in.shop2020.model.v1.catalog.Item;
34
import in.shop2020.model.v1.catalog.status;
35
import in.shop2020.thrift.clients.CatalogServiceClient;
162 naveen 36
import in.shop2020.util.Utils;
37
 
208 naveen 38
import java.util.ArrayList;
39
import java.util.Arrays;
40
import java.util.Collection;
41
import java.util.HashMap;
42
import java.util.List;
43
import java.util.Map;
1051 rajveer 44
import java.util.Set;
450 rajveer 45
import java.util.StringTokenizer;
208 naveen 46
 
47
import org.apache.commons.lang.StringUtils;
162 naveen 48
import org.apache.juli.logging.Log;
49
import org.apache.juli.logging.LogFactory;
1051 rajveer 50
import org.apache.struts2.convention.annotation.InterceptorRef;
51
import org.apache.struts2.convention.annotation.InterceptorRefs;
162 naveen 52
import org.apache.struts2.convention.annotation.Result;
53
import org.apache.struts2.convention.annotation.Results;
1051 rajveer 54
 
208 naveen 55
import org.apache.struts2.rest.DefaultHttpHeaders;
56
import org.apache.struts2.rest.HttpHeaders;
162 naveen 57
 
242 naveen 58
 
1051 rajveer 59
@InterceptorRefs({
60
    @InterceptorRef("myDefault"),
61
    @InterceptorRef("login")
62
})
63
 
162 naveen 64
@Results({
65
    @Result(name="success", type="redirectAction", 
198 naveen 66
    		params = {"actionName" , "entity"}),
67
    @Result(name="redirect", location="${url}", type="redirect")
162 naveen 68
})
242 naveen 69
 
1051 rajveer 70
public class EntityController extends BaseController {
162 naveen 71
 
72
	/**
73
	 * 
74
	 */
242 naveen 75
	private static final long serialVersionUID = 1L;
76
 
77
	/**
78
	 * 
79
	 */
162 naveen 80
	private static Log log = LogFactory.getLog(EntityController.class);
81
 
82
	/**
83
	 * 
84
	 */
85
	private String id;
86
 
87
	private ExpandedEntity expEntity;
88
 
1051 rajveer 89
	private Entity entity = null;
250 naveen 90
 
162 naveen 91
	private Collection<Entity> entities;
92
 
1051 rajveer 93
	private Map<Long, EntityState> entitiesState;
162 naveen 94
 
1051 rajveer 95
	private EntityContainer ents = Catalog.getInstance().getEntityContainer();
198 naveen 96
 
1051 rajveer 97
	private DefinitionsContainer defs = Catalog.getInstance().getDefinitionsContainer();
198 naveen 98
 
213 naveen 99
	private long firstSlideDefID;
198 naveen 100
 
101
	private ExpandedSlideDefinition expSlideDef;
102
 
103
	private ExpandedSlide expSlide;
104
 
105
	private String redirectURL;
106
 
107
	private Exception exception;
108
 
109
	private String errorString;
110
 
111
	private long newCurrentSlideDefinitionID;
112
 
113
	private long newNextSlideDefinitionID;
114
 
115
	private long newPrevSlideDefinitionID;
242 naveen 116
 
250 naveen 117
	private Map<Long, List<Long>> catSlides;
516 rajveer 118
 
119
	private Map<Long, List<Entity>> catEntities;
1051 rajveer 120
 
121
		// GET /entity/1
242 naveen 122
    public String show() {
123
    	log.info("EntityController.show");
124
 
125
    	try {
126
    		long entityID = Long.parseLong(this.getId());
127
    		log.info("entityID:" + entityID);
128
 
1051 rajveer 129
    		if(!UserManager.getUserManager().canView(getUsername(), entityID)){
130
    			return "fatel";
131
    		}
132
 
250 naveen 133
			this.expEntity = this.getExpandedEntity(entityID);
242 naveen 134
 
135
			return "show";
136
		} catch (Exception e) {
137
			log.error(CreationUtils.getStackTrace(e));
138
			this.setErrorString(CreationUtils.getStackTrace(e));
139
			return "fatal";
140
		}
141
    }
198 naveen 142
 
162 naveen 143
    // GET /entity
144
    public HttpHeaders index() {
145
    	log.info("EntityController.index");
739 chandransh 146
    	createEntitiesForItemsInProcess();
162 naveen 147
    	try {
1051 rajveer 148
			this.entities = CreationUtils.getEntities().values();
149
			this.entitiesState = CreationUtils.getEntitiesState();
150
 
162 naveen 151
		} catch (Exception e) {
208 naveen 152
			log.error(CreationUtils.getStackTrace(e));
153
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 154
			return new DefaultHttpHeaders("fatal");
162 naveen 155
		}
156
 
208 naveen 157
        return new DefaultHttpHeaders("index").disableCaching();
162 naveen 158
    }
159
 
160
    // GET /entity
161
    public String create() {
162
    	log.info("EntityController.create");
163
 
1051 rajveer 164
    	if(!UserManager.getUserManager().canCreate(getUsername())){
165
			return "success";
166
		}
167
 
162 naveen 168
		SequenceGenerator sg;
169
		try {
170
			sg = SequenceGenerator.getInstance();
171
			long entityID = sg.getNextSequence(SequenceGenerator.ENTITY);
172
 
173
			String categoryID = this.reqparams.get("category")[0];
174
			Entity entity = new Entity(entityID, Long.parseLong(categoryID));
175
 
176
			entity.setBrand(this.reqparams.get("brand")[0]);
177
			entity.setModelName(this.reqparams.get("modelname")[0]);
178
			entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
179
 
1051 rajveer 180
			EntityState entityState = new EntityState(entityID, getUsername());
162 naveen 181
 
1051 rajveer 182
			CreationUtils.createEntity(entity, entityState);
183
 
162 naveen 184
	    	this.setId(new Long(entityID).toString());
185
		} catch (Exception e) {
208 naveen 186
			log.error(CreationUtils.getStackTrace(e));
187
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 188
			return "fatal";
162 naveen 189
		}
198 naveen 190
 
191
		this.redirectURL = "entity/" + this.getId() + "/edit";
162 naveen 192
 
198 naveen 193
		return "redirect";
162 naveen 194
    }
195
 
196
    // GET /entity/1/edit
197
    public String edit() {
198
    	log.info("EntityController.edit");
199
 
200
    	long entityID = Long.parseLong(this.getId());
201
    	log.info("entityID:" + entityID);
1051 rajveer 202
    	if(!UserManager.getUserManager().canEdit(getUsername(), entityID)){
203
    		addActionError("You can not edit as this entity is not assigned to you");
204
			return "success";
205
		}
162 naveen 206
 
207
    	try {
250 naveen 208
			this.expEntity = this.getExpandedEntity(entityID);
198 naveen 209
			//log.info("this.expEntity:" + this.expEntity);
242 naveen 210
 
211
			String[] inputSlideDefIDs = this.reqparams.get("slideDefID");
212
			long inputSlideDefID = 0L;
213
			if(inputSlideDefIDs != null && inputSlideDefIDs.length > 0) {
214
				try {
215
					inputSlideDefID = Long.parseLong(inputSlideDefIDs[0]);
216
				} catch (NumberFormatException nfe) {}
217
			}
1051 rajveer 218
			long categoryID = CreationUtils.getEntity(entityID).getCategoryID();
310 rajveer 219
 
220
			log.info("Entity ID:" + entityID + "   CategoryID " + categoryID );
1051 rajveer 221
 
310 rajveer 222
			//Changed to make correct order of borrowed slides 
1051 rajveer 223
			//List<Long> slideDefIDs = CreationUtils.getSlideSequence(entityID, categoryID);
310 rajveer 224
 
1051 rajveer 225
			List<Long> slideDefIDs = expEntity.getSlideSequence();
242 naveen 226
			log.info("slideDefIDs:" + slideDefIDs);
1051 rajveer 227
			if(slideDefIDs == null){
228
				slideDefIDs = Catalog.getInstance().getDefinitionsContainer().getCategorySlideSequence(categoryID);
229
			}
198 naveen 230
 
1051 rajveer 231
			log.info("slideDefIDs:" + slideDefIDs);
232
 
242 naveen 233
			// Edit the entity from a specific slide
234
			if(slideDefIDs != null && inputSlideDefID != 0L) {
235
 
236
				// -2 : Not set
237
				// -1 : Not found
238
				int currentIndex = slideDefIDs.indexOf(
239
						new Long(inputSlideDefID));
240
 
241
				int nextIndex = -2;
499 rajveer 242
				if(currentIndex+1 != slideDefIDs.size()) {
242 naveen 243
					nextIndex = currentIndex + 1;
244
				}
499 rajveer 245
;
242 naveen 246
				int prevIndex = -2;
247
				if(currentIndex != 0) {
248
					prevIndex = currentIndex - 1;
249
				}
499 rajveer 250
 
242 naveen 251
				this.setNewCurrentSlideDefinitionID(
252
						slideDefIDs.get(currentIndex).longValue());
253
				if(nextIndex != -2) {
499 rajveer 254
					log.info("p7" + "---slidedefids:"+slideDefIDs+ "---nextIndex:"+nextIndex);
255
					log.info("p7" + "---currentslide:"+currentIndex+ "---prevslide:"+prevIndex);
242 naveen 256
					this.setNewNextSlideDefinitionID(
257
							slideDefIDs.get(nextIndex).longValue());
258
				}
259
 
260
				if(prevIndex != -2) {
261
					this.setNewPrevSlideDefinitionID(
262
							slideDefIDs.get(prevIndex).longValue());
263
				}
198 naveen 264
 
242 naveen 265
				// Current Slide Definition
266
				this.expSlideDef = defs.getExpandedSlideDefinition(
267
						inputSlideDefID);
268
				// Current Slide Instance
269
				this.expSlide = this.expEntity.getExpandedSlide(
270
						inputSlideDefID);
271
				return "editSlide";
272
			}
162 naveen 273
		} catch (Exception e) {
208 naveen 274
			log.error(CreationUtils.getStackTrace(e));
275
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 276
			return "fatal";
162 naveen 277
		}
278
 
279
        return "edit";
280
    }
198 naveen 281
 
250 naveen 282
    /**
283
     * 
284
     * @return
285
     */
198 naveen 286
    public String getUrl() {
287
    	return this.redirectURL;
288
    }
250 naveen 289
 
290
    /**
291
     * 
292
     * @return
293
     */
162 naveen 294
    // GET /entity/new
295
    public String editNew() {
296
    	log.info("EntityController.editNew");
297
 
1051 rajveer 298
    	if(!UserManager.getUserManager().canCreate(getUsername())){
299
    		addActionError("You do not have rights to create an entity.");
300
			return "success";
301
		}
302
 
162 naveen 303
        return "editNew";
304
    }
250 naveen 305
 
306
    /**
307
     * 
308
     * @return
309
     */
162 naveen 310
    // GET /entity/1
311
    public String update() {
312
    	log.info("EntityController.update");
313
 
198 naveen 314
    	long entityID = Long.parseLong(this.getId());
315
    	log.info("entityID:" + entityID);
316
 
1051 rajveer 317
    	if(!UserManager.getUserManager().canEdit(getUsername(), entityID)){
318
			return "success";
319
		}
198 naveen 320
 
321
    	try {
250 naveen 322
			this.expEntity = this.getExpandedEntity(entityID);
198 naveen 323
			//log.info("this.expEntity:" + this.expEntity);
1051 rajveer 324
			log.info("p0");
242 naveen 325
 
326
			// Save and Go to slides selection page
327
			if (this.reqparams.containsKey("slides")) {
1051 rajveer 328
				log.info("p1");
242 naveen 329
 
330
				Entity entity = this.expEntity.getEntity();
1051 rajveer 331
				log.info("p2");
332
 
242 naveen 333
				String categoryID = this.reqparams.get("category")[0];
334
 
335
				entity.setCategoryID(Long.parseLong(categoryID));
336
				entity.setBrand(this.reqparams.get("brand")[0]);
337
				entity.setModelName(this.reqparams.get("modelname")[0]);
338
				entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
339
 
1051 rajveer 340
				log.info("p3");
341
				CreationUtils.updateEntity(entity);
342
				//this.updateEntity(entity);
242 naveen 343
 
344
				this.redirectURL = "/slides/" + this.getId() + "/edit";
345
				return "redirect";
346
			}
198 naveen 347
 
213 naveen 348
			long currentSlideDefID = 0L;
349
			long nextSlideDefID = 0L;
350
			long prevSlideDefID = 0L;
250 naveen 351
			long gotoSlideDefID = 0L;
198 naveen 352
 
213 naveen 353
			String[] currentslideDefIDStrings = 
354
				this.reqparams.get("currentslideDefID");
198 naveen 355
 
213 naveen 356
			String[] nextslideDefIDStrings = 
357
				this.reqparams.get("nextslideDefID");
198 naveen 358
 
213 naveen 359
			String[] prevslideDefIDStrings = 
360
				this.reqparams.get("prevslideDefID");
198 naveen 361
 
250 naveen 362
			String[] gotoslideDefIDStrings = 
363
				this.reqparams.get("gotoslideDefID");
364
			log.info("gotoslideDefIDStrings:" + 
365
					Arrays.toString(gotoslideDefIDStrings));
366
 
198 naveen 367
			// Current Slide ID
213 naveen 368
			if(currentslideDefIDStrings != null && 
369
					currentslideDefIDStrings.length > 0) {
198 naveen 370
				try {
213 naveen 371
					currentSlideDefID = Long.parseLong(
372
							currentslideDefIDStrings[0]);
198 naveen 373
				}
374
				catch (NumberFormatException nfe) {}
375
			}
376
 
377
			// Next Slide ID
213 naveen 378
			if(nextslideDefIDStrings != null && 
379
					nextslideDefIDStrings.length > 0) {
198 naveen 380
				try {
213 naveen 381
					nextSlideDefID = Long.parseLong(nextslideDefIDStrings[0]);
198 naveen 382
				}
383
				catch (NumberFormatException nfe) {}
384
			}
385
 
386
			// Prev Slide ID
213 naveen 387
			if(prevslideDefIDStrings != null && 
388
					prevslideDefIDStrings.length > 0) {
198 naveen 389
				try {
213 naveen 390
					prevSlideDefID = Long.parseLong(prevslideDefIDStrings[0]);
198 naveen 391
				}
392
				catch (NumberFormatException nfe) {}
393
			}
250 naveen 394
 
395
			// Go to Slide ID
396
			if(gotoslideDefIDStrings != null && 
397
					gotoslideDefIDStrings.length > 0) {
398
				try {
399
					gotoSlideDefID = Long.parseLong(gotoslideDefIDStrings[0]);
400
				}
401
				catch (NumberFormatException nfe) {}
402
			}
403
 
213 naveen 404
			log.info("currentSlideDefID:" + currentSlideDefID);
405
			log.info("nextSlideDefID:" + nextSlideDefID);
406
			log.info("prevSlideDefID:" + prevSlideDefID);
250 naveen 407
			log.info("gotoSlideDefID:" + gotoSlideDefID);
198 naveen 408
 
242 naveen 409
 
198 naveen 410
			// Save on basic info page
213 naveen 411
			if (this.reqparams.containsKey("save") && currentSlideDefID == 0L) {
198 naveen 412
				log.info("Save");
413
 
414
				Entity entity = this.expEntity.getEntity();
415
 
416
				String categoryID = this.reqparams.get("category")[0];
417
 
418
				entity.setCategoryID(Long.parseLong(categoryID));
419
				entity.setBrand(this.reqparams.get("brand")[0]);
420
				entity.setModelName(this.reqparams.get("modelname")[0]);
421
				entity.setModelNumber(this.reqparams.get("modelnumber")[0]);
422
 
1051 rajveer 423
				CreationUtils.updateEntity(entity);
198 naveen 424
 
425
				return "success";
426
			}
427
 
250 naveen 428
			List<Long> slideIDs = this.getSlideSequence(entityID);
198 naveen 429
			log.info("slideIDs:"+slideIDs);
242 naveen 430
			if(slideIDs == null) {
431
				this.setErrorString("Slides need to be picked first!");
432
				return "fatal";
433
			}
198 naveen 434
 
1051 rajveer 435
			log.info("p4");
436
 
208 naveen 437
			boolean skip = false;
438
			if(this.reqparams.containsKey("skipprev") || 
439
					this.reqparams.containsKey("skipnext")) {
440
				skip = true;
441
			}
442
 
443
			boolean next = this.reqparams.containsKey("skipnext") || 
444
				this.reqparams.containsKey("next");
445
 
446
			boolean prev = this.reqparams.containsKey("skipprev") || 
242 naveen 447
				this.reqparams.containsKey("prev");
208 naveen 448
 
250 naveen 449
			boolean go = this.reqparams.containsKey("goto");
450
 
451
			// Save or Next or Prev or Go - When editing a slide
198 naveen 452
			int currentSlideIndex = 0;
213 naveen 453
			currentSlideIndex = slideIDs.indexOf(new Long(currentSlideDefID));
208 naveen 454
			log.info("currentSlideIndex:" + currentSlideIndex);
198 naveen 455
 
1051 rajveer 456
			log.info("p5");
213 naveen 457
			if(!skip && currentSlideDefID != 0L) {
198 naveen 458
				Entity entity = this.expEntity.getEntity();
459
 
1051 rajveer 460
				log.info("p6");
213 naveen 461
				// Create new instance and override existing
462
				Slide currentSlide = this.createSlide(currentSlideDefID);
198 naveen 463
 
213 naveen 464
				entity.addSlide(currentSlide);
310 rajveer 465
				long categoryID = this.getEntity().getCategoryID();
1051 rajveer 466
				//List<Long> orderedSlideIDs = CreationUtils.getSlideSequence(entityID, categoryID);
250 naveen 467
 
1051 rajveer 468
				List<Long> orderedSlideIDs = entity.getSlideSequence();
469
 
250 naveen 470
				if(orderedSlideIDs != null) {
1051 rajveer 471
					//entity.reorderSlides(orderedSlideIDs);
250 naveen 472
				}
1051 rajveer 473
				log.info("p7");
198 naveen 474
				// Store
1051 rajveer 475
				CreationUtils.updateEntity(entity);
198 naveen 476
				//log.info("entity:" + entity);
477
			}
478
 
215 naveen 479
			// Skip will delete current slide from entity
480
			else if(skip && currentSlideDefID != 0L) {
481
				Entity entity = this.expEntity.getEntity();
482
				entity.removeSlide(currentSlideDefID);
310 rajveer 483
				long categoryID = this.getEntity().getCategoryID();
1051 rajveer 484
				//List<Long> orderedSlideIDs = CreationUtils.getSlideSequence(entityID, categoryID);
250 naveen 485
 
1051 rajveer 486
				log.info("p8");
487
 
488
				List<Long> orderedSlideIDs = entity.getSlideSequence();
250 naveen 489
				if(orderedSlideIDs != null) {
1051 rajveer 490
					//entity.reorderSlides(orderedSlideIDs);
250 naveen 491
				}
492
 
215 naveen 493
				// Store
1051 rajveer 494
				CreationUtils.updateEntity(entity);
215 naveen 495
				//log.info("entity:" + entity);
1051 rajveer 496
 
497
				log.info("p9");
215 naveen 498
			}
499
 
198 naveen 500
			boolean showAnotherSlide = false;
501
 
502
			// -2 : Not set
503
			// -1 : Not found
504
			int newCurrentIndex = -2;  
505
			int newNextIndex = -2;
506
			int newPrevIndex = -2;
507
 
508
			// Next
213 naveen 509
			if(next && nextSlideDefID != 0L) {
198 naveen 510
				log.info("Next");
1051 rajveer 511
				log.info("p10");
198 naveen 512
				// Decide on next slide ID
213 naveen 513
				int nextSlideIndex = slideIDs.indexOf(new Long(nextSlideDefID));
198 naveen 514
				log.info("nextSlideIndex:"+nextSlideIndex);
515
 
516
				// New Current
517
				if (nextSlideIndex == -1) {
213 naveen 518
					this.setErrorString("Invalid Next slide ID " + 
519
							nextSlideDefID);
198 naveen 520
					return "fatal";
521
				}
522
 
523
				newCurrentIndex = nextSlideIndex;
524
 
525
				// New Next
526
				if (newCurrentIndex != slideIDs.size()-1) {
527
					newNextIndex = newCurrentIndex + 1;
528
				}
529
 
530
				// New Prev.
213 naveen 531
				if(currentSlideDefID != 0L) {
198 naveen 532
					newPrevIndex = currentSlideIndex;
533
				}
534
 
535
				showAnotherSlide = true;
536
			}
537
 
538
			// Prev
213 naveen 539
			if(prev && prevSlideDefID != 0L) {
198 naveen 540
				log.info("Prev");
1051 rajveer 541
				log.info("p11");
198 naveen 542
				// Decide on prev slide ID
213 naveen 543
				int prevSlideIndex = slideIDs.indexOf(new Long(prevSlideDefID));
198 naveen 544
				log.info("prevSlideIndex:" + prevSlideIndex);
545
 
546
				if (prevSlideIndex == -1) {
213 naveen 547
					this.setErrorString("Invalid Prev slide ID " + 
548
							prevSlideDefID);
198 naveen 549
					return "fatal";
550
				}
551
 
552
				// New Next
213 naveen 553
				if(currentSlideDefID != 0L) {
198 naveen 554
					newNextIndex = currentSlideIndex;
555
				}
556
 
557
				// New Current
558
				newCurrentIndex = prevSlideIndex;
559
 
560
				// New Prev.
561
				if (newCurrentIndex != 0) {
562
					newPrevIndex = newCurrentIndex - 1;
563
				}
564
 
565
				showAnotherSlide = true;
566
			}
567
 
250 naveen 568
			// Go to
569
			if(go && gotoSlideDefID != 0) {
570
				log.info("Goto");
1051 rajveer 571
				log.info("p12");
250 naveen 572
				int gotoSlideIndex = slideIDs.indexOf(new Long(gotoSlideDefID));
573
				log.info("gotoSlideIndex:" + gotoSlideIndex);
574
 
575
				if (gotoSlideIndex == -1) {
576
					this.setErrorString("Invalid Go to slide ID " + 
577
							gotoSlideDefID);
578
					return "fatal";
579
				}
580
 
581
				// New Next
582
				if(gotoSlideIndex != slideIDs.size()-1) {
583
					newNextIndex = gotoSlideIndex + 1;
584
				}
585
 
586
				// New Current
587
				newCurrentIndex = gotoSlideIndex;
588
 
589
				// New Prev.
590
				if (gotoSlideIndex != 0) {
591
					newPrevIndex = gotoSlideIndex - 1;
592
				}
593
 
594
				showAnotherSlide = true;
595
			}
596
 
198 naveen 597
			if(showAnotherSlide) {
213 naveen 598
 				log.info("newCurrentIndex:" + newCurrentIndex);
599
				log.info("newNextIndex:" + newNextIndex);
600
				log.info("newPrevIndex:" + newPrevIndex);
198 naveen 601
 
1051 rajveer 602
				log.info("p13");
603
 
198 naveen 604
				if(newCurrentIndex != -2) {
605
					this.setNewCurrentSlideDefinitionID(
606
							slideIDs.get(newCurrentIndex).longValue());
607
				}
608
 
609
				if(newNextIndex != -2) {
610
					this.setNewNextSlideDefinitionID(
611
							slideIDs.get(newNextIndex).longValue());
612
				}
613
 
614
				if(newPrevIndex != -2) {
615
					this.setNewPrevSlideDefinitionID(
616
							slideIDs.get(newPrevIndex).longValue());
617
				}
242 naveen 618
 
619
				long newCurrentSlideDefID = 
620
					this.getNewCurrentSlideDefinitionID();
621
				log.info("newCurrentSlideDefID:" + newCurrentSlideDefID);
198 naveen 622
 
623
				// Current Slide Definition
624
				this.expSlideDef = defs.getExpandedSlideDefinition(
242 naveen 625
						newCurrentSlideDefID);
198 naveen 626
 
627
				// Current Slide Instance
628
				this.expSlide = this.expEntity.getExpandedSlide(
242 naveen 629
						newCurrentSlideDefID);
198 naveen 630
 
242 naveen 631
				log.info("this.expSlide is null: " + (this.expSlide == null));
632
 
198 naveen 633
				return "editSlide";
634
			}
635
		}
636
    	catch (Exception e) {
208 naveen 637
			log.error(CreationUtils.getStackTrace(e));
638
			this.setErrorString(CreationUtils.getStackTrace(e));
198 naveen 639
			return "fatal";
640
    	}
641
 
642
        return "success";
162 naveen 643
    }
213 naveen 644
 
162 naveen 645
    /**
201 naveen 646
     * 
250 naveen 647
     * @param entityID
648
     * @return
649
     * @throws Exception 
650
     */
651
    public long getBorrowedCategoryID(long slideDefID) throws Exception {
652
    	long entityID = Long.parseLong(this.getId());
1051 rajveer 653
    	entity = CreationUtils.getEntity(entityID);
250 naveen 654
    	Long entityCatID = new Long(entity.getCategoryID());
655
 
656
    	Map<Long, List<Long>> catSlides = this.getRawSlideSequence(entityID);
657
 
658
    	Long lSlideDefID = new Long(slideDefID);
659
    	if(catSlides != null) {
660
    		for(Long catID : catSlides.keySet()) {
661
    			List<Long> slideDefIDs = catSlides.get(catID);
662
    			if(slideDefIDs.contains(lSlideDefID) && 
663
    					!catID.equals(entityCatID)) {
664
    				return catID.longValue();
665
    			}
666
    		}
667
    	}
668
 
669
    	return 0L;
670
    }
671
 
672
	/**
673
     * 
674
     * @param entityID
675
     * @return
676
     * @throws Exception 
677
     */
678
    private List<Long> getSlideSequence(long entityID) throws Exception {
1051 rajveer 679
    	//this.catSlides = this.getRawSlideSequence(entityID);
680
    	//return CreationUtils.getSlideSequence(this.catSlides);
681
    	return entity.getSlideSequence();
250 naveen 682
	}
683
 
684
    /**
685
     * 
686
     * @param entityID
687
     * @return
688
     * @throws Exception
689
     */
690
	private Map<Long, List<Long>> getRawSlideSequence(long entityID) 
691
		throws Exception {
692
		if(this.catSlides == null) {
1051 rajveer 693
			this.catSlides = defs.getCategorySlideSequence();
250 naveen 694
		}
695
 
696
		return this.catSlides;
697
	}
698
 
699
 
700
	/**
701
     * 
213 naveen 702
     * @param slideDefID
703
     * @return
704
     * @throws Exception
705
     */
706
    private Slide createSlide(long slideDefID) throws Exception {
707
		Slide slide = new Slide(slideDefID);
708
 
250 naveen 709
		long borrowedCategoryID = this.getBorrowedCategoryID(slideDefID);
710
		log.info("borrowedCategoryID:" + borrowedCategoryID);
711
 
712
		if(borrowedCategoryID != 0L) {
713
			slide.setBorrowedCategoryID(borrowedCategoryID);
714
		}
715
 
213 naveen 716
		// Slide free-form content
717
		FreeformContent slideFFC = this.getFreeformContent(
718
				"slide_" + slideDefID);
719
 
720
		log.info("slideFFC:" + slideFFC);
721
 
722
		slide.setFreeformContent(slideFFC);
723
		//log.info("currentSlide:" + currentSlide);
724
 
725
		// Collect Feature bullets
726
		List<Feature> features = this.createFeatures(slide);
727
		log.info("features:" + features);
728
 
729
		slide.setFeatures(features);
730
 
731
		// Collect children slides
1051 rajveer 732
		SlideDefinition slideDef = this.defs.getSlideDefinition(slideDefID);
213 naveen 733
 
734
		List<Long> childrenSlideIDs = slideDef.getChildrenSlideDefinitionIDs();
735
		if(childrenSlideIDs != null) {
736
			List<Slide> childrenSlides = new ArrayList<Slide>();
737
			for (Long childSlideID : childrenSlideIDs) {
738
				Slide childSlide = this.createSlide(childSlideID.longValue());
739
				if(childSlide != null) {
740
					childrenSlides.add(childSlide);
741
				}
742
			}
743
 
744
			slide.setChildrenSlides(childrenSlides);
745
		}
746
 
747
		return slide;
748
    }
749
 
750
    /**
751
     * 
201 naveen 752
     * @param slide
753
     * @return
754
     * @throws Exception
755
     */
756
    private List<Feature> createFeatures(Slide slide) throws Exception {
757
 
758
		long slideDefID = slide.getSlideDefinitionID();
759
		SlideDefinition slideDef = defs.getSlideDefinition(slideDefID);
760
 
761
		List<SlideFeatureDefinition> slideFeatureDefs = 
762
			slideDef.getSlideFeatureDefinitions();
763
 
764
		List<Feature> features = new ArrayList<Feature>();	
765
		for(SlideFeatureDefinition slideFeatureDef : slideFeatureDefs) {
766
			long featureDefinitionID = slideFeatureDef.getFeatureDefintionID();
215 naveen 767
			log.info("featureDefinitionID:" + featureDefinitionID);
204 naveen 768
 
215 naveen 769
			// Ignore skipped featured
770
			String[] skipvalue = 
771
				this.reqparams.get(featureDefinitionID + "_skip");
772
			log.info("skipvalue:" + Arrays.toString(skipvalue));
773
 
774
			if(skipvalue != null && skipvalue.length > 0 && 
775
					skipvalue[0].equals("on")) {
776
				continue;
777
			}
778
 
201 naveen 779
			String featureDefIDString = 
780
				new Long(featureDefinitionID).toString();
781
 
782
			Feature feature = new Feature(featureDefinitionID);
310 rajveer 783
 
201 naveen 784
			FeatureDefinition featureDef = defs.getFeatureDefinition(
785
					featureDefinitionID);
204 naveen 786
			log.info("featureDef:" + featureDef);
201 naveen 787
 
788
			ExpandedFeatureDefinition expFeatureDef = 
789
				new ExpandedFeatureDefinition(featureDef);
790
 
791
			ExpandedBulletDefinition expBulletDef = 
792
				expFeatureDef.getExpandedBulletDefinition();
793
 
310 rajveer 794
			boolean isBlank = false;
795
 
796
			// Check if feature has no bullets
797
			// Composite
798
			if(expBulletDef.isComposite()) {
799
				CompositeDefinition compositeDef = (CompositeDefinition)
800
					expBulletDef.getDatatypeDefinition(); 
801
 
802
				List<CompositePartDefinition> compositeParts = 
803
					compositeDef.getCompositePartDefinitions();
804
 
805
				boolean allPartsBlank = true;
806
				for(int j=0;j<compositeParts.size();j++) {
807
					String[] partValues = this.reqparams.get(
808
							featureDefIDString + "_" + (j + 1));
809
 
810
					if(partValues != null && partValues.length > 0) {
811
						allPartsBlank = false;
812
					}
813
				}
814
 
815
				isBlank = allPartsBlank;
816
			}
817
 
818
			// Enumerated and Primitive
819
			else {
820
				String[] bulletValues =	this.reqparams.get(featureDefIDString);
821
				if(bulletValues == null || bulletValues.length == 0) {
822
					isBlank = true;
823
				}
824
			}
825
 
826
			// Has no bullets
827
			if(isBlank) {
403 rajveer 828
 
829
				// Mandatory
830
				// or optional/recommended but allows blanck and not skipped
310 rajveer 831
				if(slideFeatureDef.getEditorialImportance() == 
480 rajveer 832
					EditorialImportance.MANDATORY || expFeatureDef.allowsBlank()) {
833
					// FFC
834
					FreeformContent featureFFC = 
835
						this.getFreeformContent(featureDefIDString);
836
 
837
					feature.setFreeformContent(featureFFC);
838
 
310 rajveer 839
					features.add(feature);
840
				}
841
 
842
				continue;
843
			}
844
 
845
			// Bullets
846
			List<Bullet> bullets = new ArrayList<Bullet>();
847
 
206 naveen 848
			// Collect unit
849
			String[] unitIDs = this.reqparams.get(featureDefIDString + "_unit");
850
			long unitID = 0L;
851
			if(unitIDs != null && unitIDs.length > 0) {
852
				unitID = Long.parseLong(unitIDs[0]);
853
			}
854
 
201 naveen 855
			// Composite
856
			if(expBulletDef.isComposite()) {
204 naveen 857
				log.info("Composite");
201 naveen 858
 
204 naveen 859
				CompositeDataObject compositeDataObject = 
860
					new CompositeDataObject();
861
 
862
				CompositeDefinition compositeDef = 
863
					(CompositeDefinition)expBulletDef.getDatatypeDefinition(); 
864
 
865
				List<CompositePartDefinition> compositeParts = 
866
					compositeDef.getCompositePartDefinitions();
867
 
868
				for(int j=0;j<compositeParts.size();j++) {
869
					String[] partValues = this.reqparams.get(
208 naveen 870
							featureDefIDString + "_" + (j + 1));
204 naveen 871
 
872
					if(partValues != null && partValues.length > 0) {
873
						compositeDataObject.addPrimitiveDataObject(
874
							new PrimitiveDataObject(partValues[0]));
875
					}
876
				}
877
 
878
				Bullet bullet = new Bullet(compositeDataObject);
879
 
206 naveen 880
				if(unitID != 0L) {
881
					bullet.setUnitID(unitID);
882
				}
883
 
204 naveen 884
				bullets.add(bullet);
201 naveen 885
			}
886
 
887
			// Enumerated
888
			else if(expBulletDef.isEnumerated()) {
204 naveen 889
				log.info("Enumerated");
310 rajveer 890
 
204 naveen 891
				String[] bulletValues = this.reqparams.get(featureDefIDString);
892
				log.info("bulletValues:" + Arrays.toString(bulletValues));
206 naveen 893
 
204 naveen 894
 
206 naveen 895
				for(int i=0;i<bulletValues.length;i++) {
896
					EnumDataObject enumDataObject = 
897
						new EnumDataObject(Long.parseLong(bulletValues[i]));
898
 
899
					Bullet bullet = new Bullet(enumDataObject);
900
 
901
					if(unitID != 0L) {
902
						bullet.setUnitID(unitID);
903
					}
904
 
905
					bullets.add(bullet);
906
				}
201 naveen 907
			}
908
 
909
			// Primitive
910
			else {
204 naveen 911
				log.info("Primitive");
310 rajveer 912
 
204 naveen 913
				String[] bulletValues = this.reqparams.get(featureDefIDString);
914
				log.info("bulletValues:" + Arrays.toString(bulletValues));
915
 
206 naveen 916
				for(int i=0;i<bulletValues.length;i++) {
917
					Bullet bullet = new Bullet(
918
							new PrimitiveDataObject(bulletValues[i]));
919
 
920
					if(unitID != 0L) {
921
						bullet.setUnitID(unitID);
922
					}
923
 
924
					bullets.add(bullet);
925
				}
201 naveen 926
			}
927
 
928
			feature.setBullets(bullets);
929
 
930
			// FFC
931
			FreeformContent featureFFC = 
932
				this.getFreeformContent(featureDefIDString);
933
 
934
			feature.setFreeformContent(featureFFC);
935
 
936
			features.add(feature);
937
		}
938
 
939
		return features;
940
	}
941
 
242 naveen 942
    // DELETE /entity/1000001
943
    /**
944
     * 
945
     */
946
    public String destroy() {
250 naveen 947
    	log.info("#### EntityController.destroy ####");
242 naveen 948
 
949
    	long entityID = Long.parseLong(this.getId());
950
    	log.info("entityID:" + entityID);
951
 
1051 rajveer 952
    	if(!UserManager.getUserManager().canDelete(getUsername(), entityID)){
953
    		addActionError("You do not have rights to delete an entity");
954
    		return "success";
955
		}
956
 
242 naveen 957
		// Store
958
		try {
250 naveen 959
	    	CreationUtils.deleteEntity(entityID);
242 naveen 960
		} catch (Exception e) {
961
			log.error(CreationUtils.getStackTrace(e));
962
			this.setErrorString(CreationUtils.getStackTrace(e));
963
			return "fatal";
964
		}
965
        addActionMessage("Entity deleted successfully");
966
        return "success";
967
    }
201 naveen 968
	/**
969
     * 
970
     * @param ID
971
     * @return
972
     */
973
    private FreeformContent getFreeformContent(String ID) {
450 rajveer 974
 
975
 
201 naveen 976
		FreeformContent ffc = new FreeformContent();
977
		String[] ffts = this.reqparams.get(ID + "_fft");
978
		if(ffts != null) {
979
			ffc.setFreeformTexts(Arrays.asList(ffts));
980
		}
981
 
450 rajveer 982
    	System.out.println("String is " + ID);
983
 
984
    	StringTokenizer tokenizer = new StringTokenizer(ID,"_");
985
    	if(tokenizer.nextToken().compareTo("slide") == 0  ){
986
    		long slideId = Long.parseLong(tokenizer.nextToken());
987
    		FreeformContent old_ffc = null;
988
    		if(this.entity.getSlide(slideId) != null){
989
    			old_ffc = this.entity.getSlide(slideId).getFreeformContent();
990
    			if(old_ffc != null){
1051 rajveer 991
    				ffc.setMedias(old_ffc.getMedias());    			
450 rajveer 992
    			}
993
    		}
994
    	}
201 naveen 995
 
996
 
450 rajveer 997
//		String[] imgRefs = this.reqparams.get(ID + "_image_references");
998
//		if(imgRefs != null) {
999
//			ffc.setMedia("image", Arrays.asList(imgRefs));
1000
//		}
1001
//		
1002
//		String[] youtubeRefs = 
1003
//			this.reqparams.get(ID + "_youtube_references");
1004
//		if(youtubeRefs != null) {
1005
//			ffc.setMedia("youtube", Arrays.asList(youtubeRefs));
1006
//		}
1007
 
201 naveen 1008
		log.info("ffc:" + ffc);
1009
		return ffc;
1010
	}
213 naveen 1011
 
1012
 
1013
    /**
1014
     * 
1015
     * @param slideDefinitionID
1016
     * @return
1017
     */
1018
	public ExpandedSlide getChildSlide(long slideDefinitionID) {
242 naveen 1019
		if(this.expSlide == null) {
1020
			return null;
1021
		}
1022
 
213 naveen 1023
		return this.getChildSlide(this.expSlide, slideDefinitionID);
1024
	}
1025
 
1026
 
1027
    /**
1028
     * 
1029
     * @param expSlide
1030
     * @param slideDefinitionID
1031
     * @return
1032
     */
1033
	public ExpandedSlide getChildSlide(ExpandedSlide expSlide, 
1034
			long slideDefinitionID) {
1035
 
1036
		List<ExpandedSlide> childrenSlides = 
1037
			expSlide.getExpandedChildrenSlides();
1038
 
1039
		ExpandedSlide resultSlide = null;
1040
 
1041
		if(childrenSlides != null) {
1042
			for(ExpandedSlide childSlide : childrenSlides) {
1043
				if(childSlide.getSlideDefinitionID() == slideDefinitionID) {
1044
					return childSlide;
1045
				}
1046
 
1047
				resultSlide = this.getChildSlide(childSlide, slideDefinitionID);
1048
				if(resultSlide == null) {
1049
					continue;
1050
				}
1051
				else {
1052
					break;
1053
				}
1054
			}
1055
		}
1056
 
1057
		return resultSlide;
1058
	}
201 naveen 1059
 
1060
	/**
162 naveen 1061
	 * @return the entities
1062
	 */
1063
	public Collection<Entity> getEntities() {
1064
		return entities;
1065
	}
1066
 
250 naveen 1067
	/**
516 rajveer 1068
	 * @return the entities
1069
	 */
1070
	public Map<Long, List<Entity>> getEntitiesByCategory() {
1071
		return catEntities;
1072
	}
1073
 
1051 rajveer 1074
		/**
739 chandransh 1075
	 * Inquires about items in the IN_PROCESS state with the Catalog service and
1076
	 * creates those entities which do not exist in the CMS already.
1077
	 * 
1078
	 * @return A List of entities fetched from the catalog.
1079
	 */
1080
	private void createEntitiesForItemsInProcess(){
1081
		try {
1082
			CatalogServiceClient csc = new CatalogServiceClient();
1083
			in.shop2020.model.v1.catalog.InventoryService.Client iclient = csc.getClient();
1084
			List<Item> items = iclient.getAllItemsByStatus(status.IN_PROCESS);
1085
			for(Item item: items){
1086
				long entityID = item.getCatalogItemId();
1087
				if(CreationUtils.getEntity(entityID) == null){
1088
					log.info("#### Going to add the entity with id: ####" + entityID);
1089
					Entity entity = new Entity(entityID, -1);
964 chandransh 1090
					entity.setBrand(item.getBrand());
1091
					entity.setModelNumber(item.getModelNumber() + " (" + item.getProductGroup() + ")");
739 chandransh 1092
					entity.setModelName((item.getModelName()==null) ? "" : item.getModelName());
1051 rajveer 1093
					EntityState entityState = new EntityState(entityID, UserManager.getUserManager().getAdminName());
1094
					CreationUtils.createEntity(entity, entityState);
739 chandransh 1095
				}else
1096
					log.info("###Everything went all right and we got an entity");
1097
			}
1098
		} catch (Exception e) {
1099
			e.printStackTrace();
1100
		}
1101
	}
250 naveen 1102
 
162 naveen 1103
    /**
1104
	 * @return the entities
1105
	 */
1106
	public ExpandedEntity getEntity() {
1107
		return expEntity;
1108
	}
1109
 
198 naveen 1110
    /**
1111
	 * @return the current slide to edit
1112
	 */
1113
	public ExpandedSlideDefinition getExpandedSlideDefinition() {
1114
		return expSlideDef;
1115
	}
213 naveen 1116
 
1117
	/**
1118
	 * 
1119
	 * @param slideDefID
1120
	 * @return
1121
	 */
1122
	public ExpandedSlideDefinition getExpandedSlideDefinition(long slideDefID) {
1123
		try {
1124
			return defs.getExpandedSlideDefinition(slideDefID);
1125
		} catch (Exception e) {
1126
			return null;
1127
		}
1128
	}
162 naveen 1129
 
1130
	/**
1131
     * 
1132
     * @param id
1133
     */
1134
    public void setId(String id) {
1135
        this.id = id;
1136
    }
1137
 
1138
    /**
1139
     * 
1140
     */
1141
    public String getId() {
1142
    	return this.id;
1143
    }
1144
 
198 naveen 1145
	/**
1146
	 * @return the firstSlideID
1147
	 */
213 naveen 1148
	public long getFirstSlideDefID() {
1149
		return firstSlideDefID;
198 naveen 1150
	}
1151
 
448 rajveer 1152
	public String getCategoriesTree()  throws Exception {
1153
		Map<String, String> cats = new HashMap<String, String>();
1154
 
1051 rajveer 1155
		List<Category> children = defs.getChildrenCategories(Catalog.getInstance().getRootCategory().getID());
448 rajveer 1156
		for(Category child : children) {
1157
			cats.put(new Long(child.getID()).toString(), child.getLabel());
1158
		}
1159
		return "";
1160
	}
1161
 
198 naveen 1162
	public Map<String, String> getCategories() throws Exception {
1163
		Map<String, String> cats = new HashMap<String, String>();
1164
 
1051 rajveer 1165
		List<Category> children = defs.getChildrenCategories(Catalog.getInstance().getRootCategory().getID());
198 naveen 1166
		for(Category child : children) {
1167
			cats.put(new Long(child.getID()).toString(), child.getLabel());
1168
		}
1169
 
1170
		return cats;
1171
	}
448 rajveer 1172
 
1173
	public Map<String, String> getSubcategories() throws Exception {
1174
		Map<String, String> cats = new HashMap<String, String>();
1175
 
1051 rajveer 1176
		List<Category> children = defs.getChildrenCategories(Catalog.getInstance().getRootCategory().getID());
448 rajveer 1177
		for(Category child : children) {
1178
			List<Category> grandChildren = defs.getChildrenCategories(child.getID());
1179
			for(Category grandchild : grandChildren) {
1180
				cats.put(new Long(grandchild.getID()).toString(), grandchild.getLabel());
1181
			}
1182
		}
1183
 
1184
		return cats;
1185
	}
1186
	public String getCategoriesString() throws Exception {
1187
		StringBuilder categoryString = new StringBuilder();
1188
 
1189
		categoryString.append("<label for=\"basecategory\">Category: </label>");
1190
		categoryString.append("\n");
1191
		categoryString.append("<select id=\"basecategory\"  name=\"basecategory\" >"); 
1192
		categoryString.append("\n");
1051 rajveer 1193
		List<Category> children = defs.getChildrenCategories(Catalog.getInstance().getRootCategory().getID());
448 rajveer 1194
		for(Category child : children) {
1195
			categoryString.append("<option value=\"" + new Long(child.getID()).toString() + "\">" + child.getLabel() + "</option>");
1196
			categoryString.append("\n");
1197
		}
1198
		categoryString.append("</select>");
1199
		categoryString.append("\n");
1200
		categoryString.append("<br/>");
1201
		categoryString.append("\n");
1202
 
1203
		categoryString.append("<label for=\"category\">Sub Category: </label>");
1204
		categoryString.append("\n");
1205
		categoryString.append("<select id=\"category\" name=\"category\" >");
1206
		categoryString.append("\n");
1207
		for(Category child : children) {
1208
			List<Category> grandChildren = defs.getChildrenCategories(child.getID());
1209
			for(Category grandchild : grandChildren) {
1210
				categoryString.append("<option value=\"" + new Long(grandchild.getID()).toString() + "\" selected=\"$selected\" class = \""+ child.getID()  + "\">" + grandchild.getLabel() + "</option>");
1211
				categoryString.append("\n");
1212
			}
1213
		}
1214
		categoryString.append("</select>");
1215
		categoryString.append("\n");
1216
		categoryString.append("<br/>");
1217
 
1218
		return categoryString.toString();
1219
 
1220
	}
1221
 
1222
 
250 naveen 1223
	/**
1224
	 * 
1225
	 * @return
1226
	 * @throws Exception
1227
	 */
198 naveen 1228
	public String getBrandString() throws Exception {
1229
		List<String> brands = this.getBrands();
1230
		return "\"" + StringUtils.join(brands, "\", \"") + "\"";
1231
	}
1232
 
250 naveen 1233
	/**
1234
	 * 
1235
	 * @return
1236
	 * @throws Exception
1237
	 */
198 naveen 1238
	public List<String> getBrands() throws Exception {
1051 rajveer 1239
 
198 naveen 1240
		List<String> brands = new ArrayList<String>();
1241
 
1242
		List<ExpandedBullet> expBullets;
1243
 
1051 rajveer 1244
		expBullets = CreationUtils.getLearnedBullets(Utils.BRAND_FEATURE_DEFINITION_ID);
1245
		if(expBullets!=null){
1246
			for(ExpandedBullet expBullet : expBullets) {
1247
				brands.add(expBullet.getValue());
1248
			}
198 naveen 1249
		}
1250
		return brands;
1251
	}
1252
 
1253
 
245 naveen 1254
	/**
198 naveen 1255
	 * @param exception the exception to set
1256
	 */
1257
	public void setException(Exception exception) {
1258
		this.exception = exception;
1259
	}
1260
 
1261
	/**
1262
	 * @return the exception
1263
	 */
1264
	public Exception getException() {
1265
		return exception;
1266
	}
1267
 
1268
	/**
1269
	 * @param errorString the exceptionString to set
1270
	 */
1271
	public void setErrorString(String errorString) {
1272
		this.errorString = errorString;
1273
	}
1274
 
1275
	/**
1276
	 * @return the exceptionString
1277
	 */
1278
	public String getErrorString() {
1279
		return errorString;
1280
	}
1281
 
1282
	/**
1283
	 * @param newCurrentSlideID the newCurrentSlideID to set
1284
	 */
1285
	public void setNewCurrentSlideDefinitionID(
1286
			long newCurrentSlideDefinitionID) {
1287
		this.newCurrentSlideDefinitionID = newCurrentSlideDefinitionID;
1288
	}
1289
 
1290
	/**
1291
	 * @return the newCurrentSlideID
1292
	 */
1293
	public long getNewCurrentSlideDefinitionID() {
1294
		return newCurrentSlideDefinitionID;
1295
	}
1296
 
1051 rajveer 1297
 
198 naveen 1298
	/**
1299
	 * @param newNextSlideID the newNextSlideID to set
1300
	 */
1301
	public void setNewNextSlideDefinitionID(long newNextSlideDefinitionID) {
1302
		this.newNextSlideDefinitionID = newNextSlideDefinitionID;
1303
	}
1304
 
1305
	/**
1306
	 * @return the newNextSlideID
1307
	 */
1308
	public long getNewNextSlideDefinitionID() {
1309
		return newNextSlideDefinitionID;
1310
	}
1311
 
1312
	/**
1313
	 * @param expSlide the expSlide to set
1314
	 */
1315
	public void setExpandedSlide(ExpandedSlide expSlide) {
1316
		this.expSlide = expSlide;
1317
	}
1318
 
1319
	/**
1320
	 * @return the expSlide
1321
	 */
1322
	public ExpandedSlide getExpandedSlide() {
1323
		return expSlide;
1324
	}
1325
 
1326
	/**
1327
	 * @param newPrevSlideDefinitionID the newPrevSlideDefinitionID to set
1328
	 */
1329
	public void setNewPrevSlideDefinitionID(long newPrevSlideDefinitionID) {
1330
		this.newPrevSlideDefinitionID = newPrevSlideDefinitionID;
1331
	}
1332
 
1333
	/**
1334
	 * @return the newPrevSlideDefinitionID
1335
	 */
1336
	public long getNewPrevSlideDefinitionID() {
1337
		return newPrevSlideDefinitionID;
1338
	}
1339
 
1340
	/**
162 naveen 1341
	 * 
200 naveen 1342
	 * @param featureDefinitionID
1343
	 * @return
1344
	 * @throws Exception
1345
	 */
1346
	public String getLearnedValuesString(long featureDefinitionID) 
1347
			throws Exception {
206 naveen 1348
		List<String> learnedValues = this.getLearnedValues(featureDefinitionID);
1349
		if(learnedValues == null) {
1350
			return "";
1351
		}
1352
 
1353
		return "\"" + StringUtils.join(learnedValues, "\", \"") + "\"";
1354
	}
1355
 
1356
	/**
1357
	 * 
1358
	 * @param featureDefinitionID
1359
	 * @return
1360
	 * @throws Exception
1361
	 */
1362
	public List<String> getLearnedValues(long featureDefinitionID) 
1363
			throws Exception {
1051 rajveer 1364
		List<ExpandedBullet> learnedBullets = CreationUtils.getLearnedBullets(featureDefinitionID);
200 naveen 1365
 
201 naveen 1366
		if(learnedBullets == null) {
206 naveen 1367
			return null;
201 naveen 1368
		}
1369
 
200 naveen 1370
		List<String> learnedValues = new ArrayList<String>();
1371
		for(ExpandedBullet expBullet : learnedBullets) {
1372
			learnedValues.add(expBullet.getValue());
1373
		}
1374
 
206 naveen 1375
		return learnedValues;
200 naveen 1376
	}
1377
 
1378
	/**
1379
	 * 
201 naveen 1380
	 * @param featureDefinitionID
1381
	 * @return
1382
	 * @throws Exception
1383
	 */
1384
	public ExpandedFeature getFeature(long featureDefinitionID) 
1385
		throws Exception {
215 naveen 1386
		if(this.expSlide != null) {
1387
			Feature feature = ents.getFeature(
1388
					this.expSlide, featureDefinitionID);
1389
 
1390
			if(feature == null) {
1391
				return null;
1392
			}
1393
			return new ExpandedFeature(feature);
201 naveen 1394
		}
1395
 
215 naveen 1396
		return null;
201 naveen 1397
	}
1398
 
1399
	/**
1400
	 * 
162 naveen 1401
	 * @return
1402
	 */
208 naveen 1403
	public String getEditorialImportance() {
242 naveen 1404
		// Now that slides are selected upfront
1405
		return "Mandatory";
1406
 
1407
		/*
208 naveen 1408
		long catID = this.expEntity.getCategoryID();
1409
		long slideDefID = this.getNewCurrentSlideDefinitionID();
1410
 
1411
		try {
1412
			List<CategorySlideDefinition> catSlideDefs =
1413
				defs.getCategorySlideDefinitions(catID);
1414
			for(CategorySlideDefinition catSlideDef : catSlideDefs) {
1415
				if(catSlideDef.getSlideDefintionID() == slideDefID) {
1416
					return catSlideDef.getEditorialImportance().toString();
1417
				}
1418
			}
1419
		} catch (Exception e) {
1420
			log.error(CreationUtils.getStackTrace(e));
1421
    	}
1422
 
1423
		return "";
242 naveen 1424
		*/
162 naveen 1425
	}
210 naveen 1426
 
242 naveen 1427
 
1051 rajveer 1428
 
242 naveen 1429
	/**
1430
	 * 
1431
	 * @return
1432
	 */
1433
	public String getCategoryName(long categoryID) {
739 chandransh 1434
		if(categoryID==-1)
1435
			return "Yet to be Asssigned";
242 naveen 1436
		try {
1051 rajveer 1437
			return this.defs.getCategory(categoryID).getLabel();
1438
 
242 naveen 1439
		} catch (Exception e) {
1440
			return null;
1441
		}
1442
	}
250 naveen 1443
 
1444
	/**
1445
	 * 
1446
	 * @return
1447
	 */
1448
	public List<String[]> getSlides() {
1449
		try {
1450
			long entityID = Long.parseLong(this.getId());
310 rajveer 1451
			long categoryID = this.getEntity().getCategoryID();
1051 rajveer 1452
			//List<Long> slideDefIDs = CreationUtils.getSlideSequence(entityID, categoryID);
1453
			List<Long> slideDefIDs = CreationUtils.getEntity(entityID).getSlideSequence();
250 naveen 1454
 
1455
			List<String[]> slideData = new ArrayList<String[]>();
1051 rajveer 1456
 
250 naveen 1457
			for(Long slideDefID : slideDefIDs) {
1458
				SlideDefinition slideDef = defs.getSlideDefinition(slideDefID);
1459
				String label = slideDef.getLabel();
1460
 
1461
				slideData.add(new String[] {slideDefID.toString(), label});
1462
			}
1463
 
1464
			return slideData;
1465
		} catch (Exception e) {
1466
			log.error(CreationUtils.getStackTrace(e));
1467
 
1468
			return null;
1469
		}
1470
	} 
1471
 
1472
    /**
1473
     * 
1474
     * @param entityID
1475
     * @return
1476
     * @throws Exception 
1477
     */
1478
    private ExpandedEntity getExpandedEntity(long entityID) throws Exception {
1479
    	if(this.expEntity == null) {
1480
    		if(this.entity == null) {
1051 rajveer 1481
    			this.entity = CreationUtils.getEntity(entityID);
250 naveen 1482
    		}
1051 rajveer 1483
    		this.expEntity = new ExpandedEntity(entity);
250 naveen 1484
    	}
1485
 
1486
    	return this.expEntity;
1487
    }
1488
 
1051 rajveer 1489
    public Map<Long, EntityState> getEntitiesState(){
1490
    	return this.entitiesState;
1491
    }
1492
 
1493
    public Set<String> getAllUserNames(){
1494
    	return UserManager.getUserManager().getAllUserNames();
1495
    }
1496
 
1497
    public Collection<User> getAllUsers(){
1498
    	return UserManager.getUserManager().getAllUsers();
1499
    }
1500
 
1501
 
1502
 
1503
}
448 rajveer 1504