Subversion Repositories SmartDukaan

Rev

Rev 7286 | Rev 7471 | 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 {
111
				ExpertReview er = CreationUtils.getExpertReviewByEntity(eId).get(Integer.parseInt(index));
112
				er.setApprovedBy(getUsername());
113
				er.setStatus(ExpertReviewStatus.PUBLISHED);
114
				CreationUtils.storeExpertReview(eId, er);
115
				touchEntityState(eId);
116
 
117
			} catch (NumberFormatException e) {
118
				// TODO Auto-generated catch block
119
				e.printStackTrace();
120
			} catch (Exception e) {
121
				// TODO Auto-generated catch block
122
				e.printStackTrace();
123
			}
124
		}else {
125
			addActionError("You cant publish this review");
126
		}
127
		this.url = "/expert-review/" + entityId;
128
		return "redirect";
129
	}
130
 
131
	public String approve() throws Exception{
132
		Long eId = Long.parseLong(entityId);
133
		if(canApprove()) {
134
			try {
135
				ExpertReview er = CreationUtils.getExpertReviewByEntity(eId).get(Integer.parseInt(index));
136
				er.setStatus(ExpertReviewStatus.APPROVED);
137
 
138
			} catch (NumberFormatException e) {
139
				// TODO Auto-generated catch block
140
				e.printStackTrace();
141
			} catch (Exception e) {
142
				// TODO Auto-generated catch block
143
				e.printStackTrace();
144
			}
145
		}else {
146
			addActionError("You cant approve this review");
147
		}
148
		this.url = "/expert-review/" + entityId;
149
		return "redirect";
150
	}
151
 
152
	private void touchEntityState(Long eId) throws Exception {
153
		EntityState es = CreationUtils.getEntityState(eId);
154
		es.setMerkedReadyOn(new Date());
155
		CreationUtils.updateEntityState(es);
156
	}
157
 
158
	public List<EntityState> getReviews() throws Exception{
159
		List<EntityState> reviewList = new ArrayList<EntityState>();
160
		Set<Long> entitySet = CreationUtils.getExpertReviews().keySet();
161
		for (Long entityId : entitySet){
162
			EntityState es = CreationUtils.getEntityState(entityId);
163
			reviewList.add(es);
164
		}
165
		return reviewList;
166
	}
167
 
168
	public String create(){
169
		if(canCreate()) {
170
			setUrl("/expert-review/" + entityId);
171
			Long entityID = Long.parseLong(entityId);
172
			try {
173
				if(CreationUtils.getEntity(entityID) != null){
174
					Date d  = new Date();
175
					ExpertReview er = new ExpertReview(d);
176
					er.setReviewContent(expertReviewHtml);
7312 amit.gupta 177
					er.setUrl(sourceUrl);
7286 amit.gupta 178
					er.setCreatedBy(getUsername());
179
					er.setSource(source);
180
					er.setStatus(ExpertReviewStatus.CREATED);
181
					if(canApprove(er)) {
182
						er.setStatus(ExpertReviewStatus.APPROVED);
183
					}else {
184
					}
185
					CreationUtils.storeExpertReview(entityID, er);
186
					return "redirect";
187
				}
188
			} catch (Exception e) {
189
				// TODO Auto-generated catch block
190
				e.printStackTrace();
191
			}
192
		}else {
193
			this.addActionError("You dont have rights to create entity");
194
		}
195
		return "show";
196
 
197
	}
198
	public String getEntityId() {
199
		return entityId;
200
	}
201
 
202
	public void setEntityId(String entityId) {
203
		this.entityId = entityId;
204
	}
205
 
206
	public String getCreatedTimeStamp() {
207
		return createdTimeStamp;
208
	}
209
 
210
	public List<ExpertReview> getExpertReviewByEntity(){
211
		try {
212
			return CreationUtils.getExpertReviewByEntity(Long.parseLong(entityId));
213
		} catch (Exception e) {
214
			e.printStackTrace();
215
			return null;
216
		}
217
	}
218
 
219
	public void setCreatedTimeStamp(String createdTimeStamp) {
220
		this.createdTimeStamp = createdTimeStamp;
221
	}
222
 
223
	public String getSource() {
224
		return source;
225
	}
226
 
227
	public void setSource(String source) {
228
		this.source = source;
229
	}
230
 
231
	public String getExpertReviewHtml() {
232
		return expertReviewHtml;
233
	}
234
 
235
		public void setExpertReviewHtml(String expertReviewHtml) {
236
			this.expertReviewHtml = expertReviewHtml;
237
		}
238
 
239
	public String getUrl() {
240
		return url;
241
	}
242
 
243
	public void setUrl(String url) {
244
		this.url = url;
245
	}
246
 
