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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 798 - (hide 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 torben 795 package dk.thoerup.traininfoservice;
2    
3     import java.io.BufferedReader;
4 torben 798 import java.io.ByteArrayOutputStream;
5 torben 795 import java.io.FileInputStream;
6     import java.io.IOException;
7     import java.io.InputStreamReader;
8 torben 796 import java.util.logging.Level;
9     import java.util.logging.Logger;
10 torben 798 import java.util.zip.ZipEntry;
11     import java.util.zip.ZipOutputStream;
12 torben 795
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 torben 796 static final Logger log = Logger.getLogger(RequestPlotter.class.getName());
22    
23 torben 798 static final String KML = "application/vnd.google-earth.kml";
24     static final String KMZ = "application/vnd.google-earth.kmz";
25    
26 torben 795 protected String getKml() {
27     StringBuilder sb = new StringBuilder();
28     try {
29 torben 797 FileInputStream fis = new FileInputStream("/var/log/apache2/app_access.log");
30 torben 795 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 torben 798 String argpart = toks[6].split("\\?")[1];
51    
52 torben 795
53     String args[] = argpart.split("&");
54    
55     String lat = args[0].split("=")[1];
56 torben 798 String lng = args[1].split("=")[1];
57 torben 795
58 torben 798 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 torben 795
63     }
64    
65     sb.append( "</Document>\n" );
66     sb.append( "</kml>\n" );
67    
68     } catch (Exception e) {
69     sb.append("<!-- error -->");
70 torben 796 log.log(Level.SEVERE, "getKml()", e);
71 torben 795 }
72    
73     return sb.toString();
74     }
75    
76     @Override
77     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
78 torben 798 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 torben 795 }
101    
102    
103    
104     }

  ViewVC Help
Powered by ViewVC 1.1.20