Subversion Repositories SmartDukaan

Rev

Rev 6988 | Rev 6991 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;


import in.shop2020.model.v1.order.TransactionServiceException;
import in.shop2020.thrift.clients.TransactionClient;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings("serial")
@InterceptorRefs({
    @InterceptorRef("myDefault"),
    @InterceptorRef("login")
})

/**
 * 
 * @author Rajveer
 * 
 */

public class InvoiceController implements ServletResponseAware,
                ServletRequestAware, ServletContextAware {
    
    private static Logger logger = LoggerFactory.getLogger(InvoiceController.class);
    private ServletContext context;
        private HttpServletRequest request;
        private HttpServletResponse response;
        private HttpSession session;

        private String id;
        private String orderId;
    
    private String errorMsg = "";

        public String show(){
                orderId = id;
                response.setContentType("application/pdf");
        response.setHeader("Content-disposition", "inline; filename=invoice-"+orderId+".pdf" );
        
        ServletOutputStream sos;
        try {
                TransactionClient tc = new TransactionClient("support_transaction_service_server_host", "transaction_service_server_port");
                ByteBuffer bb = tc.getClient().retrieveInvoice(Long.parseLong(orderId));
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        WritableByteChannel channel = Channels.newChannel(baos);
                        channel.write(bb);
                sos = response.getOutputStream();
            baos.writeTo(sos);
            sos.flush();
        } catch (Exception e) {
                errorMsg = "Invoice not found";
            logger.error("Encountered error while sending invoice response: ", e);
        }
        return "show";
        }
        
                        
        @Override
        public void setServletContext(ServletContext context) {
                this.context = context;
        }
        
        @Override
        public void setServletResponse(HttpServletResponse response) {
                this.response  = response;
        }

        @Override
        public void setServletRequest(HttpServletRequest request) {
                this.request = request;
                this.session = request.getSession();
        }

        public String getId(){
                return id;
        }
        
        public void setId(String id){
                this.id = id;
        }
        
        public String getServletContextPath(){
                return context.getContextPath();
        }


    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
}