Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
7286 amit.gupta 1
package in.shop2020.creation.controllers;
2
 
3
import in.shop2020.content.security.UserManager;
4
import in.shop2020.metamodel.core.EntityState;
5
import in.shop2020.metamodel.core.ExpertReview;
6
import in.shop2020.metamodel.core.ExpertReviewSource;
7
import in.shop2020.metamodel.core.ExpertReviewStatus;
8
import in.shop2020.metamodel.util.CreationUtils;
9
import in.shop2020.metamodel.util.ExpandedEntity;
10
import in.shop2020.util.EntityUtils;
11
 
12
import java.util.ArrayList;
8749 amit.gupta 13
import java.util.Arrays;
7286 amit.gupta 14
import java.util.Date;
15
import java.util.List;
16
import java.util.Set;
17
 
18
import org.apache.struts2.convention.annotation.InterceptorRef;
19
import org.apache.struts2.convention.annotation.InterceptorRefs;
20
import org.apache.struts2.convention.annotation.Result;
21
import org.apache.struts2.convention.annotation.Results;
22
 
23
 
24
@InterceptorRefs({
25
    @InterceptorRef("myDefault"),
26
    @InterceptorRef("login")
27
})
28
 
29
@Results({
30
    @Result(name="success", type="redirectAction", 
31
    		params = {"actionName" , "expert-review"}),
32
    @Result(name="redirect", location="${url}", type="redirect")
33
})
34
 
