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

Diff of /android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 458 by torben, Tue Oct 20 20:59:38 2009 UTC revision 861 by torben, Wed Jun 16 09:58:15 2010 UTC
# Line 1  Line 1 
1  package dk.thoerup.traininfoservice.banedk;  package dk.thoerup.traininfoservice.banedk;
2    
3  import java.io.IOException;  import java.io.IOException;
 import java.sql.Connection;  
 import java.sql.ResultSet;  
 import java.sql.Statement;  
4  import java.util.List;  import java.util.List;
5  import java.util.logging.Level;  import java.util.logging.Level;
6  import java.util.logging.Logger;  import java.util.logging.Logger;
# Line 24  import org.w3c.dom.DOMImplementation; Line 21  import org.w3c.dom.DOMImplementation;
21  import org.w3c.dom.Document;  import org.w3c.dom.Document;
22  import org.w3c.dom.Element;  import org.w3c.dom.Element;
23    
24  import dk.thoerup.curcuitbreaker.CircuitBreakerException;  import dk.thoerup.circuitbreaker.CircuitBreakerException;
25  import dk.thoerup.traininfoservice.DBConnection;  import dk.thoerup.traininfoservice.StationDAO;
26    import dk.thoerup.traininfoservice.Statistics;
27    
28  /**  /**
29   * Servlet implementation class DepartureServlet   * Servlet implementation class DepartureServlet
# Line 35  public class DepartureServlet extends Ht Line 33  public class DepartureServlet extends Ht
33                    
34          Logger logger = Logger.getLogger( DepartureServlet.class.getName() );          Logger logger = Logger.getLogger( DepartureServlet.class.getName() );
35    
36          DepartureFetcher fetcher = new DepartureFetcher();          DepartureFetcher fetcher;
37      TransformerFactory transformerFactory = TransformerFactory.newInstance();      TransformerFactory transformerFactory = TransformerFactory.newInstance();
38          DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();          DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
39                    
40    
41          @Override          @Override
42          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {          public void init() throws ServletException {
43                    super.init();
44    
45                    boolean useTempSite =  Boolean.parseBoolean( getServletContext().getInitParameter("usetempsite") );
46                    int cacheTimeout =  Integer.parseInt( getServletContext().getInitParameter("cache_timeout") );
47                    logger.info( "DepartureServlet, use temp site=" + useTempSite + ", cache=" + cacheTimeout);
48                    fetcher = new DepartureFetcher(useTempSite, cacheTimeout);
49            }
50    
51            @Override
52            protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {          
53                  if (req.getParameter("station") == null) {                  if (req.getParameter("station") == null) {
54                          resp.sendError(400, "not enough parameters");                          resp.sendError(400, "not enough parameters");
55                          return;                          return;
56                  }                  }
57                                    
58                    boolean arrival = false;
59                    try {
60                            arrival = Integer.parseInt( req.getParameter("arrival")) != 0;
61                    } catch (Exception e) {}
62                    
63                    Statistics.getInstance().incrementDepartureLookups();
64                    
65                  int station = Integer.parseInt( req.getParameter("station") );                  int station = Integer.parseInt( req.getParameter("station") );
66                  String format = req.getParameter("format");                  String format = req.getParameter("format");
67    
68                  List<DepartureBean> beans;                  List<DepartureBean> beans;
69    
70                  String stationName = getStationName(station);                  String stationName = StationDAO.getStationName(station);
71    
72                  try {                  try {
73                          beans = fetcher.cachedLookupDepartures(station);                          beans = fetcher.cachedLookupDepartures(station, arrival);
74                  } catch (java.net.SocketTimeoutException ste) {                  } catch (java.io.IOException ioe) {
75                          logger.warning("Read timed out, station="+station);                          logger.warning("Read failed, station="+station + ". " + ioe.getMessage() );
76                            Statistics.getInstance().incrementDepartureErrors();
77                          resp.sendError(500);                          resp.sendError(500);
78                          return;                          return;
79                  } catch (CircuitBreakerException cbe) {                  } catch (CircuitBreakerException cbe) {
80                          logger.warning("Circuitbreaker - failing fast");                          logger.warning("Circuitbreaker - failing fast");
81                            Statistics.getInstance().incrementDepartureErrors();
82                          resp.sendError(500);                          resp.sendError(500);
83                          return;                          return;
84                  } catch (Exception e) {                                  } catch (Exception e) {                
85                          logger.log(Level.WARNING, "Unknown exception, station=" +station, e);                          logger.log(Level.WARNING, "Unknown exception, station=" +station, e);
86                            Statistics.getInstance().incrementDepartureErrors();
87                          resp.sendError(500);                          resp.sendError(500);
88                          return;                          return;
89                  }                  }
# Line 77  public class DepartureServlet extends Ht Line 95  public class DepartureServlet extends Ht
95                          resp.setContentType("text/xml");                          resp.setContentType("text/xml");
96                          resp.getWriter().print( formatXml(beans, stationName) );                          resp.getWriter().print( formatXml(beans, stationName) );
97                  } else if (format.equalsIgnoreCase("html")) {                  } else if (format.equalsIgnoreCase("html")) {
98                            
99                            String advStr = req.getParameter("advanced");
100                            boolean advanced = advStr != null ? Boolean.parseBoolean(advStr) : false;
101                            
102                            req.setAttribute("advanced", advanced);
103                          req.setAttribute("stationname", stationName );                          req.setAttribute("stationname", stationName );
104                          req.setAttribute("departurebeans", beans);                          req.setAttribute("departurebeans", beans);
105                          req.setAttribute("stationID", station );                          req.setAttribute("stationID", station );
# Line 132  public class DepartureServlet extends Ht Line 155  public class DepartureServlet extends Ht
155                          note.setTextContent( departure.getNote() );                          note.setTextContent( departure.getNote() );
156                          train.appendChild(note);                          train.appendChild(note);
157                                                    
158                            Element type = doc.createElement("type");
159                            type.setTextContent( departure.getType() );
160                            train.appendChild(type);
161                            
162                          root.appendChild(train);                          root.appendChild(train);
163                  }                  }
164                                    
# Line 144  public class DepartureServlet extends Ht Line 171  public class DepartureServlet extends Ht
171                  //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");                  //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
172                  transformer.setOutputProperty(OutputKeys.METHOD, "xml");                  transformer.setOutputProperty(OutputKeys.METHOD, "xml");
173                  transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");                  transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
174                  transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");                  transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "1");
175                  transformer.setOutputProperty(OutputKeys.INDENT, "yes");                  transformer.setOutputProperty(OutputKeys.INDENT, "yes");
176                  java.io.StringWriter sw = new java.io.StringWriter();                  java.io.StringWriter sw = new java.io.StringWriter();
177                  StreamResult sr = new StreamResult(sw);                  StreamResult sr = new StreamResult(sw);
# Line 158  public class DepartureServlet extends Ht Line 185  public class DepartureServlet extends Ht
185                  return xml;                  return xml;
186          }          }
187    
         protected String getStationName(int stationID) {  
                 String station = "";  
   
                 Connection conn = null;  
                 try {  
                         conn = DBConnection.getConnection();  
                         Statement stmt = conn.createStatement();  
                         ResultSet rs = stmt.executeQuery("SELECT name FROM trainstations WHERE id=" + stationID);  
                         if (rs.next()) {  
                                 station = rs.getString(1);  
                         }  
   
                 } catch (Exception e) {  
                 } finally {  
                         try {  
                                 if (conn != null && !conn.isClosed())  
                                         conn.close();  
                         } catch (Exception e) {}  
                 }  
   
                 return station;  
         }  
   
188  }  }

Legend:
Removed from v.458  
changed lines
  Added in v.861

  ViewVC Help
Powered by ViewVC 1.1.20