247
	public void setId(String id) {
248
		this.id = id;
249
		this.entityId = id;
250
		ExpandedEntity expEntity;
251
		try {
252
			expEntity = CreationUtils.getExpandedEntity(Long.parseLong(entityId));
253
			this.entityName = EntityUtils.getProductName(expEntity);
254
		} catch (NumberFormatException e) {
255
			// TODO Auto-generated catch block
256
			e.printStackTrace();
257
		} catch (Exception e) {
258
			// TODO Auto-generated catch block
259
			e.printStackTrace();
260
		}
261
	}
262
 
263
	public String getId() {
264
		return id;
265
	}
266
 
267
	public void setEntityName(String entityName) {
268
		this.entityName = entityName;
269
	}
270
 
271
	public String getEntityName() {
272
		return entityName;
273
	}
274
 
275
	public String move(){
276
		int index = Integer.parseInt(this.index);
277
		int previous = Integer.parseInt(this.previous);
278
		try {
279
			List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(Long.parseLong(entityId));
280
			expReviewList.add(index, expReviewList.remove(previous));
281
			CreationUtils.storeExpertReview(Long.parseLong(entityId), expReviewList);
282
		} catch (NumberFormatException e) {
283
			// TODO Auto-generated catch block
284
			e.printStackTrace();
285
		} catch (Exception e) {
286
			// TODO Auto-generated catch block
287
			e.printStackTrace();
288
		}
289
		url="/expert-review/" + id;
290
		return "redirect";
291
	}
292
 
293
	public void setPrevious(String previous) {
294
		this.previous = previous;
295
	}
296
 
297
	public String getPrevious() {
298
		return previous;
299
	}
300
 
301
	public void setIndex(String index) {
302
		this.index = index;
303
	}
304
 
305
	public String getIndex() {
306
		return index;
307
	}
308
 
309
	public boolean canDelete(){
310
		return UserManager.getUserManager().canRemoveReview(getUsername());
311
	}
312
 
313
	public boolean canAddDelete() throws Exception{
314
		return canAddDelete(Integer.parseInt(index));
315
	}
316
 
317
	public boolean canAddDelete(ExpertReview expertReview) throws Exception{
318
		if(expertReview.getCreatedBy().equals(getUsername()) && (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) || 
319
				expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL))) {
320
			return UserManager.getUserManager().canAddRemoveReview(getUsername());
321
		} else { 
322
			return UserManager.getUserManager().canRemoveReview(getUsername()); 
323
		}
324
	}
325
 
326
	public boolean canAddDelete(int index) throws Exception{
327
		Long entityid = Long.parseLong(getEntityId());
328
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
329
		ExpertReview expertReview = er.get(index);
330
		return canAddDelete(expertReview);
331
	}
332
 
333
	public boolean canOrder(){
334
		return UserManager.getUserManager().canOrderReview(getUsername());
335
	}
336
 
337
	public boolean canApprove(int index) throws Exception{
338
		Long entityid = Long.parseLong(getEntityId());
339
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
340
		ExpertReview expertReview = er.get(index);
341
		return canApprove(expertReview);
342
	}
343
 
344
	public boolean canApprove() throws Exception{
345
		return canApprove(Integer.parseInt(index));
346
	}
347
 
348
	public boolean canApprove(ExpertReview expertReview) throws Exception{
349
		if(expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL) || (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) && expertReview.getCreatedBy().equals(getUsername()))) {
350
			return UserManager.getUserManager().canApproveReview(getUsername());
351
		} else {
352
			return false;
353
		}
354
	}
355
 
356
	public boolean canPublish(int index) throws Exception{
357
		Long entityid = Long.parseLong(getEntityId());
358
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
359
		ExpertReview expertReview = er.get(index);
360
		return canPublish(expertReview);
361
	}
362
 
363
	public boolean canPublish() throws Exception{
364
		return canPublish(Integer.parseInt(index));
365
	}
366
 
367
	public boolean canPublish(ExpertReview expertReview) throws Exception{
368
		if(expertReview.getStatus().equals(ExpertReviewStatus.APPROVED)) {
369
			return UserManager.getUserManager().canPublishReview(getUsername());
370
		} else {
371
			return false;
372
		}
373
	}
374
 
375
	public boolean canPhaseOut(ExpertReview expertReview) throws Exception{
376
		if(expertReview.getStatus().equals(ExpertReviewStatus.PHASED_OUT)) {
377
			return UserManager.getUserManager().canPhaseOutReview(getUsername());
378
		} else {
379
			return false;
380
		}
381
	}
382
 
383
	public boolean canCreate(){
384
		return UserManager.getUserManager().canCreateReview(getUsername());
385
	}
386
 
387
	public Set<ExpertReviewSource> getSources() throws Exception {
388
		return CreationUtils.getExpertReviewSources();
389
	}
7312 amit.gupta 390
 
391
	public void setSourceUrl(String sourceUrl) {
392
		this.sourceUrl = sourceUrl;
393
	}
394
 
395
	public String getSourceUrl() {
396
		return sourceUrl;
397
	}
7286 amit.gupta 398
}
399