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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1693 - (hide annotations) (download)
Fri Feb 24 19:10:18 2012 UTC (12 years, 3 months ago) by torben
File size: 4052 byte(s)
Probe the found stations for whether there are departure data for the stations
1 torben 1449 package dk.thoerup.traininfoservice.banedk;
2    
3     import java.io.IOException;
4     import java.io.PrintWriter;
5     import java.net.URL;
6 torben 1451 import java.util.Map;
7 torben 1450 import java.util.Set;
8 torben 1451 import java.util.TreeMap;
9 torben 1450 import java.util.TreeSet;
10 torben 1449
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 torben 1451 Map<String,String> banedkStations = new TreeMap<String,String>();
39 torben 1450 Set<String> dbStations = new TreeSet<String>();
40 torben 1449
41 torben 1692 StationDAO dao = new StationDAO();
42 torben 1451
43 torben 1449 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 torben 1451 for (Element link : links) {
52     banedkStations.put( link.text(), link.attr("href") );
53 torben 1449 }
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 torben 1450 Set<String> tmpDbStations = new TreeSet<String>( dbStations );
75 torben 1451 Set<String> tmpBanedkStations = new TreeSet<String>( banedkStations.keySet()) ;
76 torben 1449 tmpBanedkStations.removeAll(tmpDbStations);
77 torben 1692
78    
79    
80 torben 1449 for(String s : tmpBanedkStations) {
81 torben 1451 String uri = banedkStations.get(s);
82 torben 1692 String disabled = "";
83 torben 1693 String data = hasData(uri);
84    
85 torben 1692 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 torben 1693 sb.append( "<li><a href='http://trafikinfo.bane.dk" + uri + "'>" + s + "</a>&nbsp;&nbsp;" + data + " - " + disabled + "</li>" );
94 torben 1449 }
95     sb.append("</ul>");
96    
97    
98     sb.append("<h2>stations in db not on website </h2>");
99     sb.append("<ul>");
100 torben 1450 tmpDbStations = new TreeSet<String>( dbStations );
101 torben 1451 tmpBanedkStations = new TreeSet<String>( banedkStations.keySet() ) ;
102 torben 1449 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 torben 1693 }
113    
114     String hasData(String uri) {
115     String returnVal = "unknown";
116 torben 1449
117 torben 1693 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 torben 1449
135 torben 1693 return returnVal;
136 torben 1449 }
137    
138 torben 1692
139 torben 1449 }

  ViewVC Help
Powered by ViewVC 1.1.20