/[projects]/android/TrainInfoService/src/dk/thoerup/traininfoservice/RequestPlotter.java
ViewVC logotype

Contents of /android/TrainInfoService/src/dk/thoerup/traininfoservice/RequestPlotter.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 798 - (show annotations) (download)
Mon Jun 7 08:37:29 2010 UTC (13 years, 11 months ago) by torben
File size: 2994 byte(s)
Parser now works correctly
enable kmz (zipped) output
1 package dk.thoerup.traininfoservice;
2
3 import java.io.BufferedReader;
4 import java.io.ByteArrayOutputStream;
5 import java.io.FileInputStream;
6 import java.io.IOException;
7 import java.io.InputStreamReader;
8 import java.util.logging.Level;
9 import java.util.logging.Logger;
10 import java.util.zip.ZipEntry;
11 import java.util.zip.ZipOutputStream;
12
13 import javax.servlet.ServletException;
14 import javax.servlet.http.HttpServlet;
15 import javax.servlet.http.HttpServletRequest;
16 import javax.servlet.http.HttpServletResponse;
17
18 public class RequestPlotter extends HttpServlet {
19 private static final long serialVersionUID = 1L;
20
21 static final Logger log = Logger.getLogger(RequestPlotter.class.getName());
22
23 static final String KML = "application/vnd.google-earth.kml";
24 static final String KMZ = "application/vnd.google-earth.kmz";
25
26 protected String getKml() {
27 StringBuilder sb = new StringBuilder();
28 try {
29 FileInputStream fis = new FileInputStream("/var/log/apache2/app_access.log");
30 BufferedReader in = new BufferedReader( new InputStreamReader(fis) );
31
32
33 sb.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" );
34 sb.append( "<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n" );
35 sb.append( "<Document>\n" );
36
37 String line;
38 while ( (line=in.readLine()) != null) {
39 if (line.indexOf("LocateStation") == -1 ){
40 continue;
41 }
42
43 if (line.indexOf("latitude") == -1 ) {
44 continue;
45 }
46
47 String toks[] = line.split(" ");
48 String ip = toks[0];
49 String time = toks[3].replace("[", "");
50 String argpart = toks[6].split("\\?")[1];
51
52
53 String args[] = argpart.split("&");
54
55 String lat = args[0].split("=")[1];
56 String lng = args[1].split("=")[1];
57
58 sb.append( " <Placemark>\n" );
59 sb.append( " <description>IP=" + ip + " Time=" + time + "</description>\n" );
60 sb.append( " <Point><coordinates>" + lng + "," + lat + ",0</coordinates></Point>\n" );
61 sb.append( " </Placemark>\n" );
62
63 }
64
65 sb.append( "</Document>\n" );
66 sb.append( "</kml>\n" );
67
68 } catch (Exception e) {
69 sb.append("<!-- error -->");
70 log.log(Level.SEVERE, "getKml()", e);
71 }
72
73 return sb.toString();
74 }
75
76 @Override
77 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
78 String data = getKml();
79
80 if (req.getParameter("zip") != null) {
81
82 ByteArrayOutputStream baos = new ByteArrayOutputStream();
83
84 ZipOutputStream zip = new ZipOutputStream(baos);
85 zip.putNextEntry( new ZipEntry("trains.kml") );
86 zip.write( data.getBytes() );
87 zip.closeEntry();
88 zip.close();
89
90 byte bytes[] = baos.toByteArray();
91
92 resp.setContentType(KMZ);
93 resp.setContentLength( bytes.length );
94 resp.getOutputStream().write(bytes);
95
96 } else {
97 resp.setContentType(KML);
98 resp.getWriter().print( getKml() );
99 }
100 }
101
102
103
104 }

  ViewVC Help
Powered by ViewVC 1.1.20