35
public class ExpertReviewController extends BaseController {
36
 
37
	/**
38
	 * 
39
	 */
40
	private String entityId;
41
	private String entityName;
7312 amit.gupta 42
	private String sourceUrl;
7286 amit.gupta 43
	private String id;
44
	private String index;
45
	private String previous;
46
 
47
	private String createdTimeStamp;
48
	private String source;
49
	private String expertReviewHtml;
50
	private String url;
51
 
52
	private static final long serialVersionUID = 1L;
53
 
54
	public String index(){
55
		return "index";
56
	}
57
 
58
	public String editNew(){
59
		if(!UserManager.getUserManager().canAddRemoveReview(getUsername())){
60
			addActionError("You dont have permission to Create review");
61
			setUrl("/expert-review");
62
			return "redirect";
63
		} else {
64
		return "edit-new";
65
		}
66
	}
67
 
68
	public String show(){
69
		return "show";
70
	}
71
 
72
	public String destroy(){
73
		if(canDelete()) {
74
			try {
75
				CreationUtils.deleteExpertReviews(Long.parseLong(entityId));
76
			} catch (NumberFormatException e) {
77
				// TODO Auto-generated catch block
78
				e.printStackTrace();
79
			} catch (Exception e) {
80
				// TODO Auto-generated catch block
81
				e.printStackTrace();
82
			}
83
		}else {
84
			addActionError("You do not have permission to delete");
85
		}
86
		this.url = "/expert-review";
87
		return "redirect";
88
	}
89
 
90
	public String delete() throws Exception{
91
		if(canAddDelete()) {
92
			try {
93
				CreationUtils.deleteExpertReview(Long.parseLong(entityId), Integer.parseInt(index));
94
			} catch (NumberFormatException e) {
95
				// TODO Auto-generated catch block
96
				e.printStackTrace();
97
			} catch (Exception e) {
98
				// TODO Auto-generated catch block
99
				e.printStackTrace();
100
			}
101
		}else {
102
			addActionError("You do not have permission to delete this review");
103
		}
104
		this.url = "/expert-review/" + entityId;
105
		return "redirect";
106
	}
107
 
108
	public String publish() throws Exception{
109
		Long eId = Long.parseLong(entityId);
110
		if(canPublish()) {
111
			try {
7471 amit.gupta 112
				List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(eId);
113
				int currentIndex = Integer.parseInt(index);
114
				ExpertReview er = expReviewList.remove(currentIndex);
7286 amit.gupta 115
				er.setStatus(ExpertReviewStatus.PUBLISHED);
7471 amit.gupta 116
				expReviewList.add(currentIndex, er);
117
				CreationUtils.storeExpertReview(eId, expReviewList);
7286 amit.gupta 118
				touchEntityState(eId);
119
 
120
			} catch (NumberFormatException e) {
121
				// TODO Auto-generated catch block
122
				e.printStackTrace();
123
			} catch (Exception e) {
124
				// TODO Auto-generated catch block
125
				e.printStackTrace();
126
			}
127
		}else {
128
			addActionError("You cant publish this review");
129
		}
130
		this.url = "/expert-review/" + entityId;
131
		return "redirect";
132
	}
133
 
7471 amit.gupta 134
	public String sendForApproval() throws Exception{
135
		Long eId = Long.parseLong(entityId);
136
		if(canSendForApproval()) {
137
			try {
138
				List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(eId);
139
				int currentIndex = Integer.parseInt(index);
140
				ExpertReview er = expReviewList.remove(currentIndex);
141
				er.setStatus(ExpertReviewStatus.PENDING_APPROVAL);
142
				expReviewList.add(currentIndex, er);
143
				CreationUtils.storeExpertReview(eId, expReviewList);
144
 
145
			} catch (NumberFormatException e) {
146
				// TODO Auto-generated catch block
147
				e.printStackTrace();
148
			} catch (Exception e) {
149
				// TODO Auto-generated catch block
150
				e.printStackTrace();
151
			}
152
		}else {
153
			addActionError("You cant publish this review");
154
		}
155
		this.url = "/expert-review/" + entityId;
156
		return "redirect";
157
	}
158
 
7286 amit.gupta 159
	public String approve() throws Exception{
160
		Long eId = Long.parseLong(entityId);
161
		if(canApprove()) {
162
			try {
7471 amit.gupta 163
				List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(eId);
164
				int currentIndex = Integer.parseInt(index);
165
				ExpertReview er = expReviewList.remove(currentIndex);
7286 amit.gupta 166
				er.setStatus(ExpertReviewStatus.APPROVED);
7471 amit.gupta 167
				er.setApprovedBy(getUsername());
168
				expReviewList.add(currentIndex, er);
169
				CreationUtils.storeExpertReview(eId, expReviewList);
7286 amit.gupta 170
			} catch (NumberFormatException e) {
171
				// TODO Auto-generated catch block
172
				e.printStackTrace();
173
			} catch (Exception e) {
174
				// TODO Auto-generated catch block
175
				e.printStackTrace();
176
			}
177
		}else {
178
			addActionError("You cant approve this review");
179
		}
180
		this.url = "/expert-review/" + entityId;
181
		return "redirect";
182
	}
183
 
184
	private void touchEntityState(Long eId) throws Exception {
185
		EntityState es = CreationUtils.getEntityState(eId);
186
		es.setMerkedReadyOn(new Date());
187
		CreationUtils.updateEntityState(es);
188
	}
189
 
190
	public List<EntityState> getReviews() throws Exception{
191
		List<EntityState> reviewList = new ArrayList<EntityState>();
192
		Set<Long> entitySet = CreationUtils.getExpertReviews().keySet();
193
		for (Long entityId : entitySet){
194
			EntityState es = CreationUtils.getEntityState(entityId);
195
			reviewList.add(es);
196
		}
197
		return reviewList;
198
	}
199
 
200
	public String create(){
201
		if(canCreate()) {
202
			setUrl("/expert-review/" + entityId);
203
			Long entityID = Long.parseLong(entityId);
204
			try {
205
				if(CreationUtils.getEntity(entityID) != null){
206
					Date d  = new Date();
207
					ExpertReview er = new ExpertReview(d);
208
					er.setReviewContent(expertReviewHtml);
7312 amit.gupta 209
					er.setUrl(sourceUrl);
7286 amit.gupta 210
					er.setCreatedBy(getUsername());
211
					er.setSource(source);
212
					er.setStatus(ExpertReviewStatus.CREATED);
213
					if(canApprove(er)) {
214
						er.setStatus(ExpertReviewStatus.APPROVED);
215
					}else {
216
					}
8749 amit.gupta 217
					CreationUtils.storeExpertReview(entityID, Arrays.asList(er));
7286 amit.gupta 218
					return "redirect";
219
				}
220
			} catch (Exception e) {
221
				// TODO Auto-generated catch block
222
				e.printStackTrace();
223
			}
224
		}else {
225
			this.addActionError("You dont have rights to create entity");
226
		}
227
		return "show";
228
 
229
	}
230
	public String getEntityId() {
231
		return entityId;
232
	}
233
 
234
	public void setEntityId(String entityId) {
235
		this.entityId = entityId;
236
	}
237
 
238
	public String getCreatedTimeStamp() {
239
		return createdTimeStamp;
240
	}
241
 
242
	public List<ExpertReview> getExpertReviewByEntity(){
243
		try {
244
			return CreationUtils.getExpertReviewByEntity(Long.parseLong(entityId));
245
		} catch (Exception e) {
246
			e.printStackTrace();
247
			return null;
248
		}
249
	}
250
 
251
	public void setCreatedTimeStamp(String createdTimeStamp) {
252
		this.createdTimeStamp = createdTimeStamp;
253
	}
254
 
255
	public String getSource() {
256
		return source;
257
	}
258
 
259
	public void setSource(String source) {
260
		this.source = source;
261
	}
262
 
263
	public String getExpertReviewHtml() {
264
		return expertReviewHtml;
265
	}
266
 
267
		public void setExpertReviewHtml(String expertReviewHtml) {
268
			this.expertReviewHtml = expertReviewHtml;
269
		}
270
 
271
	public String getUrl() {
272
		return url;
273
	}
274
 
275
	public void setUrl(String url) {
276
		this.url = url;
277
	}
278
 
279
	public void setId(String id) {
280
		this.id = id;
281
		this.entityId = id;
282
		ExpandedEntity expEntity;
283
		try {
284
			expEntity = CreationUtils.getExpandedEntity(Long.parseLong(entityId));
285
			this.entityName = EntityUtils.getProductName(expEntity);
286
		} catch (NumberFormatException e) {
287
			// TODO Auto-generated catch block
288
			e.printStackTrace();
289
		} catch (Exception e) {
290
			// TODO Auto-generated catch block
291
			e.printStackTrace();
292
		}
293
	}
294
 
295
	public String getId() {
296
		return id;
297
	}
298
 
299
	public void setEntityName(String entityName) {
300
		this.entityName = entityName;
301
	}
302
 
303
	public String getEntityName() {
304
		return entityName;
305
	}
306
 
307
	public String move(){
308
		int index = Integer.parseInt(this.index);
309
		int previous = Integer.parseInt(this.previous);
7471 amit.gupta 310
		Long eId = Long.parseLong(entityId);
7286 amit.gupta 311
		try {
7471 amit.gupta 312
			List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(eId);
7286 amit.gupta 313
			expReviewList.add(index, expReviewList.remove(previous));
7471 amit.gupta 314
			CreationUtils.storeExpertReview(eId, expReviewList);
315
			touchEntityState(eId);
7286 amit.gupta 316
		} catch (NumberFormatException e) {
317
			// TODO Auto-generated catch block
318
			e.printStackTrace();
319
		} catch (Exception e) {
320
			// TODO Auto-generated catch block
321
			e.printStackTrace();
322
		}
323
		url="/expert-review/" + id;
324
		return "redirect";
325
	}
7585 amit.gupta 326
 
327
	public String change(){
328
		int index = Integer.parseInt(this.index);
329
		Long eId = Long.parseLong(entityId);
330
		try {
331
			List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(eId);
332
			ExpertReview er = expReviewList.remove(index);
333
			er.setReviewContent(expertReviewHtml);
334
			expReviewList.add(index, er);
335
			CreationUtils.storeExpertReview(eId, expReviewList);
336
			touchEntityState(eId);
337
		} catch (NumberFormatException e) {
338
			// TODO Auto-generated catch block
339
			e.printStackTrace();
340
		} catch (Exception e) {
341
			// TODO Auto-generated catch block
342
			e.printStackTrace();
343
		}
344
		url="/expert-review/" + id;
345
		return "redirect";
346
	}
7286 amit.gupta 347
 
348
	public void setPrevious(String previous) {
349
		this.previous = previous;
350
	}
351
 
352
	public String getPrevious() {
353
		return previous;
354
	}
355
 
356
	public void setIndex(String index) {
357
		this.index = index;
358
	}
359
 
360
	public String getIndex() {
361
		return index;
362
	}
363
 
364
	public boolean canDelete(){
365
		return UserManager.getUserManager().canRemoveReview(getUsername());
366
	}
367
 
368
	public boolean canAddDelete() throws Exception{
369
		return canAddDelete(Integer.parseInt(index));
370
	}
371
 
372
	public boolean canAddDelete(ExpertReview expertReview) throws Exception{
373
		if(expertReview.getCreatedBy().equals(getUsername()) && (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) || 
374
				expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL))) {
375
			return UserManager.getUserManager().canAddRemoveReview(getUsername());
376
		} else { 
377
			return UserManager.getUserManager().canRemoveReview(getUsername()); 
378
		}
