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

Contents of /android/TrainInfoService/src/dk/thoerup/traininfoservice/DumpResultSet.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 958 - (show annotations) (download)
Mon Jul 5 09:48:06 2010 UTC (13 years, 10 months ago) by torben
File size: 6086 byte(s)
Switch to servlet3.0 annotations
1 package dk.thoerup.traininfoservice;
2
3 import java.io.IOException;
4 import java.sql.Connection;
5 import java.sql.ResultSet;
6 import java.sql.ResultSetMetaData;
7 import java.sql.Statement;
8 import java.util.Date;
9
10 import javax.servlet.ServletException;
11 import javax.servlet.annotation.WebServlet;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15
16 @WebServlet(urlPatterns={"/DumpResultSet"})
17 public class DumpResultSet extends HttpServlet {
18
19 public DumpResultSet() {
20 super();
21 }
22
23
24 private static final long serialVersionUID = 1L;
25
26 String dumpResultset(String sql) throws ServletException {
27 StringBuilder sb = new StringBuilder();
28
29 Connection conn = null;
30 Statement stmt = null;
31 ResultSet rs = null;
32
33 try {
34 int count = 0;
35
36 conn = DBConnection.getConnection();
37 stmt = conn.createStatement();
38
39 rs = stmt.executeQuery(sql);
40 ResultSetMetaData meta = rs.getMetaData();
41 int columns = meta.getColumnCount();
42
43 sb.append("<h2>").append(sql).append("</h2>");
44 sb.append("<table border=1><tr>");
45 for (int i=1; i<=columns; i++) {
46 sb.append("<th>").append( meta.getColumnName(i)).append("</th>");
47 }
48 sb.append("</tr>\n\n");
49 while(rs.next())
50 {
51 count++;
52
53 sb.append("<tr>");
54 for (int i=1; i<=columns; i++) {
55 String value = rs.getString(i);
56 if (value != null) {
57 value = value.replace("\n", "<br>");
58 }
59 sb.append("<td>").append( value ).append("</td>");
60 }
61 sb.append("</tr>\n");
62 }
63 sb.append("</table>");
64 sb.append("Rowcount: ").append(count).append("<br>\n");
65 sb.append("Generated: ").append(new Date()).append("<br>\n");
66 } catch (Exception e) {
67 throw new ServletException(e);
68 } finally {
69
70 try {
71 if (rs != null && !rs.isClosed())
72 rs.close();
73 } catch (Exception e) {}
74 try {
75 if (stmt != null && !stmt.isClosed())
76 stmt.close();
77 } catch (Exception e) {}
78
79 try {
80 if (conn != null && !conn.isClosed())
81 conn.close();
82 } catch (Exception e) {}
83 }
84 return sb.toString();
85 }
86
87 String dumpUpdate(String query) throws ServletException {
88 StringBuilder sb = new StringBuilder();
89
90 Connection conn = null;
91 Statement stmt = null;
92 try {
93 conn = DBConnection.getConnection();
94 stmt = conn.createStatement();
95 stmt.execute(query);
96 int count = stmt.getUpdateCount();
97
98 sb.append("<h2>").append(query).append("</h2>");
99 sb.append("Affected rows: ").append(count);
100 } catch (Exception e) {
101 throw new ServletException(e);
102 } finally {
103 try {
104 if (stmt != null && !stmt.isClosed())
105 stmt.close();
106 } catch (Exception e) {}
107
108 try {
109 if (conn != null && !conn.isClosed())
110 conn.close();
111 } catch (Exception e) {}
112 }
113
114 return sb.toString();
115 }
116
117
118
119 @Override
120 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
121 String dump = req.getParameter("dump");
122
123 String res = null;
124
125 if (dump != null) {
126 if (dump.equals("all")) {
127 res = dumpResultset("SELECT * FROM trainstations ORDER BY id");
128 } else if (dump.equals("coords")) {
129 res = dumpResultset("SELECT * FROM trainstations WHERE latitude IS NULL OR longitude IS NULL ORDER BY id");
130 } else if (dump.equals("duplicate")) {
131 res = dumpResultset("SELECT name,count(*) FROM trainstations GROUP BY name HAVING count(*) > 1");
132 } else if (dump.equals("allfull")) {
133 res = dumpResultset("select *, " +
134 "'<a href=\"http://maps.google.dk/?q=' ||latitude || ',' || longitude || '\">Maps</a>' AS maps, " +
135 "'<a href=\"http://www.bane.dk/visStation.asp?ArtikelID=4275&W=FJRN&S=' || stationcode_fjrn || '\">Bane.dk Fjern</a>' as banedk1, " +
136 "'<a href=\"http://www.bane.dk/visStation.asp?ArtikelID=4275&W=S2&S=' || stationcode_stog || '\">Bane.dk stog</a>' as banedk2 " +
137 "FROM trainstations ORDER BY id");
138 } else if (dump.equals("disabled")) {
139 res = dumpResultset("SELECT * FROM trainstations WHERE enabled = false ORDER BY id");
140 } else if (dump.equals("noaddress")) {
141 res = dumpResultset("SELECT * FROM trainstations WHERE address IS NULL or address = '' ");
142 } else if (dump.equals("aliases")) {
143 res = dumpResultset("SELECT * FROM trainstations WHERE aliases IS NOT null");
144 } else if (dump.equals("updatecoords")) {
145 res = dumpUpdate("UPDATE trainstations SET earth_coord = ll_to_earth(latitude,longitude)");
146 } else if (dump.equals("trainstatistics")) {
147 res = dumpResultset("SELECT statisticsdate, location+name+favorites AS station, location,name,favorites,departure,depcache,deperror,timetable,timecache,timeerror " +
148 "FROM trainstatistics ORDER BY statisticsdate DESC");
149 } else if (dump.equals("trainstatistics_avg")) {
150 res = dumpResultset("SELECT count(*) AS count, round(avg(location+name+favorites),1) AS station, round(avg(location),1) as location, round(avg(name),1) as name, round(avg(favorites),1) as favorites, " +
151 "round(avg(departure),1) as departure, round(avg(depcache),1) as depcache, round(avg(deperror),1) as deperror, " +
152 "round(avg(timetable),1) as timetable, round(avg(timecache),1) as timecache, round(avg(timeerror),1) as timeerror " +
153 "FROM trainstatistics");
154 }
155 }
156 if (res == null) {
157 res = "<a href=DumpResultSet?dump=all>All</a><br>" +
158 "<a href=DumpResultSet?dump=allfull>All with links</a><br>" +
159 "<a href=DumpResultSet?dump=coords>Missing coords</a><br>" +
160 "<a href=DumpResultSet?dump=duplicate>Duplicate stations</a><br>" +
161 "<a href=DumpResultSet?dump=disabled>Disabled stations</a><br>" +
162 "<a href=DumpResultSet?dump=noaddress>No address</a><br>" +
163 "<a href=DumpResultSet?dump=aliases>Has aliases</a><br>" +
164 "<a href=DumpResultSet?dump=updatecoords>update coords</a><br>" +
165 "<a href=DumpResultSet?dump=trainstatistics>statistics</a><br>" +
166 "<a href=DumpResultSet?dump=trainstatistics_avg>stats_avg</a><br>";
167 }
168
169 resp.setContentType("text/html");
170 resp.getWriter().println(res);
171 }
172
173 }

  ViewVC Help
Powered by ViewVC 1.1.20