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; List timetables; AndroidTimeoutCache> departureCache = new AndroidTimeoutCache>(CACHE_TIMEOUT); @Override public List getTimetable(String trainID) { List list = departureCache.get(trainID); if (list == null) { list = new ArrayList(); } return list; } @Override public boolean lookupTimetable(String trainID) { boolean success; timetables = departureCache.get(trainID); if (timetables == null) { success = lookupTimetableWorker(trainID); if (success) { departureCache.put(trainID, timetables); } } else { Log.i("XmlTimetableProvider", "cache hit !!!"); success = true; } return success; } public boolean lookupTimetableWorker(String trainID) { boolean success = false; String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainID.replace(" ", "%20") ; Log.i("url", url); try { 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