--- android/TrainInfoService/src/dk/thoerup/traininfoservice/RequestPlotter.java 2010/06/03 14:28:13 797
+++ android/TrainInfoService/src/dk/thoerup/traininfoservice/RequestPlotter.java 2010/06/07 08:37:29 798
@@ -1,12 +1,14 @@
package dk.thoerup.traininfoservice;
import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
-
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -18,6 +20,9 @@
static final Logger log = Logger.getLogger(RequestPlotter.class.getName());
+ static final String KML = "application/vnd.google-earth.kml";
+ static final String KMZ = "application/vnd.google-earth.kmz";
+
protected String getKml() {
StringBuilder sb = new StringBuilder();
try {
@@ -42,17 +47,18 @@
String toks[] = line.split(" ");
String ip = toks[0];
String time = toks[3].replace("[", "");
- String argpart = toks[6].split("?")[1];
+ String argpart = toks[6].split("\\?")[1];
+
String args[] = argpart.split("&");
String lat = args[0].split("=")[1];
- String lng = args[0].split("=")[1];
+ String lng = args[1].split("=")[1];
- sb.append( " " );
- sb.append( " IP=" + ip + " Time=" + time + "" );
- sb.append( " " + lng + "," + lat + ",0" );
- sb.append( " " );
+ sb.append( " \n" );
+ sb.append( " IP=" + ip + " Time=" + time + "\n" );
+ sb.append( " " + lng + "," + lat + ",0\n" );
+ sb.append( " \n" );
}
@@ -69,8 +75,28 @@
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- resp.setContentType("application/vnd.google-earth.kml");
- resp.getWriter().print( getKml() );
+ String data = getKml();
+
+ if (req.getParameter("zip") != null) {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ ZipOutputStream zip = new ZipOutputStream(baos);
+ zip.putNextEntry( new ZipEntry("trains.kml") );
+ zip.write( data.getBytes() );
+ zip.closeEntry();
+ zip.close();
+
+ byte bytes[] = baos.toByteArray();
+
+ resp.setContentType(KMZ);
+ resp.setContentLength( bytes.length );
+ resp.getOutputStream().write(bytes);
+
+ } else {
+ resp.setContentType(KML);
+ resp.getWriter().print( getKml() );
+ }
}