--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureFetcher.java 2010/07/10 09:57:04 977 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureFetcher.java 2010/07/10 10:53:44 978 @@ -1,6 +1,6 @@ package dk.thoerup.traininfoservice.banedk; -import java.util.ArrayList; + import java.util.Collections; import java.util.List; import java.util.Map; @@ -27,7 +27,7 @@ Logger logger = Logger.getLogger(DepartureFetcher.class.getName()); - Map> cache; + Map cache; StationDAO stationDao = new StationDAO(); @@ -35,51 +35,56 @@ public DepartureFetcher(boolean tempSite, int cacheTimeout) { useTempSite = tempSite; - cache = new TimeoutMap>(cacheTimeout); + cache = new TimeoutMap(cacheTimeout); } - public List cachedLookupDepartures(int stationID, boolean arrival) throws Exception { + public DepartureBean cachedLookupDepartures(int stationID, boolean arrival) throws Exception { final String key = "" + stationID + ":" + arrival; - - List list = cache.get(key); + /* + DepartureBean departureBean = cache.get(key); - if (list == null) { - list = lookupDepartures(stationID,arrival); - cache.put(key, list); + if (departureBean == null) { + departureBean = lookupDepartures(stationID,arrival); + cache.put(key, departureBean); } else { Statistics.getInstance().incrementDepartureCacheHits(); logger.info("Departure: Cache hit " + key); //remove before production } - return list; + return departureBean;*/ + + return lookupDepartures(stationID,arrival); } - public List lookupDepartures(int stationID, boolean arrival) throws Exception { - List departureList = new ArrayList(); + public DepartureBean lookupDepartures(int stationID, boolean arrival) throws Exception { + + DepartureBean departureBean = new DepartureBean(); StationBean station = stationDao.getById(stationID); if (station.getRegional() != null) { - List list = lookupDepartures(station.getRegional(), TrainType.REGIONAL, arrival); - departureList.addAll(list); + DepartureBean tempBean = lookupDepartures(station.getRegional(), TrainType.REGIONAL, arrival); + departureBean.departureEntries.addAll( tempBean.departureEntries ); + departureBean.notifications.addAll(tempBean.notifications); } if (station.getStrain() != null) { - List list = lookupDepartures(station.getStrain(), TrainType.STOG, arrival); - departureList.addAll(list); + DepartureBean tempBean = lookupDepartures(station.getStrain(), TrainType.STOG, arrival); + departureBean.departureEntries.addAll( tempBean.departureEntries ); + departureBean.notifications.addAll(tempBean.notifications); } - Collections.sort( departureList ); + Collections.sort( departureBean.departureEntries ); - return departureList; + return departureBean; } - public List lookupDepartures(String stationcode, TrainType type, boolean arrival) throws Exception { + public DepartureBean lookupDepartures(String stationcode, TrainType type, boolean arrival) throws Exception { if (useTempSite == false) { return lookupDeparturesNormalSite(stationcode, type, arrival); } else { @@ -100,9 +105,9 @@ } } - public List lookupDeparturesNormalSite(String stationcode, TrainType type, boolean arrival) throws Exception { + public DepartureBean lookupDeparturesNormalSite(String stationcode, TrainType type, boolean arrival) throws Exception { - List departureList = new ArrayList(); + DepartureBean departureBean = new DepartureBean(); final WebClient webClient = new WebClient( BrowserVersion.FIREFOX_3 ); webClient.setTimeout(2500); @@ -132,7 +137,7 @@ if (rowClass != null && rowClass.toLowerCase().contains("station") ) { DomNodeList fields = currentRow.getElementsByTagName("td"); - DepartureBean departure = new DepartureBean(); + DepartureEntry departure = new DepartureEntry(); String time = fields.get(0).asText(); if (time.equals("")) @@ -164,15 +169,31 @@ departure.setType(typeString); - departureList.add(departure); + departureBean.departureEntries.add( departure ); } } } else { logger.warning("No departures found for station=" + stationcode + ", type=" + type); } + + HtmlElement notifDiv = page.getElementById("station_planlagte_text"); + if (notifDiv != null) { + + DomNodeList tables = notifDiv.getElementsByTagName("table"); + for (HtmlElement tab : tables) { + + DomNodeList anchors = tab.getElementsByTagName("a"); + if (anchors.size() == 2) { + departureBean.notifications.add( anchors.get(1).getTextContent() ); + } + } + + } + + webClient.closeAllWindows(); - return departureList; + return departureBean; } /*