Subversion Repositories SmartDukaan

Rev

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

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