package dk.thoerup.traininfo.provider; import java.util.ArrayList; import java.util.List; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import android.util.Log; import dk.thoerup.traininfo.TimetableBean; import dk.thoerup.traininfo.util.AndroidTimeoutCache; import dk.thoerup.traininfo.util.DownloadUtil; import dk.thoerup.traininfo.util.XmlUtil; public class XmlTimetableProvider implements TimetableProvider { final static int CACHE_TIMEOUT = 60*1000; AndroidTimeoutCache> departureCache = new AndroidTimeoutCache>(CACHE_TIMEOUT); @Override public List lookupTimetable(String type, String trainID) { String trainNumber = extractTrainNumber(trainID); String key = type + "-" + trainID; List timetables = departureCache.get(key); if (timetables == null) { timetables = lookupTimetableWorker(type, trainNumber); if (timetables != null) { departureCache.put(key, timetables); } } else { Log.i("XmlTimetableProvider", "cache hit !!!"); } return timetables; } public List lookupTimetableWorker(String type, String trainNumber) { String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainNumber + "&type=" + type; Log.i("url", url); try { List timetables = new ArrayList(); String xml = DownloadUtil.getContentString(url, 15000, "ISO-8859-1"); Document doc = XmlUtil.parseXML(xml); Node rootNode = doc.getDocumentElement(); // stations NodeList stationList = rootNode.getChildNodes(); for (int i=0; i