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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2079 - (hide annotations) (download)
Sat Nov 23 11:47:43 2013 UTC (10 years, 6 months ago) by torben
File size: 4124 byte(s)
Add tritinfo station comparator
1 torben 2079 package dk.thoerup.traininfoservice.banedk;
2    
3     import java.io.IOException;
4     import java.io.PrintWriter;
5     import java.net.URL;
6     import java.sql.SQLException;
7     import java.util.ArrayList;
8     import java.util.HashMap;
9     import java.util.List;
10     import java.util.Map;
11     import java.util.logging.Logger;
12    
13     import javax.servlet.ServletException;
14     import javax.servlet.annotation.WebServlet;
15     import javax.servlet.http.HttpServlet;
16     import javax.servlet.http.HttpServletRequest;
17     import javax.servlet.http.HttpServletResponse;
18    
19     import org.jsoup.nodes.Element;
20     import org.jsoup.select.Elements;
21    
22     import dk.thoerup.android.traininfo.common.StationBean;
23     import dk.thoerup.android.traininfo.common.StationEntry;
24     import dk.thoerup.circuitbreaker.CircuitBreaker;
25     import dk.thoerup.circuitbreaker.CircuitBreakerManager;
26     import dk.thoerup.traininfoservice.db.StationDAO;
27    
28    
29     @WebServlet(urlPatterns={"/CompareStationsTritinfo"})
30     public class CompareStationsTritinfo extends HttpServlet {
31    
32     private static final long serialVersionUID = 1L;
33    
34     Logger logger = Logger.getLogger( CompareStationsTritinfo.class.getName() );
35    
36     @Override
37     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
38     String uri = "http://tritinfo.pallas.dk/webtavle?page=listcontent";
39     logger.fine("URI:" + uri);
40    
41    
42     JsoupInvocation wrapper = new JsoupInvocation( new URL(uri), 5000 );
43     CircuitBreaker breaker = CircuitBreakerManager.getManager().getCircuitBreaker("tritinfo");
44     try {
45    
46     Map<Integer,String> tritStations = new HashMap<Integer,String>();
47    
48     PrintWriter writer = resp.getWriter();
49     Element page = (Element) breaker.invoke(wrapper);
50    
51     Elements stationlistElements = page.getElementsByClass("stationlist");
52     Element stationlist = stationlistElements.get(0);
53    
54     Elements links = stationlist.getElementsByTag("a");
55    
56     for(Element link : links ) {
57     String name = link.text();
58    
59     String href = link.attr("href");
60     String hrefParts[] = href.split("=");
61     String idStr = hrefParts[2];
62    
63     int id = Integer.parseInt(idStr);
64    
65    
66    
67     tritStations.put(id, name);
68    
69    
70     //writer.write(name + "=" + id + "\n");
71     }
72    
73    
74     //writer.write("" + stationlist.html());
75    
76     //writer.write("\nDump:" + tritStations.toString() );
77    
78    
79     Map<Integer,StationEntry> dbStations = getDbTritStations();
80    
81    
82     ///////
83     // Data is collected now compare
84    
85     writer.write("<h2>Tritinfo Station compare</h2>");
86     writer.write("<a href='tritinfo.pallas.dk/'>tritinfo.pallas.dk/</a>");
87    
88     writer.write("<h3>Stations on web not in DB</h3>");
89     writer.write("<ul>");
90     for (Integer webId : tritStations.keySet()) {
91     if ( !dbStations.containsKey(webId)) {
92     String webName = tritStations.get(webId);
93     writer.write("<li>" + webName + " : " + webId + "</li>");
94     }
95    
96    
97     }
98     writer.write("</ul>");
99    
100     ////////////
101     writer.write("<h3>Stations in db not on web</h3>");
102     writer.write("<ul>");
103    
104     for (Integer dbId : dbStations.keySet()) {
105     if (! tritStations.containsKey(dbId)) {
106     StationEntry dbName = dbStations.get(dbId);
107    
108     writer.write("<li>" + dbName.getName() + " : " + dbId + "</li>");
109    
110     }
111     }
112    
113     writer.write("</ul>");
114    
115    
116    
117    
118    
119    
120    
121     } catch (Exception e) {
122     throw new ServletException("JSoup failed", e);
123     }
124    
125     }
126    
127    
128     /*
129     * Fetch a list of all DB station entries with a tritinfo ID
130     */
131     Map<Integer, StationEntry> getDbTritStations() throws SQLException {
132    
133     Map<Integer, StationEntry> result = new HashMap<Integer, StationEntry>();
134    
135     StationDAO dao = new StationDAO();
136     StationBean allStations = dao.dumpAll();
137     for(StationEntry entry : allStations.entries) {
138     if (entry.getTritStation() != -1) {
139     result.put( entry.getTritStation(), entry);
140     }
141     }
142    
143     return result;
144     }
145    
146    
147     }

  ViewVC Help
Powered by ViewVC 1.1.20