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

Contents of /android/TrainInfo/src/dk/thoerup/traininfo/provider/XmlTimetableProvider.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1066 - (show annotations) (download)
Thu Sep 16 15:32:42 2010 UTC (13 years, 8 months ago) by torben
File size: 1904 byte(s)
Experimental #5, update TrainInfo client to use common data-beans
1 package dk.thoerup.traininfo.provider;
2
3 import org.simpleframework.xml.Serializer;
4 import org.simpleframework.xml.core.Persister;
5
6 import android.util.Log;
7 import dk.thoerup.android.traininfo.common.TimetableBean;
8 import dk.thoerup.traininfo.util.AndroidTimeoutCache;
9 import dk.thoerup.traininfo.util.DownloadUtil;
10 import dk.thoerup.traininfo.util.XmlUtil;
11
12 public class XmlTimetableProvider implements TimetableProvider {
13
14 final static int CACHE_TIMEOUT = 60*1000;
15
16 AndroidTimeoutCache<String,TimetableBean> timetableCache = new AndroidTimeoutCache<String,TimetableBean>(CACHE_TIMEOUT);
17
18 @Override
19 public TimetableBean lookupTimetable(String type, String trainID) {
20
21 String trainNumber = extractTrainNumber(trainID);
22
23 String key = type + "-" + trainID;
24 TimetableBean timetables = timetableCache.get(key);
25
26 if (timetables == null) {
27 timetables = lookupTimetableWorker(type, trainNumber);
28
29 if (timetables != null) {
30 timetableCache.put(key, timetables);
31 }
32
33 } else {
34 Log.i("XmlTimetableProvider", "cache hit !!!");
35 }
36
37 return timetables;
38 }
39
40
41 public TimetableBean lookupTimetableWorker(String type, String trainNumber) {
42
43 String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainNumber + "&type=" + type;
44 Log.i("url", url);
45 try {
46
47 String xml = DownloadUtil.getContentString(url, 15000, "ISO-8859-1");
48
49 Serializer serializer = new Persister();
50
51 TimetableBean timetables = serializer.read(TimetableBean.class, xml);
52
53
54 return timetables;
55
56
57 } catch (Exception e) {
58 Log.e("XmlStationProvider", "lookupStations: ", e);
59 }
60
61 return null;
62 }
63
64 private String extractTrainNumber (String trainID) {
65
66 String parts[] = trainID.split(" ");
67 if (parts.length == 2) {
68 return parts[1];
69 } else {
70 return parts[0];
71 }
72 }
73
74 }

  ViewVC Help
Powered by ViewVC 1.1.20