Mercurial > hg > STI-GWT
annotate src/econnect/wp3_3/server/ExportServlet.java @ 60:6f2d2b6f969a CellTable
Fix KML parser alerts
author | Sebastian Kruse <skruse@mpiwg-berlin.mpg.de> |
---|---|
date | Fri, 14 Dec 2012 16:32:55 +0100 |
parents | 175c1eecaf84 |
children |
rev | line source |
---|---|
15
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
1 package econnect.wp3_3.server; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
2 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
3 import java.io.File; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
4 import java.io.FileInputStream; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
5 import java.io.FileNotFoundException; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
6 import java.io.IOException; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
7 import java.io.OutputStream; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
8 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
9 import javax.servlet.ServletException; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
10 import javax.servlet.http.HttpServlet; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
11 import javax.servlet.http.HttpServletRequest; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
12 import javax.servlet.http.HttpServletResponse; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
13 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
14 public class ExportServlet extends HttpServlet { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
15 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
16 private void streamFileTo(HttpServletResponse response, File file) |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
17 throws IOException, FileNotFoundException { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
18 response.setBufferSize(32768); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
19 int bufSize = response.getBufferSize(); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
20 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
21 OutputStream os = response.getOutputStream(); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
22 FileInputStream fis = new FileInputStream(file); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
23 byte[] buffer = new byte[bufSize]; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
24 int bytesRead = 0; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
25 while ((bytesRead = fis.read(buffer)) > 0) { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
26 os.write(buffer, 0, bytesRead); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
27 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
28 os.flush(); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
29 fis.close(); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
30 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
31 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
32 private void prepareResponseFor(HttpServletResponse response, File file) { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
33 StringBuilder type = new StringBuilder("attachment; filename="); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
34 type.append(file.getName()); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
35 response.setContentLength((int) file.length()); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
36 response.setContentType("application/octet-stream"); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
37 response.setHeader("Content-Disposition", type.toString()); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
38 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
39 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
40 public void doGet(HttpServletRequest request, HttpServletResponse response) |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
41 throws ServletException { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
42 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
43 OutputStream out = null; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
44 File exportedFile = null; |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
45 try { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
46 String fileName = request.getParameter("ExportedFilename"); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
47 exportedFile = new File("kmlexport/" + fileName); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
48 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
49 prepareResponseFor(response, exportedFile); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
50 streamFileTo(response, exportedFile); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
51 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
52 } catch (Exception e) { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
53 throw new ServletException("Exception in Export Servlet", e); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
54 } finally { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
55 if (out != null) { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
56 try {out.close();} catch(Exception e){} |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
57 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
58 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
59 if (exportedFile != null) { |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
60 exportedFile.delete(); |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
61 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
62 |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
63 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
64 } |
175c1eecaf84
added export kml feature (not finished)
Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
parents:
diff
changeset
|
65 } |