/[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 365 by torben, Wed Sep 30 09:14:27 2009 UTC revision 1027 by torben, Wed Sep 8 06:03:45 2010 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            AndroidTimeoutCache<String,List<TimetableBean>> timetableCache = new AndroidTimeoutCache<String,List<TimetableBean>>(CACHE_TIMEOUT);    
22    
23          @Override          @Override
24          public List<TimetableBean> getTimetable() {          public List<TimetableBean> lookupTimetable(String type, String trainID) {
25                    
26                    String trainNumber = extractTrainNumber(trainID);
27                    
28                    String key = type + "-" + trainID;
29                    List<TimetableBean> timetables = timetableCache.get(key);
30            
31                    if (timetables == null) {                      
32                            timetables = lookupTimetableWorker(type, trainNumber);
33                            
34                            if (timetables != null) {                      
35                                    timetableCache.put(key, timetables);
36                            }
37                            
38                    } else {
39                            Log.i("XmlTimetableProvider", "cache hit !!!");
40                    }              
41                    
42                  return timetables;                  return timetables;
43          }          }
44            
45    
46          @Override          public List<TimetableBean> lookupTimetableWorker(String type, String trainNumber) {
47          public boolean lookupTimetable(String trainID) {  
48                  boolean success = false;                  String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainNumber + "&type=" + type;
                 String url = XmlUtil.SERVICE_BASE + "/TimetableServlet?train=" + trainID.replace(" ", "%20") ;  
49                  Log.i("url", url);                  Log.i("url", url);
50                  try {                  try {
51                          timetables.clear();                          List<TimetableBean> timetables = new ArrayList<TimetableBean>();
52                                                    
53                          String xml = DownloadUtil.getContentString(url, 15000, "ISO-8859-1");                          String xml = DownloadUtil.getContentString(url, 15000, "ISO-8859-1");
54                                                    
# Line 72  public class XmlTimetableProvider implem Line 92  public class XmlTimetableProvider implem
92                                          if (nodeName.equals("departure"))                                          if (nodeName.equals("departure"))
93                                                  timetable.setDeparture( content );                                                  timetable.setDeparture( content );
94                                                                                    
95                                            if (nodeName.equals("stationid"))
96                                                    timetable.setStationId( Integer.parseInt(content));
97                                            
98                                          /*if (nodeName.equals("current"))                                          /*if (nodeName.equals("current"))
99                                                  timetable.setCurrent( Boolean.parseBoolean(content) );*/                                                  timetable.setCurrent( Boolean.parseBoolean(content) );*/
100    
101                                  }                                  }
102                                  timetables.add(timetable);                                                                timetables.add(timetable);                              
103                          }                          }
104                          success = true;                          return timetables;
105                                                    
106                                                    
107                  } catch (Exception e) {                  } catch (Exception e) {
108                          Log.e("XmlStationProvider", "lookupStations: ", e);                          Log.e("XmlStationProvider", "lookupStations: ", e);
109                  }                  }
                 return success;  
110    
111                    return null;
112            }
113            
114            private String extractTrainNumber (String trainID) {
115    
116                    String parts[]  = trainID.split(" ");
117                    if (parts.length == 2) {
118                            return parts[1];
119                    } else {
120                            return parts[0];
121                    }
122          }          }
123    
124  }  }

Legend:
Removed from v.365  
changed lines
  Added in v.1027

  ViewVC Help
Powered by ViewVC 1.1.20