--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/MetroServlet.java 2010/09/13 13:47:32 1041 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/MetroServlet.java 2010/09/13 17:57:31 1042 @@ -1,7 +1,7 @@ package dk.thoerup.traininfoservice.banedk; import java.io.IOException; -import java.net.URL; +import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; @@ -10,64 +10,89 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; -import org.jsoup.select.Elements; +import dk.thoerup.circuitbreaker.CircuitBreakerException; +import dk.thoerup.traininfoservice.Statistics; +import dk.thoerup.traininfoservice.banedk.MetroFetcher.MetroBean; +import dk.thoerup.traininfoservice.banedk.MetroFetcher.MetroEntry; + @WebServlet(urlPatterns={"/MetroServlet"}) public class MetroServlet extends HttpServlet { - + + private static final long serialVersionUID = 1L; + Logger logger = Logger.getLogger(MetroServlet.class.getName()); + + MetroFetcher fetcher = new MetroFetcher(); - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - URL url = new URL("http://www.m.dk/layouts/Metro/Widgets/MetroWidget.ashx?StationId=7&Congestion=true&Application=MyMetro&Expiration=true"); - Document doc = Jsoup.parse(url, 5000); + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - String head = doc.getElementsByClass("metro-widget-headline").get(0).text(); + if (req.getParameter("station") == null) { + resp.sendError(400, "not enough parameters"); + return; + } - logger.info("head: " + head); + //TODO: How should statistics be handled for the metro + //Statistics.getInstance().incrementDepartureLookups(); - Element content = doc.getElementsByClass("metro-widget-content").get(0); - Elements contentElems = content.children(); - - logger.info("tbody"+ content.getElementsByTag("table").size() ); - - - Element departureTable = content.getElementsByTag("table").get(0); - - logger.info(departureTable.text()); - logger.info(departureTable.html()); + int station = Integer.parseInt( req.getParameter("station") ); - Elements rows = departureTable.getElementsByTag("tr"); + MetroBean bean; - for (int i=1; i\n"); + sb.append(" " + metro.head + "\n"); + sb.append(" " + metro.operationInfo + "\n"); + + sb.append(" \n"); + for (MetroEntry entry : metro.entries) { + sb.append(" \n"); + sb.append(" " + entry.metro + "\n"); + sb.append(" " + entry.destination + "\n"); + sb.append(" " + entry.minutes.trim() + "\n"); + sb.append(" \n"); + } + sb.append(" \n"); + + sb.append(" " + metro.plan + "\n"); + + sb.append("\n"); + + + return sb.toString(); } }