Mercurial > hg > STI-GWT
annotate src/econnect/wp3_3/server/ExportServlet.java @ 40:20eb7596d466 CellTable
Preparation for a switch to a CellTable.
This is work in progress.
| author | Sebastian Kruse <skruse@mpiwg-berlin.mpg.de> |
|---|---|
| date | Thu, 06 Dec 2012 18:05:39 +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 } |
