Subversion Repositories SmartDukaan

Rev

Rev 8749 | 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
					}
8905 amit.gupta 216
					CreationUtils.storeExpertReview(entityID, er);
7286 amit.gupta 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