view src/econnect/wp3_3/server/ExportServlet.java @ 15:175c1eecaf84

added export kml feature (not finished)
author Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
date Mon, 26 Nov 2012 14:40:43 +0100
parents
children
line wrap: on
line source

package econnect.wp3_3.server;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ExportServlet extends HttpServlet {
	
	   private void streamFileTo(HttpServletResponse response, File file)
	           throws IOException, FileNotFoundException {
		   response.setBufferSize(32768); 
	       int bufSize = response.getBufferSize(); 

	       OutputStream os = response.getOutputStream();
	       FileInputStream fis = new FileInputStream(file);
	       byte[] buffer = new byte[bufSize];
	       int bytesRead = 0;
	       while ((bytesRead = fis.read(buffer)) > 0) {
	           os.write(buffer, 0, bytesRead);
	       }
	       os.flush();
	       fis.close();
	   }

	   private void prepareResponseFor(HttpServletResponse response, File file) {
	       StringBuilder type = new StringBuilder("attachment; filename=");
	       type.append(file.getName());
	       response.setContentLength((int) file.length());
	       response.setContentType("application/octet-stream");
	       response.setHeader("Content-Disposition", type.toString());
	   }
	   
	   public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException {

        OutputStream out = null;
        File exportedFile = null;
        try {
            String fileName = request.getParameter("ExportedFilename");
            exportedFile = new File("kmlexport/" + fileName);
            
            prepareResponseFor(response, exportedFile);
            streamFileTo(response, exportedFile);
            
        } catch (Exception e) {
            throw new ServletException("Exception in Export Servlet", e);
        } finally {
            if (out != null) {
            	try {out.close();} catch(Exception e){}
            }
            
            if (exportedFile != null) {
                exportedFile.delete();
            }
            
        }
    }
}