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

Contents of /android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/TimetableFetcher.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 350 - (show annotations) (download)
Mon Sep 28 21:33:24 2009 UTC (14 years, 7 months ago) by torben
File size: 2443 byte(s)
Added code for extracting a single train's timetable from bane.dk
1 package dk.thoerup.traininfoservice.banedk;
2
3
4 import java.io.IOException;
5 import java.net.URL;
6 import java.util.ArrayList;
7 import java.util.List;
8 import java.util.logging.Logger;
9
10 import com.gargoylesoftware.htmlunit.*;
11 import com.gargoylesoftware.htmlunit.html.*;
12
13 public class TimetableFetcher {
14
15 class NullRefreshHandler implements RefreshHandler {
16 public void handleRefresh(Page arg0, URL arg1, int arg2) throws IOException {
17 }
18
19 }
20
21 Logger logger = Logger.getLogger(TimetableFetcher.class.getName());
22
23 List<TimetableBean> lookupTimetable(String trainID, String type) throws Exception {
24 List<TimetableBean> timetableList = new ArrayList<TimetableBean>();
25
26 String url = "http://www.bane.dk/visRute.asp?W=" + type + "&TogNr=" + trainID + "&artikelId=4276";
27
28 logger.warning(url);
29
30 final WebClient webClient = new WebClient();
31 webClient.setTimeout(1000);
32 webClient.setJavaScriptEnabled(false);
33 webClient.setRefreshHandler( new NullRefreshHandler() );
34 webClient.setCssEnabled(false);
35
36
37 final HtmlPage page = webClient.getPage(url);
38
39
40 boolean currentStation = false;
41 boolean currentStationSaved = false;
42
43 List<HtmlElement> tables = page.getDocumentElement().getElementsByAttribute("table", "class", "Rute");
44 if (tables.size() == 1) {
45 HtmlElement timetable = tables.get(0);
46 DomNodeList<HtmlElement> rows = timetable.getElementsByTagName("tr");
47
48 for (int i=0; i<rows.size(); i++) {
49 if (i==0) //First row is column headers
50 continue;
51
52
53 HtmlElement row = rows.get(i);
54 DomNodeList<HtmlElement> fields = row.getElementsByTagName("td");
55
56 if (currentStationSaved == false && fields.get(0).getAttribute("class").equalsIgnoreCase("Tidsstreg")) {
57 currentStation = true;
58 continue;
59 }
60
61 TimetableBean bean = new TimetableBean();
62 bean.setStation( fields.get(0).asText() );
63 bean.setArrival( fields.get(1).asText() );
64 bean.setDeparture( fields.get(2).asText() );
65
66 if (currentStation == true && currentStationSaved == false ) {
67 bean.setCurrent(currentStation);
68 currentStationSaved = true;
69 }
70
71 timetableList.add(bean);
72
73 }
74
75 } else {
76 logger.warning("No time table found, trainID=" + trainID + " type=" + type);
77 }
78
79 return timetableList;
80 }
81
82 }

  ViewVC Help
Powered by ViewVC 1.1.20