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

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

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

revision 383 by torben, Fri Oct 2 11:28:54 2009 UTC revision 1004 by torben, Mon Aug 2 23:01:47 2010 UTC
# Line 1  Line 1 
1  package dk.thoerup.traininfo.provider;  package dk.thoerup.traininfo.provider;
2    
3  import java.net.URI;  
4  import java.net.URLEncoder;  import java.net.URLEncoder;
5  import java.util.ArrayList;  import java.util.ArrayList;
6  import java.util.List;  import java.util.List;
# Line 10  import org.w3c.dom.Node; Line 10  import org.w3c.dom.Node;
10  import org.w3c.dom.NodeList;  import org.w3c.dom.NodeList;
11    
12  import android.location.Location;  import android.location.Location;
 import android.net.Uri;  
13  import android.util.Log;  import android.util.Log;
14  import dk.thoerup.traininfo.StationBean;  import dk.thoerup.traininfo.StationBean;
15    import dk.thoerup.traininfo.util.AndroidTimeoutCache;
16  import dk.thoerup.traininfo.util.DownloadUtil;  import dk.thoerup.traininfo.util.DownloadUtil;
17  import dk.thoerup.traininfo.util.XmlUtil;  import dk.thoerup.traininfo.util.XmlUtil;
18    
19  public class XmlStationProvider implements StationProvider {  public class XmlStationProvider implements StationProvider {
20            
21            final static int CACHE_TIMEOUT = 300*1000;
22    
23          List<StationBean> stations = new ArrayList<StationBean>();                List<StationBean> stations = new ArrayList<StationBean>();      
24                    AndroidTimeoutCache<String, List<StationBean>> stationCache = new AndroidTimeoutCache<String, List<StationBean>>(CACHE_TIMEOUT);
25                    
26          @Override          @Override
27          public List<StationBean> getStations() {          public List<StationBean> getStations() {
# Line 29  public class XmlStationProvider implemen Line 31  public class XmlStationProvider implemen
31    
32          @Override          @Override
33          public boolean lookupStations(Location location) {          public boolean lookupStations(Location location) {
34                  String url = XmlUtil.SERVICE_BASE + "/LocateStations?latitude=" + location.getLatitude() + "&longitude=" + location.getLongitude();                  String url = XmlUtil.SERVICE_BASE + "/LocateStations?latitude=" + (float)location.getLatitude() + "&longitude=" + (float)location.getLongitude();
35                  Log.i("url", url);                  Log.i("url", url);
36                  return lookupStationsWorker(url);                  return lookupStationsWorker(url);
37          }          }
38                    
39          @Override          @Override
40          public boolean lookupStations(String name) {                      public boolean lookupStationsByName(String name) {              
41                                    
42          //      String url = XmlUtil.SERVICE_BASE + "/LocateStations?name=" + Uri.encode(name);          //      String url = XmlUtil.SERVICE_BASE + "/LocateStations?name=" + Uri.encode(name);
43                  String url = "";                  String url = "";
# Line 51  public class XmlStationProvider implemen Line 53  public class XmlStationProvider implemen
53          }          }
54                    
55                    
56            @Override
57            public boolean lookupStationsByIds(String ids) {
58                    String url = "";
59                    url = XmlUtil.SERVICE_BASE + "/LocateStations?list=" + ids;
60                    
61                    Log.i("url", url);
62                    return lookupStationsWorker(url);
63            }
64            
65          public boolean lookupStationsWorker(String url) {          public boolean lookupStationsWorker(String url) {
66                    boolean result;
67                    List<StationBean> tmpStations = stationCache.get(url);
68                    
69                    if (tmpStations != null) {
70                            Log.i("lookupStations", "cache hit " + url);
71                            result = true;
72                    } else {
73                            result = fetchStations(url);
74                            
75                            if (result == true) {
76                                    stationCache.put(url, stations);
77                            }
78                    }
79                    
80                    return result;
81            }
82    
83    
84            public boolean fetchStations(String url) {
85                  boolean success = false;                  boolean success = false;
86    
87                  try {                  try {
# Line 95  public class XmlStationProvider implemen Line 125  public class XmlStationProvider implemen
125                                          if (nodeName.equals("longitude"))                                          if (nodeName.equals("longitude"))
126                                                  station.setLongitude( Double.parseDouble(content) );                                                  station.setLongitude( Double.parseDouble(content) );
127                                                                                    
                                         if (nodeName.equals("stationcode"))  
                                                 station.setCode(content);  
                                           
128                                          if (nodeName.equals("calcdist"))                                          if (nodeName.equals("calcdist"))
129                                                  station.setDistance( (int) Double.parseDouble(content) );                                                  station.setDistance( (int) Double.parseDouble(content) );
130                                            
131                                            if (nodeName.equals("address"))
132                                                    station.setAddress( content );
133                                            
134                                            if (nodeName.equals("regional"))
135                                                    station.setRegional( Boolean.parseBoolean(content) );
136                                            
137                                            if (nodeName.equals("strain"))
138                                                    station.setSTrain( Boolean.parseBoolean(content) );
139                                            
140                                            if (nodeName.equals("metro"))
141                                                    station.setMetro( Boolean.parseBoolean(content) );
142    
143                                  }                                  }
144                                  stations.add(station);                                                            stations.add(station);                          

Legend:
Removed from v.383  
changed lines
  Added in v.1004

  ViewVC Help
Powered by ViewVC 1.1.20