Subversion Repositories SmartDukaan

Rev

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