Subversion Repositories SmartDukaan

Rev

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