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

  ViewVC Help
Powered by ViewVC 1.1.20