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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2082 - (show annotations) (download)
Mon Nov 25 13:03:57 2013 UTC (10 years, 5 months ago) by torben
File size: 4152 byte(s)
add body and html tags to generated doc
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.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("<html><body>");
84
85 writer.write("<h2>Tritinfo Station compare</h2>");
86 writer.write("<a href='http://tritinfo.pallas.dk/'>http://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 writer.write("</body></html>");
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