package dk.thoerup.traininfo.provider; import org.simpleframework.xml.Serializer; import org.simpleframework.xml.core.Persister; import android.util.Log; import dk.thoerup.android.traininfo.common.DepartureBean; import dk.thoerup.traininfo.util.AndroidTimeoutCache; import dk.thoerup.traininfo.util.DownloadUtil; import dk.thoerup.traininfo.util.XmlUtil; public class XmlDepartureProvider implements DepartureProvider { final static int CACHE_TIMEOUT = 60*1000; AndroidTimeoutCache departureCache = new AndroidTimeoutCache(CACHE_TIMEOUT); @Override public DepartureBean lookupDepartures(int stationID, boolean arrival) { String key = "" + stationID + ":" + arrival; DepartureBean departures = departureCache.get(key); if (departures == null) { departures = lookupDeparturesWorker(stationID, arrival); if (departures != null) { departureCache.put(key, departures); } } else { Log.i("XmlDepartureProvider", "cache hit !!!"); } return departures; } private DepartureBean lookupDeparturesWorker(int stationID, boolean arrival) { try { int iArrival = arrival ? 1 : 0; String url = XmlUtil.SERVICE_BASE + "/DepartureServlet?format=xml&station=" + stationID + "&arrival=" + iArrival; Log.i("xmlurl",url); String doc = DownloadUtil.getContentString(url, 30000, "ISO-8859-1"); Serializer serializer = new Persister(); DepartureBean departures = serializer.read(DepartureBean.class, doc); return departures; } catch (Exception e) { Log.e("XmlDepartureProvider", "looupFunction", e); return null; } } }