Subversion Repositories SmartDukaan

Rev

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