Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21739 ashik.ali 1
package com.spice.profitmandi.common.web.util;
2
 
22861 ashik.ali 3
import java.io.File;
4
import java.nio.file.Files;
5
 
21739 ashik.ali 6
import javax.servlet.http.HttpServletRequest;
7
import javax.servlet.http.HttpServletResponse;
8
 
9
import org.springframework.http.HttpStatus;
10
import org.springframework.http.MediaType;
11
import org.springframework.http.ResponseEntity;
12
import org.springframework.stereotype.Component;
13
 
14
import com.fasterxml.jackson.databind.ObjectMapper;
15
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
16
import com.spice.profitmandi.common.model.ProfitMandiResponse;
17
import com.spice.profitmandi.common.model.Response;
18
import com.spice.profitmandi.common.model.ResponseStatus;
19
 
20
@Component
21
public class ResponseSender<T> {
22
 
23
	private final ObjectMapper objectMapper = new ObjectMapper();
24
 
25
	public ResponseEntity<?> ok(Object response){
22987 ashik.ali 26
		return this.genericError(response, HttpStatus.OK, ResponseStatus.SUCCESS);
21739 ashik.ali 27
	}
22924 ashik.ali 28
	public ResponseEntity<?> badRequest(Object response){
22987 ashik.ali 29
		return this.genericError(response, HttpStatus.BAD_REQUEST, ResponseStatus.FAILURE);
22924 ashik.ali 30
	}
31
	public ResponseEntity<?> unauthorized(Object response){
22987 ashik.ali 32
		return this.genericError(response, HttpStatus.UNAUTHORIZED, ResponseStatus.FAILURE);
22924 ashik.ali 33
	}
34
	public ResponseEntity<?> forbidden(Object response){
22987 ashik.ali 35
		return this.genericError(response, HttpStatus.FORBIDDEN, ResponseStatus.FAILURE);
22924 ashik.ali 36
	}
37
	public ResponseEntity<?> notFound(Object response){
22987 ashik.ali 38
		return this.genericError(response, HttpStatus.NOT_FOUND, ResponseStatus.FAILURE);
22924 ashik.ali 39
	}
21739 ashik.ali 40
	public ResponseEntity<?> badRequest(ProfitMandiBusinessException profitMandiBusinessException){
41
		return this.genericError(profitMandiBusinessException, HttpStatus.BAD_REQUEST);
42
	}
43
	public ResponseEntity<?> unauthorized(ProfitMandiBusinessException profitMandiBusinessException){
44
		return this.genericError(profitMandiBusinessException, HttpStatus.UNAUTHORIZED);
45
	}
46
	public ResponseEntity<?> forbidden(ProfitMandiBusinessException profitMandiBusinessException){
47
		return this.genericError(profitMandiBusinessException, HttpStatus.FORBIDDEN);
48
	}
49
	public ResponseEntity<?> notFound(ProfitMandiBusinessException profitMandiBusinessException){
50
		return this.genericError(profitMandiBusinessException, HttpStatus.NOT_FOUND);
51
	}
52
	public ResponseEntity<?> internalServerError(Throwable exception){
22924 ashik.ali 53
		final Response response=new Response("", "", "GE_1007", exception.getMessage());
22987 ashik.ali 54
		return this.genericError(response, HttpStatus.INTERNAL_SERVER_ERROR);
21739 ashik.ali 55
	}
56
 
57
	private ResponseEntity<?> genericError(ProfitMandiBusinessException profitMandiBusinessException, HttpStatus status){
58
		final Response response=new Response(profitMandiBusinessException.getRejectedType(), profitMandiBusinessException.getRejectedValue(),profitMandiBusinessException.getCode(), profitMandiBusinessException.getMessage());
22987 ashik.ali 59
		return this.genericError(response, status);
21739 ashik.ali 60
	}
61
 
22987 ashik.ali 62
	private ResponseEntity<?> genericError(Response response, HttpStatus status){
21739 ashik.ali 63
		final ProfitMandiResponse<Response> profitMandiResponse=new ProfitMandiResponse<Response>(status.toString(), status, ResponseStatus.FAILURE, response);
64
		return new ResponseEntity<>(profitMandiResponse, status);
65
	}
66
 
22987 ashik.ali 67
	private ResponseEntity<?> genericError(Object response, HttpStatus status, ResponseStatus responseStatus){
68
		final ProfitMandiResponse<?> profitMandiResponse = new ProfitMandiResponse<>(status.toString(), status, responseStatus, response);
69
		return new ResponseEntity<>(profitMandiResponse, status);
70
	}
71
 
21739 ashik.ali 72
	public void writeBadRequest(HttpServletRequest request, HttpServletResponse response, Response failedResponse) throws Exception{
73
		this.writeGenericRequest(request, response, failedResponse, HttpStatus.BAD_REQUEST);
74
	}
75
 
76
	public void writeOk(HttpServletRequest request, HttpServletResponse response, Object data) throws Exception{
77
		response.setStatus(HttpStatus.OK.value());
78
		response.setContentType(MediaType.APPLICATION_JSON_VALUE);
79
		response.setCharacterEncoding("UTF-8");
22445 amit.gupta 80
		response.getWriter().println(data);
21739 ashik.ali 81
		response.getWriter().flush();
82
	}
83
 
22813 amit.gupta 84
	public void writeOkFileContentType(HttpServletRequest request, HttpServletResponse response, File file, String contentType) throws Exception{
85
		response.setStatus(HttpStatus.OK.value());
86
		response.setContentType(contentType);
22816 amit.gupta 87
		response.getOutputStream().write(Files.readAllBytes(file.toPath()));
88
		response.getOutputStream().flush();
22813 amit.gupta 89
	}
90
 
21739 ashik.ali 91
	public void writeUnauthorized(HttpServletRequest request, HttpServletResponse response, Response failedResponse) throws Exception{
92
		this.writeGenericRequest(request, response, failedResponse, HttpStatus.UNAUTHORIZED);
93
	}
94
 
95
	public void writeForbidden(HttpServletRequest request, HttpServletResponse response, Response failedResponse) throws Exception{
96
		this.writeGenericRequest(request, response, failedResponse, HttpStatus.FORBIDDEN);
97
	}
98
 
99
	public void writeNotFound(HttpServletRequest request, HttpServletResponse response, Response failedResponse) throws Exception{
100
		this.writeGenericRequest(request, response, failedResponse, HttpStatus.NOT_FOUND);
101
	}
102
	private void writeGenericRequest(HttpServletRequest request, HttpServletResponse response, Response failedResponse, HttpStatus httpStatus) throws Exception{
103
		response.setStatus(httpStatus.value());
104
		response.setContentType(MediaType.APPLICATION_JSON_VALUE);
105
		response.setCharacterEncoding("UTF-8");
106
		final ProfitMandiResponse<?> profitMandiResponse=new ProfitMandiResponse<>(httpStatus.toString(), httpStatus, ResponseStatus.FAILURE, failedResponse);
107
		final Object obj = objectMapper.readValue(objectMapper.writeValueAsString(profitMandiResponse), Object.class);
108
		final String jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
109
		response.getWriter().write(jsonString.toString());
110
		response.getWriter().flush();
111
	}
112
 
113
}