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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1693 - (show annotations) (download)
Fri Feb 24 19:10:18 2012 UTC (12 years, 2 months ago) by torben
File size: 4052 byte(s)
Probe the found stations for whether there are departure data for the stations
1 package dk.thoerup.traininfoservice.banedk;
2
3 import java.io.IOException;
4 import java.io.PrintWriter;
5 import java.net.URL;
6 import java.util.Map;
7 import java.util.Set;
8 import java.util.TreeMap;
9 import java.util.TreeSet;
10
11 import javax.servlet.ServletException;
12 import javax.servlet.annotation.WebServlet;
13 import javax.servlet.http.HttpServlet;
14 import javax.servlet.http.HttpServletRequest;
15 import javax.servlet.http.HttpServletResponse;
16
17 import org.jsoup.nodes.Document;
18 import org.jsoup.nodes.Element;
19 import org.jsoup.select.Elements;
20
21 import dk.thoerup.android.traininfo.common.StationBean;
22 import dk.thoerup.android.traininfo.common.StationEntry;
23 import dk.thoerup.circuitbreaker.CircuitBreaker;
24 import dk.thoerup.circuitbreaker.CircuitBreakerManager;
25 import dk.thoerup.traininfoservice.db.StationDAO;
26
27
28 @WebServlet(urlPatterns={"/CompareStations"})
29 public class CompareStations extends HttpServlet {
30 private static final long serialVersionUID = 1L;
31
32
33 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
34 CircuitBreaker cb = CircuitBreakerManager.getManager().getCircuitBreaker("banedk");
35
36 JsoupInvocation jsoup = new JsoupInvocation(new URL("http://trafikinfo.bane.dk/Trafikinformation/Stationsliste"), 5000);
37
38 Map<String,String> banedkStations = new TreeMap<String,String>();
39 Set<String> dbStations = new TreeSet<String>();
40
41 StationDAO dao = new StationDAO();
42
43 try {
44 Document doc = (Document) cb.invoke(jsoup);
45
46 Elements tables = doc.getElementsByClass("Oversigt");
47
48 for(Element e : tables) {
49 if (e.tagName().equals("table") ){
50 Elements links = e.getElementsByTag("a");
51 for (Element link : links) {
52 banedkStations.put( link.text(), link.attr("href") );
53 }
54 }
55 }
56
57 StationBean bean = dao.dumpAll();
58 for (StationEntry station : bean.entries) {
59 if (station.isRegional() || station.isStrain()) {
60 dbStations.add(station.getName());
61 }
62 }
63
64 } catch (Exception e) {
65 throw new ServletException(e);
66 }
67
68
69
70 StringBuilder sb = new StringBuilder();
71
72 sb.append("<h2>stations on website not in db</h2>");
73 sb.append("<ul>");
74 Set<String> tmpDbStations = new TreeSet<String>( dbStations );
75 Set<String> tmpBanedkStations = new TreeSet<String>( banedkStations.keySet()) ;
76 tmpBanedkStations.removeAll(tmpDbStations);
77
78
79
80 for(String s : tmpBanedkStations) {
81 String uri = banedkStations.get(s);
82 String disabled = "";
83 String data = hasData(uri);
84
85 try {
86 boolean tmpdisabled = dao.hasDisabledStation(s);
87 if (tmpdisabled == true)
88 disabled = "disabled";
89 } catch (Exception e) {
90 throw new ServletException(e);
91 }
92
93 sb.append( "<li><a href='http://trafikinfo.bane.dk" + uri + "'>" + s + "</a>&nbsp;&nbsp;" + data + " - " + disabled + "</li>" );
94 }
95 sb.append("</ul>");
96
97
98 sb.append("<h2>stations in db not on website </h2>");
99 sb.append("<ul>");
100 tmpDbStations = new TreeSet<String>( dbStations );
101 tmpBanedkStations = new TreeSet<String>( banedkStations.keySet() ) ;
102 tmpDbStations.removeAll(tmpBanedkStations);
103 for(String s : tmpDbStations) {
104 sb.append( "<li>" + s + "</li>" );
105 }
106 sb.append("</ul>");
107
108
109 PrintWriter out = response.getWriter();
110 out.print(sb.toString());
111
112 }
113
114 String hasData(String uri) {
115 String returnVal = "unknown";
116
117 try {
118 CircuitBreaker cb = CircuitBreakerManager.getManager().getCircuitBreaker("banedk");
119
120 JsoupInvocation jsoup = new JsoupInvocation(new URL("http://trafikinfo.bane.dk" + uri), 5000);
121
122 Document doc = (Document) cb.invoke(jsoup);
123
124 Element tabel = doc.getElementById("afgangtabel");
125 if ( tabel != null) {
126 returnVal = "<font color='red'>Data!</font>";
127 } else {
128 returnVal = "";
129 }
130
131 } catch (Exception e) {
132 System.out.println( e.getMessage() );
133 }
134
135 return returnVal;
136 }
137
138
139 }

  ViewVC Help
Powered by ViewVC 1.1.20