379
	}
380
 
381
	public boolean canAddDelete(int index) throws Exception{
382
		Long entityid = Long.parseLong(getEntityId());
383
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
384
		ExpertReview expertReview = er.get(index);
385
		return canAddDelete(expertReview);
386
	}
387
 
388
	public boolean canOrder(){
389
		return UserManager.getUserManager().canOrderReview(getUsername());
390
	}
391
 
392
	public boolean canApprove(int index) throws Exception{
393
		Long entityid = Long.parseLong(getEntityId());
394
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
395
		ExpertReview expertReview = er.get(index);
396
		return canApprove(expertReview);
397
	}
398
 
399
	public boolean canApprove() throws Exception{
400
		return canApprove(Integer.parseInt(index));
401
	}
402
 
403
	public boolean canApprove(ExpertReview expertReview) throws Exception{
404
		if(expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL) || (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) && expertReview.getCreatedBy().equals(getUsername()))) {
405
			return UserManager.getUserManager().canApproveReview(getUsername());
406
		} else {
407
			return false;
408
		}
409
	}
410
 
411
	public boolean canPublish(int index) throws Exception{
412
		Long entityid = Long.parseLong(getEntityId());
413
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
414
		ExpertReview expertReview = er.get(index);
415
		return canPublish(expertReview);
416
	}
