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.MetroBean; import dk.thoerup.traininfo.util.AndroidTimeoutCache; import dk.thoerup.traininfo.util.DownloadUtil; import dk.thoerup.traininfo.util.XmlUtil; public class XmlMetroProvider implements MetroProvider { final int CACHE_TIMEOUT = 60000; AndroidTimeoutCache metroCache = new AndroidTimeoutCache(CACHE_TIMEOUT); @Override public MetroBean lookupMetroInfo(int stationID) { MetroBean metro = metroCache.get(stationID); if (metro == null) { metro = lookupMetroWorker(stationID); if (metro != null) { metroCache.put(stationID, metro); } } else { Log.i("XmlDepartureProvider", "cache hit !!!"); } return metro; } private MetroBean lookupMetroWorker(int stationID) { try { String url = XmlUtil.SERVICE_BASE + "/MetroServlet?station=" + stationID; Log.i("xmlurl",url); String doc = DownloadUtil.getContentString(url, 15000, "ISO-8859-1"); Serializer serializer = new Persister(); MetroBean metro = serializer.read(MetroBean.class, doc); return metro; } catch (Exception e) { Log.e("XmlMetroProvider", "lookupFunction", e); return null; } } }