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

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

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

revision 342 by torben, Thu Sep 24 20:20:49 2009 UTC revision 389 by torben, Fri Oct 2 17:18:31 2009 UTC
# Line 6  import java.sql.Statement; Line 6  import java.sql.Statement;
6  import java.util.ArrayList;  import java.util.ArrayList;
7  import java.util.Collections;  import java.util.Collections;
8  import java.util.List;  import java.util.List;
9    import java.util.logging.Logger;
10    
11    
 import com.gargoylesoftware.htmlunit.ProxyConfig;  
12  import com.gargoylesoftware.htmlunit.WebClient;  import com.gargoylesoftware.htmlunit.WebClient;
13  import com.gargoylesoftware.htmlunit.html.DomNodeList;  import com.gargoylesoftware.htmlunit.html.DomNodeList;
14  import com.gargoylesoftware.htmlunit.html.HtmlElement;  import com.gargoylesoftware.htmlunit.html.HtmlElement;
# Line 16  import com.gargoylesoftware.htmlunit.htm Line 17  import com.gargoylesoftware.htmlunit.htm
17  import dk.thoerup.traininfoservice.DBConnection;  import dk.thoerup.traininfoservice.DBConnection;
18    
19  public class DepartureFetcher {  public class DepartureFetcher {
20            
21            Logger logger = Logger.getLogger(DepartureFetcher.class.getName());
22            
23            TimeoutCache<Integer, List<DepartureBean>> cache = new TimeoutCache<Integer,List<DepartureBean>>(120 * 1000);
24            
25                    
26            
27            public List<DepartureBean> cachedLookupDepartures(int stationID) throws Exception {
28    
29                    List<DepartureBean> list = cache.get(stationID);
30                    
31                    if (list == null) {
32                            list = lookupDepartures(stationID);
33                            cache.put(stationID, list);
34                    } else {
35                            logger.info("Departure: Cache hit " + stationID); //remove before production
36                    }
37                    return list;
38            }
39                                    
40    
41          public List<DepartureBean> lookupDepartures(int stationID) throws Exception {          public List<DepartureBean> lookupDepartures(int stationID) throws Exception {
# Line 60  public class DepartureFetcher { Line 80  public class DepartureFetcher {
80                  List<DepartureBean> departureList = new ArrayList<DepartureBean>();                  List<DepartureBean> departureList = new ArrayList<DepartureBean>();
81                                    
82              final WebClient webClient = new WebClient();              final WebClient webClient = new WebClient();
83              webClient.setTimeout(1000);              webClient.setTimeout(2500);
84              webClient.setJavaScriptEnabled(false);              webClient.setJavaScriptEnabled(false);
85                                                            
86                            
# Line 79  public class DepartureFetcher { Line 99  public class DepartureFetcher {
99                                  DepartureBean departure = new DepartureBean();                                  DepartureBean departure = new DepartureBean();
100                                                                    
101                                  String time = fields.get(0).asText();                                  String time = fields.get(0).asText();
102                                    if (time.equals(""))
103                                            time = "0:00"; //Bane.dk bug work-around
104                                  departure.setTime(time);                                  departure.setTime(time);
105                                                                    
106                                  int updated = extractUpdated( fields.get(1) );                                  int updated = extractUpdated( fields.get(1) );
107                                  departure.setUpdated(updated);                                  departure.setUpdated(updated);
108                                                                    
109                                  String trainNumber = fields.get(2).asText();                                  String trainNumber = fields.get(2).asText();
110                                    if (trainNumber.trim().length() == 1)
111                                            trainNumber = trainNumber + " " + extractTrainNumber(fields.get(2));
112                                  departure.setTrainNumber(trainNumber);                                  departure.setTrainNumber(trainNumber);
113                                                                    
114                                  String destination = fields.get(3).asText();                                  String destination = fields.get(3).asText();
# Line 105  public class DepartureFetcher { Line 129  public class DepartureFetcher {
129                                  departureList.add(departure);                                  departureList.add(departure);
130                          }                          }
131                      }                      }
132                } else {
133                    logger.warning("No departures found for station=" + stationcode + ", type=" + type);
134              }              }
135                
136              return departureList;              return departureList;
137          }          }
138                    
# Line 137  public class DepartureFetcher { Line 164  public class DepartureFetcher {
164                  return note;                  return note;
165          }          }
166                    
167            private String extractTrainNumber(HtmlElement trainTd) {
168                    String number = "";
169                    HtmlElement anchorElement = trainTd.getElementsByTagName("a").get(0);
170                    String href = anchorElement.getAttribute("href");
171                    String argstring = href.substring( href.indexOf('?') + 1);
172                    
173                    String args[] = argstring.split("&");
174                    for (String arg : args) {
175                            String pair[] = arg.split("="); // Key=pair[0], Value=pair[1]
176                            
177                            if (pair[0].equalsIgnoreCase("TogNr"))
178                                    number = pair[1];
179                    }
180                    
181                    
182                    
183                    return number;
184            }
185            
186          //test          //test
187          public static void main(String args[]) throws Exception{          public static void main(String args[]) throws Exception{
188                  DepartureFetcher f = new DepartureFetcher();                  DepartureFetcher f = new DepartureFetcher();

Legend:
Removed from v.342  
changed lines
  Added in v.389

  ViewVC Help
Powered by ViewVC 1.1.20