/[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 350 by torben, Mon Sep 28 21:33:24 2009 UTC revision 584 by torben, Fri Feb 5 13:57:39 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.Page;
12  import com.gargoylesoftware.htmlunit.html.*;  import com.gargoylesoftware.htmlunit.RefreshHandler;
13    import com.gargoylesoftware.htmlunit.WebClient;
14    import com.gargoylesoftware.htmlunit.html.DomNodeList;
15    import com.gargoylesoftware.htmlunit.html.HtmlElement;
16    import com.gargoylesoftware.htmlunit.html.HtmlPage;
17    
18    import dk.thoerup.circuitbreaker.CircuitBreaker;
19    import dk.thoerup.circuitbreaker.CircuitBreakerManager;
20    
21  public class TimetableFetcher {  public class TimetableFetcher {
22                    
# Line 17  public class TimetableFetcher { Line 25  public class TimetableFetcher {
25                  }                  }
26                                    
27          }          }
28                    
29            Map<String, List<TimetableBean>> cache;
30            
31                    
32          Logger logger = Logger.getLogger(TimetableFetcher.class.getName());          Logger logger = Logger.getLogger(TimetableFetcher.class.getName());
33            
34            private boolean useTempSite;
35            
36            public TimetableFetcher(boolean tmpSite, int cacheTimeout) {
37                    useTempSite = tmpSite;
38                    
39                    cache = new TimeoutMap<String,List<TimetableBean>>(cacheTimeout);
40            }
41            
42            
43            List<TimetableBean> cachedLookupTimetable(String trainID, String type) throws Exception {
44                    String key = trainID+type;
45                    List<TimetableBean> list = cache.get(key);
46                    
47                    if (list == null) {
48                            list = lookupTimetable(trainID,type);
49                            cache.put(key, list);
50                    } else {
51                            logger.info("Timetable: Cache hit " + trainID);
52                    }
53                    return list;
54            }
55            
56          List<TimetableBean> lookupTimetable(String trainID, String type) throws Exception {          List<TimetableBean> lookupTimetable(String trainID, String type) throws Exception {
57                    if (useTempSite == false ){
58                            return lookupTimetableRealSite(trainID, type);
59                    } else {
60                            return new ArrayList<TimetableBean>(); // no timetable data on temp site
61                    }
62            }
63    
64            List<TimetableBean> lookupTimetableRealSite(String trainID, String type) throws Exception {            
65                  List<TimetableBean> timetableList = new ArrayList<TimetableBean>();                  List<TimetableBean> timetableList = new ArrayList<TimetableBean>();
66                                    
67                  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";
68                                                                    
                 logger.warning(url);  
69    
70              final WebClient webClient = new WebClient();              final WebClient webClient = new WebClient();
71              webClient.setTimeout(1000);              webClient.setTimeout(2500);
72              webClient.setJavaScriptEnabled(false);                      webClient.setJavaScriptEnabled(false);        
73              webClient.setRefreshHandler( new NullRefreshHandler() );              webClient.setRefreshHandler( new NullRefreshHandler() );
74              webClient.setCssEnabled(false);              webClient.setCssEnabled(false);
75                            
76                            
77              final HtmlPage page = webClient.getPage(url);              BanedkInvocation wrapper = new BanedkInvocation(webClient, url);
78                CircuitBreaker breaker = CircuitBreakerManager.getManager().getCircuitBreaker("banedk");
79                            
80                HtmlPage page = (HtmlPage) breaker.invoke(wrapper);
81                        
82                            
83              boolean currentStation = false;              boolean currentStation = false;
84              boolean currentStationSaved = false;              boolean currentStationSaved = false;

Legend:
Removed from v.350  
changed lines
  Added in v.584

  ViewVC Help
Powered by ViewVC 1.1.20