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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 350 - (hide annotations) (download)
Mon Sep 28 21:33:24 2009 UTC (14 years, 8 months ago) by torben
File size: 2443 byte(s)
Added code for extracting a single train's timetable from bane.dk
1 torben 350 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