/[projects]/android/TrainInfo/src/dk/thoerup/traininfo/provider/XmlDepartureProvider.java
ViewVC logotype

Annotation of /android/TrainInfo/src/dk/thoerup/traininfo/provider/XmlDepartureProvider.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1160 - (hide annotations) (download)
Mon Oct 4 08:42:12 2010 UTC (13 years, 7 months ago) by torben
File size: 1841 byte(s)
Make cache cleanup code a little more elegant
1 torben 237 package dk.thoerup.traininfo.provider;
2    
3    
4    
5 torben 1066 import org.simpleframework.xml.Serializer;
6     import org.simpleframework.xml.core.Persister;
7 torben 237
8 torben 1066
9 torben 237 import android.util.Log;
10 torben 1066 import dk.thoerup.android.traininfo.common.DepartureBean;
11 torben 390 import dk.thoerup.traininfo.util.AndroidTimeoutCache;
12 torben 238 import dk.thoerup.traininfo.util.DownloadUtil;
13 torben 357 import dk.thoerup.traininfo.util.XmlUtil;
14 torben 237
15 torben 1007 public class XmlDepartureProvider implements DepartureProvider {
16 torben 237
17 torben 390 final static int CACHE_TIMEOUT = 60*1000;
18 torben 391
19 torben 237
20 torben 981 AndroidTimeoutCache<String,DepartureBean> departureCache = new AndroidTimeoutCache<String,DepartureBean>(CACHE_TIMEOUT);
21 torben 390
22 torben 319
23    
24 torben 237 @Override
25 torben 1007 public DepartureBean lookupDepartures(int stationID, boolean arrival) {
26 torben 390
27 torben 835 String key = "" + stationID + ":" + arrival;
28    
29 torben 1007 DepartureBean departures = departureCache.get(key);
30 torben 319
31 torben 390 if (departures == null) {
32 torben 1007 departures = lookupDeparturesWorker(stationID, arrival);
33 torben 319
34 torben 1007 if (departures != null) {
35 torben 835 departureCache.put(key, departures);
36 torben 390 }
37 torben 319
38     } else {
39     Log.i("XmlDepartureProvider", "cache hit !!!");
40     }
41    
42 torben 1007 return departures;
43 torben 319 }
44    
45 torben 1007 private DepartureBean lookupDeparturesWorker(int stationID, boolean arrival) {
46    
47 torben 237 try
48 torben 294 {
49 torben 835 int iArrival = arrival ? 1 : 0;
50     String url = XmlUtil.SERVICE_BASE + "/DepartureServlet?format=xml&station=" + stationID + "&arrival=" + iArrival;
51 torben 294 Log.i("xmlurl",url);
52 torben 1052 String doc = DownloadUtil.getContentString(url, 30000, "ISO-8859-1");
53 torben 1066
54     Serializer serializer = new Persister();
55    
56     DepartureBean departures = serializer.read(DepartureBean.class, doc);
57 torben 237
58    
59 torben 1066 return departures;
60 torben 319
61 torben 1007
62 torben 237 } catch (Exception e) {
63     Log.e("XmlDepartureProvider", "looupFunction", e);
64 torben 1007 return null;
65     }
66 torben 237 }
67 torben 1160
68     @Override
69     public void purgeOldEntries() {
70     departureCache.purgeOldEntries();
71     }
72 torben 237
73     }

  ViewVC Help
Powered by ViewVC 1.1.20