Subversion Repositories SmartDukaan

Rev

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