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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 390 by torben, Wed Sep 30 09:14:27 2009 UTC revision 391 by torben, Sat Oct 3 10:55:43 2009 UTC
# Line 4  import java.util.ArrayList; Line 4  import java.util.ArrayList;
4  import java.util.List;  import java.util.List;
5    
6  import org.w3c.dom.Document;  import org.w3c.dom.Document;
7  import org.w3c.dom.NamedNodeMap;  
8  import org.w3c.dom.Node;  import org.w3c.dom.Node;
9  import org.w3c.dom.NodeList;  import org.w3c.dom.NodeList;
10    
11  import android.util.Log;  import android.util.Log;
12  import dk.thoerup.traininfo.TimetableBean;  import dk.thoerup.traininfo.TimetableBean;
13    import dk.thoerup.traininfo.util.AndroidTimeoutCache;
14  import dk.thoerup.traininfo.util.DownloadUtil;  import dk.thoerup.traininfo.util.DownloadUtil;
15  import dk.thoerup.traininfo.util.XmlUtil;  import dk.thoerup.traininfo.util.XmlUtil;
16    
17  public class XmlTimetableProvider implements TimetableProvider {  public class XmlTimetableProvider implements TimetableProvider {
18                    
19          List<TimetableBean> timetables = new ArrayList<TimetableBean>();          final static int CACHE_TIMEOUT = 60*1000;
20            
21            List<TimetableBean> timetables;
22    
23            AndroidTimeoutCache<String,List<TimetableBean>> departureCache = new AndroidTimeoutCache<String,List<TimetableBean>>(CACHE_TIMEOUT);
24            
25          @Override          @Override
26          public List<TimetableBean> getTimetable() {          public List<TimetableBean> getTimetable(String trainID) {
27                  return timetables;                  List<TimetableBean> list = departureCache.get(trainID);
28                    
29                    if (list == null) {                    
30                            list = new ArrayList<TimetableBean>();
31                    }
32                    
33                    return list;
34          }          }
35    
36          @Override          @Override
37          public boolean lookupTimetable(String trainID) {          public boolean lookupTimetable(String trainID) {
38                    boolean success;
39                    
40                    timetables = departureCache.get(trainID);
41            
42                    if (timetables == null) {                      
43                            success = lookupTimetableWorker(trainID);
44                            
45                            if (success) {                  
46                                    departureCache.put(trainID, timetables);
47                            }
48                            
49                    } else {
50                            Log.i("XmlTimetableProvider", "cache hit !!!");
51                            success = true;
52                    }              
53                    
54                    return success;
55            }
56            
57    
58            public boolean lookupTimetableWorker(String trainID) {
59                  boolean success = false;                  boolean success = false;
60                  String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainID.replace(" ", "%20") ;                  String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainID.replace(" ", "%20") ;
61                  Log.i("url", url);                  Log.i("url", url);
62                  try {                  try {
63                          timetables.clear();                          timetables = new ArrayList<TimetableBean>();
64                                                    
65                          String xml = DownloadUtil.getContentString(url, 15000, "ISO-8859-1");                          String xml = DownloadUtil.getContentString(url, 15000, "ISO-8859-1");
66                                                    

Legend:
Removed from v.390  
changed lines
  Added in v.391

  ViewVC Help
Powered by ViewVC 1.1.20