Subversion Repositories SmartDukaan

Rev

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