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

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

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

revision 353 by torben, Tue Sep 29 15:49:19 2009 UTC revision 711 by torben, Wed May 5 20:11:03 2010 UTC
# Line 5  import java.io.IOException; Line 5  import java.io.IOException;
5  import java.net.URL;  import java.net.URL;
6  import java.util.ArrayList;  import java.util.ArrayList;
7  import java.util.List;  import java.util.List;
8    import java.util.Map;
9  import java.util.logging.Logger;  import java.util.logging.Logger;
10    
11  import com.gargoylesoftware.htmlunit.*;  import com.gargoylesoftware.htmlunit.BrowserVersion;
12  import com.gargoylesoftware.htmlunit.html.*;  import com.gargoylesoftware.htmlunit.Page;
13    import com.gargoylesoftware.htmlunit.RefreshHandler;
14    import com.gargoylesoftware.htmlunit.WebClient;
15    import com.gargoylesoftware.htmlunit.html.DomNodeList;
16    import com.gargoylesoftware.htmlunit.html.HtmlElement;
17    import com.gargoylesoftware.htmlunit.html.HtmlPage;
18    
19    import dk.thoerup.circuitbreaker.CircuitBreaker;
20    import dk.thoerup.circuitbreaker.CircuitBreakerManager;
21    import dk.thoerup.traininfoservice.Statistics;
22    
23  public class TimetableFetcher {  public class TimetableFetcher {
24                    
# Line 17  public class TimetableFetcher { Line 27  public class TimetableFetcher {
27                  }                  }
28                                    
29          }          }
30                    
31            Map<String, List<TimetableBean>> cache;
32            
33                    
34          Logger logger = Logger.getLogger(TimetableFetcher.class.getName());          Logger logger = Logger.getLogger(TimetableFetcher.class.getName());
35            
36            private boolean useTempSite;
37            
38            public TimetableFetcher(boolean tmpSite, int cacheTimeout) {
39                    useTempSite = tmpSite;
40                    
41                    cache = new TimeoutMap<String,List<TimetableBean>>(cacheTimeout);
42            }
43            
44            
45            List<TimetableBean> cachedLookupTimetable(String trainID, String type) throws Exception {
46                    String key = trainID+type;
47                    List<TimetableBean> list = cache.get(key);
48                    
49                    if (list == null) {
50                            list = lookupTimetable(trainID,type);
51                            cache.put(key, list);
52                    } else {
53                            Statistics.getInstance().incrementTimetableCacheHits();
54                            logger.info("Timetable: Cache hit " + trainID);
55                    }
56                    return list;
57            }
58            
59          List<TimetableBean> lookupTimetable(String trainID, String type) throws Exception {          List<TimetableBean> lookupTimetable(String trainID, String type) throws Exception {
60                    if (useTempSite == false ){
61                            return lookupTimetableRealSite(trainID, type);
62                    } else {
63                            return new ArrayList<TimetableBean>(); // no timetable data on temp site
64                    }
65            }
66    
67            List<TimetableBean> lookupTimetableRealSite(String trainID, String type) throws Exception {            
68                  List<TimetableBean> timetableList = new ArrayList<TimetableBean>();                  List<TimetableBean> timetableList = new ArrayList<TimetableBean>();
69                                    
70                  String url = "http://www.bane.dk/visRute.asp?W=" + type + "&TogNr=" + trainID + "&artikelId=4276";                  String url = "http://www.bane.dk/visRute.asp?W=" + type + "&TogNr=" + trainID + "&artikelId=4276";
71                                                                    
72    
73              final WebClient webClient = new WebClient();              final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
74              webClient.setTimeout(1000);              webClient.setTimeout(2500);
75              webClient.setJavaScriptEnabled(false);                      webClient.setJavaScriptEnabled(false);        
76              webClient.setRefreshHandler( new NullRefreshHandler() );              webClient.setRefreshHandler( new NullRefreshHandler() );
77              webClient.setCssEnabled(false);              webClient.setCssEnabled(false);
78                            
79                            
80              final HtmlPage page = webClient.getPage(url);              BanedkInvocation wrapper = new BanedkInvocation(webClient, url);
81                CircuitBreaker breaker = CircuitBreakerManager.getManager().getCircuitBreaker("banedk");
82                            
83                HtmlPage page = (HtmlPage) breaker.invoke(wrapper);
84                        
85                            
86              boolean currentStation = false;              boolean currentStation = false;
87              boolean currentStationSaved = false;              boolean currentStationSaved = false;
# Line 74  public class TimetableFetcher { Line 121  public class TimetableFetcher {
121              } else {              } else {
122                  logger.warning("No time table found, trainID=" + trainID + " type=" + type);                  logger.warning("No time table found, trainID=" + trainID + " type=" + type);
123              }              }
124                webClient.closeAllWindows();
125                                    
126                  return timetableList;                  return timetableList;
127          }          }

Legend:
Removed from v.353  
changed lines
  Added in v.711

  ViewVC Help
Powered by ViewVC 1.1.20