417
 
418
	public boolean canPublish() throws Exception{
419
		return canPublish(Integer.parseInt(index));
420
	}
421
 
422
	public boolean canPublish(ExpertReview expertReview) throws Exception{
423
		if(expertReview.getStatus().equals(ExpertReviewStatus.APPROVED)) {
424
			return UserManager.getUserManager().canPublishReview(getUsername());
425
		} else {
426
			return false;
427
		}
428
	}
429
 
7471 amit.gupta 430
 
431
	public boolean canSendForApproval(int index) throws Exception{
432
		Long entityid = Long.parseLong(getEntityId());
433
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
434
		ExpertReview expertReview = er.get(index);
435
		return canSendForApproval(expertReview);
436
	}
437
 
438
	public boolean canSendForApproval() throws Exception{
439
		return canSendForApproval(Integer.parseInt(index));
440
	}
441
 
442
	public boolean canSendForApproval(ExpertReview expertReview){
443
		if (expertReview.getCreatedBy().equals(getUsername())){
444
			return expertReview.getStatus().equals(ExpertReviewStatus.CREATED);
445
		}else {
446
			return false;
447
		}
448
	}
449
 
7286 amit.gupta 450
	public boolean canPhaseOut(ExpertReview expertReview) throws Exception{
451
		if(expertReview.getStatus().equals(ExpertReviewStatus.PHASED_OUT)) {
452
			return UserManager.getUserManager().canPhaseOutReview(getUsername());
453
		} else {
454
			return false;
455
		}
456
	}
457
 
458
	public boolean canCreate(){
459
		return UserManager.getUserManager().canCreateReview(getUsername());
460
	}
461
 
462
	public Set<ExpertReviewSource> getSources() throws Exception {
463
		return CreationUtils.getExpertReviewSources();
464
	}
7312 amit.gupta 465
 
466
	public void setSourceUrl(String sourceUrl) {
467
		this.sourceUrl = sourceUrl;
468
	}
469
 
470
	public String getSourceUrl() {
471
		return sourceUrl;
472
	}
7471 amit.gupta 473
 
7286 amit.gupta 474
}
475