Subversion Repositories SmartDukaan

Rev

Rev 7312 | 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;
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
	}
325
 
326
	public void setPrevious(String previous) {
327
		this.previous = previous;
328
	}
329
 
330
	public String getPrevious() {
331
		return previous;
332
	}
333
 
334
	public void setIndex(String index) {
335
		this.index = index;
336
	}
337
 
338
	public String getIndex() {
339
		return index;
340
	}
341
 
342
	public boolean canDelete(){
343
		return UserManager.getUserManager().canRemoveReview(getUsername());
344
	}
345
 
346
	public boolean canAddDelete() throws Exception{
347
		return canAddDelete(Integer.parseInt(index));
348
	}
349
 
350
	public boolean canAddDelete(ExpertReview expertReview) throws Exception{
351
		if(expertReview.getCreatedBy().equals(getUsername()) && (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) || 
352
				expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL))) {
353
			return UserManager.getUserManager().canAddRemoveReview(getUsername());
354
		} else { 
355
			return UserManager.getUserManager().canRemoveReview(getUsername()); 
356
		}
357
	}
358
 
359
	public boolean canAddDelete(int index) throws Exception{
360
		Long entityid = Long.parseLong(getEntityId());
361
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
362
		ExpertReview expertReview = er.get(index);
363
		return canAddDelete(expertReview);
364
	}
365
 
366
	public boolean canOrder(){
367
		return UserManager.getUserManager().canOrderReview(getUsername());
368
	}
369
 
370
	public boolean canApprove(int index) throws Exception{
371
		Long entityid = Long.parseLong(getEntityId());
372
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
373
		ExpertReview expertReview = er.get(index);
374
		return canApprove(expertReview);
375
	}
376
 
377
	public boolean canApprove() throws Exception{
378
		return canApprove(Integer.parseInt(index));
379
	}
380
 
381
	public boolean canApprove(ExpertReview expertReview) throws Exception{
382
		if(expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL) || (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) && expertReview.getCreatedBy().equals(getUsername()))) {
383
			return UserManager.getUserManager().canApproveReview(getUsername());
384
		} else {
385
			return false;
386
		}
387
	}
388
 
389
	public boolean canPublish(int index) throws Exception{
390
		Long entityid = Long.parseLong(getEntityId());
391
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
392
		ExpertReview expertReview = er.get(index);
393
		return canPublish(expertReview);
394
	}
395
 
396
	public boolean canPublish() throws Exception{
397
		return canPublish(Integer.parseInt(index));
398
	}
399
 
400
	public boolean canPublish(ExpertReview expertReview) throws Exception{
401
		if(expertReview.getStatus().equals(ExpertReviewStatus.APPROVED)) {
402
			return UserManager.getUserManager().canPublishReview(getUsername());
403
		} else {
404
			return false;
405
		}
406
	}
407
 
7471 amit.gupta 408
 
409
	public boolean canSendForApproval(int index) throws Exception{
410
		Long entityid = Long.parseLong(getEntityId());
411
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
412
		ExpertReview expertReview = er.get(index);
413
		return canSendForApproval(expertReview);
414
	}
415
 
416
	public boolean canSendForApproval() throws Exception{
417
		return canSendForApproval(Integer.parseInt(index));
418
	}
419
 
420
	public boolean canSendForApproval(ExpertReview expertReview){
421
		if (expertReview.getCreatedBy().equals(getUsername())){
422
			return expertReview.getStatus().equals(ExpertReviewStatus.CREATED);
423
		}else {
424
			return false;
425
		}
426
	}
427
 
7286 amit.gupta 428
	public boolean canPhaseOut(ExpertReview expertReview) throws Exception{
429
		if(expertReview.getStatus().equals(ExpertReviewStatus.PHASED_OUT)) {
430
			return UserManager.getUserManager().canPhaseOutReview(getUsername());
431
		} else {
432
			return false;
433
		}
434
	}
435
 
436
	public boolean canCreate(){
437
		return UserManager.getUserManager().canCreateReview(getUsername());
438
	}
439
 
440
	public Set<ExpertReviewSource> getSources() throws Exception {
441
		return CreationUtils.getExpertReviewSources();
442
	}
7312 amit.gupta 443
 
444
	public void setSourceUrl(String sourceUrl) {
445
		this.sourceUrl = sourceUrl;
446
	}
447
 
448
	public String getSourceUrl() {
449
		return sourceUrl;
450
	}
7471 amit.gupta 451
 
7286 amit.gupta 452
}
453