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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20