Subversion Repositories SmartDukaan

Rev

Rev 6989 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6988 rajveer 1
package in.shop2020.serving.controllers;
2
 
3
 
4
import in.shop2020.model.v1.order.TransactionServiceException;
5
import in.shop2020.thrift.clients.TransactionClient;
6
 
7
import java.io.ByteArrayOutputStream;
8
import java.io.File;
9
import java.io.IOException;
10
import java.nio.ByteBuffer;
11
import java.nio.channels.Channels;
12
import java.nio.channels.WritableByteChannel;
13
import java.util.ArrayList;
14
import java.util.Calendar;
15
import java.util.Date;
16
import java.util.GregorianCalendar;
17
import java.util.HashMap;
18
import java.util.List;
19
import java.util.Map;
20
 
21
import javax.servlet.ServletContext;
22
import javax.servlet.ServletOutputStream;
23
import javax.servlet.http.HttpServletRequest;
24
import javax.servlet.http.HttpServletResponse;
25
import javax.servlet.http.HttpSession;
26
 
27
import org.apache.struts2.interceptor.ServletRequestAware;
28
import org.apache.struts2.interceptor.ServletResponseAware;
29
import org.apache.struts2.util.ServletContextAware;
30
import org.apache.thrift.TException;
31
import org.apache.thrift.transport.TTransportException;
32
import org.slf4j.Logger;
33
import org.slf4j.LoggerFactory;
34
 
35
@SuppressWarnings("serial")
36
@InterceptorRefs({
37
    @InterceptorRef("myDefault"),
38
    @InterceptorRef("login")
39
})
40
 
41
/**
42
 * 
43
 * @author Rajveer
44
 * 
45
 */
46
 
47
public class InvoiceController implements ServletResponseAware,
48
		ServletRequestAware, ServletContextAware {
49
 
50
    private static Logger logger = LoggerFactory.getLogger(InvoiceController.class);
51
    private ServletContext context;
52
	private HttpServletRequest request;
53
	private HttpServletResponse response;
54
	private HttpSession session;
55
 
56
	private String id;
57
	private String orderId;
58
 
59
    private String errorMsg = "";
60
 
61
	public String show(){
62
		orderId = id;
63
		response.setContentType("application/pdf");
64
        response.setHeader("Content-disposition", "inline; filename=invoice-"+orderId+".pdf" );
65
 
66
        ServletOutputStream sos;
67
        try {
68
        	TransactionClient tc = new TransactionClient("support_transaction_service_server_host", "transaction_service_server_port");
69
        	ByteBuffer bb = tc.getClient().retrieveInvoice(Long.parseLong(orderId));
70
        	ByteArrayOutputStream baos;
71
			WritableByteChannel channel = Channels.newChannel(baos);
72
			channel.write(bb);
73
        	sos = response.getOutputStream();
74
            baos.writeTo(sos);
75
            sos.flush();
76
        } catch (Exception e) {
77
        	errorMsg = "Invoice not found";
78
            logger.error("Encountered error while sending invoice response: ", e);
79
        }
80
        return "show";
81
	}
82
 
83
 
84
	@Override
85
	public void setServletContext(ServletContext context) {
86
		this.context = context;
87
	}
88
 
89
	@Override
90
	public void setServletResponse(HttpServletResponse response) {
91
		this.response  = response;
92
	}
93
 
94
	@Override
95
	public void setServletRequest(HttpServletRequest request) {
96
		this.request = request;
97
		this.session = request.getSession();
98
	}
99
 
100
	public String getId(){
101
		return id;
102
	}
103
 
104
	public void setId(String id){
105
		this.id = id;
106
	}
107
 
108
	public String getServletContextPath(){
109
		return context.getContextPath();
110
	}
111
 
112
 
113
    public String getErrorMsg() {
114
        return errorMsg;
115
    }
116
 
117
    public void setErrorMsg(String errorMsg) {
118
        this.errorMsg = errorMsg;
119
    }
120
}