Subversion Repositories SmartDukaan

Rev

Rev 21976 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.dtrapi.controllers;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

import in.shop2020.dtrapi.utils.PdfGenerator;
 
@Result(
    name = "success", 
    type = "stream", 
    params = { 
        "contentType", "${type}", 
        "inputName", "${stream}", 
        "bufferSize", "1024", 
        "contentDisposition", "attachment;filename=\"${filename}\""
    }
)
public class FileDisplayController extends ActionSupport implements ServletResponseAware{
 
    /**
         * 
         */
        private static final long serialVersionUID = 1L;
        //private String type = "application/pdf";
    private String filename;
    private InputStream stream;
    //private HttpServletRequest request;
    private HttpServletResponse response;
        private int id;
 
    //@org.apache.struts2.convention.annotation.Action(value = "/fofoDetailPdf", params="fofoId")
    public String show() throws Exception {
        //int fofoId = Integer.parseInt(request.getParameter("fofoId"));
        //filename = "myimage.jpg";
        //File img = new File("/path/to/image/image.jpg");
        OutputStream outputStream = response.getOutputStream();
        PdfGenerator.generateAndWrite(outputStream, id);
        stream = this.toInputStream(outputStream);
        
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Content-Disposition", "attachment;filename=\"fofoDetail.pdf\"");
        response.setContentType("application/pdf");
        response.setContentLength(((ByteArrayOutputStream)outputStream).size());
        
        return Action.SUCCESS;
    }
    
    private ByteArrayInputStream toInputStream(OutputStream outputStream){
        ByteArrayOutputStream buffer = (ByteArrayOutputStream) outputStream;
        byte[] bytes = buffer.toByteArray();
        ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
        return inputStream;
    }
    /*private String getType() {
        return this.type;
    }*/
     
    private String getFilename() {
        return this.filename;
    }
     
    private InputStream getStream() {
        return this.stream;
    }

        /*@Override
        public void setServletRequest(HttpServletRequest arg0) {
                this.request = arg0;
        }*/
        
        @Override
        public void setServletResponse(HttpServletResponse arg0) {
                this.response = arg0;
        }

        public int getId() {
                return id;
        }

        public void setId(int id) {
                this.id = id;
        }
}