--- android/TrainInfoService/src/dk/thoerup/traininfoservice/RequestPlotter.java 2011/05/02 18:10:10 1425 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/RequestPlotter.java 2011/07/08 14:56:01 1560 @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import dk.thoerup.genericjavautils.HttpUtil; import dk.thoerup.genericjavautils.TimeoutMap; @WebServlet(urlPatterns={"/RequestPlotter"}) @@ -58,7 +59,7 @@ return fileStr.substring(fileStr.length() - 3).equals(".gz"); } - protected File[] getFiles(int count) { + public static File[] getFiles(int count) { File accessLogDir = new File("/home/app/domain1/logs/access/"); //File accessLogDir = new File("/home/torben/inst/glassfishv3/glassfish/domains/domain1/logs/access/"); @@ -122,6 +123,8 @@ continue; } + + RequestPosition pos = new RequestPosition(); String toks[] = line.split(" "); @@ -129,12 +132,10 @@ pos.time = df.parse( toks[2].replace("\"", "") ); - String argpart = toks[5].split("\\?")[1]; - - String args[] = argpart.split("&"); + Map params = HttpUtil.decodeUri( toks[5] ); - pos.lat = args[0].split("=")[1]; - pos.lng = args[1].split("=")[1]; + pos.lat = params.get("latitude"); + pos.lng = params.get("longitude"); long timediff = now.getTime() - pos.time.getTime(); @@ -269,7 +270,7 @@ sb.append( " \n" ); sb.append( " ").append(current.time).append("\n" ); sb.append( " #").append(color).append("\n" ); - sb.append( " Time=").append(current.time).append("]]>\n" ); + sb.append( " ]]>\n" ); sb.append( " ").append(current.lng).append(",").append(current.lat).append(",0\n" ); sb.append( " \n" ); } @@ -325,10 +326,10 @@ */ - formatPositions(sb, "blue", positions.blue); - formatPositions(sb, "green", positions.green); - formatPositions(sb, "yellow", positions.yellow); formatPositions(sb, "red", positions.red); + formatPositions(sb, "yellow", positions.yellow); + formatPositions(sb, "green", positions.green); + formatPositions(sb, "blue", positions.blue); sb.append( "\n" ); @@ -404,12 +405,16 @@ byte bytes[] = baos.toByteArray(); resp.setContentType(KMZ); - resp.setContentLength( bytes.length ); + resp.setHeader("Content-Disposition", "attachment; filename=Traininfo-requestplotter.kmz"); + resp.setContentLength( bytes.length ); resp.getOutputStream().write(bytes); } else { - resp.setContentType(KML); - resp.getWriter().print( kmlData ); + byte bytes[] = kmlData.getBytes(); + + resp.setContentType(KML); + resp.setContentLength( bytes.length ); + resp.getOutputStream().write(bytes); } } }