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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1545 - (show annotations) (download)
Wed Jul 6 20:59:19 2011 UTC (12 years, 10 months ago) by torben
File size: 3442 byte(s)
First and very rude attempt at creating offLine stations
1 package dk.thoerup.traininfo.provider;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.io.RandomAccessFile;
6 import java.util.ArrayList;
7 import java.util.Collections;
8 import java.util.Comparator;
9
10 import org.simpleframework.xml.Serializer;
11 import org.simpleframework.xml.core.Persister;
12
13 import android.content.Context;
14 import android.location.Location;
15 import android.util.Log;
16 import dk.thoerup.android.traininfo.common.StationBean;
17 import dk.thoerup.android.traininfo.common.StationEntry;
18 import dk.thoerup.genericjavautils.HttpUtil;
19 import dk.thoerup.traininfo.util.IntSet;
20 import dk.thoerup.traininfo.util.XmlUtil;
21
22 public class OfflineStationProvider implements StationProvider {
23
24 StationBean stations = new StationBean();
25
26
27 public boolean loadStations(Context context) throws Exception {
28 File parent = context.getFilesDir();
29 File stationsFile = new File(parent, "stations.xml");
30
31 if (!stationsFile.exists())
32 return false;
33
34 int size = (int) stationsFile.length();
35 byte data[] = new byte[size];
36
37 RandomAccessFile raf = new RandomAccessFile(stationsFile, "r");
38 raf.readFully(data);
39
40 Serializer serializer = new Persister();
41 stations = serializer.read(StationBean.class, new String(data, "ISO-8859-1") );
42
43 Log.e("OFFLINE", "loaded" + stations.entries.size());
44
45 return true;
46 }
47
48 public void downloadStations(Context context) throws IOException {
49 File parent = context.getFilesDir();
50 File stationsFile = new File(parent, "stations.xml");
51
52 byte data[] = HttpUtil.getContent(XmlUtil.SERVICE_BASE + "/LocateStations?dump=1", 5000);
53
54 RandomAccessFile raf = new RandomAccessFile(stationsFile, "rw");
55 Log.e("OFFLINE", "data size" + data.length);
56 raf.setLength(0); //truncate
57 raf.write(data);
58 raf.close();
59 }
60
61
62
63 @Override
64 public void purgeOldEntries() {
65 }
66
67
68 @Override
69 public StationBean lookupStationsByLocation(Location location) {
70
71 Location tmpLoc = new Location("GPS");
72
73 ArrayList<StationEntry> entries = new ArrayList<StationEntry>() ;
74
75 for (StationEntry entry : stations.entries) {
76 tmpLoc.setLatitude(entry.getLatitude());
77 tmpLoc.setLongitude(entry.getLongitude());
78
79 entry.setCalcdist( (int) location.distanceTo(tmpLoc) );
80 entries.add(entry);
81
82 }
83
84 Collections.sort( entries, new Comparator<StationEntry>() {
85 @Override
86 public int compare(StationEntry object1, StationEntry object2) {
87 if (object1.getCalcdist() == object2.getCalcdist())
88 return 0;
89
90 if (object1.getCalcdist() > object2.getCalcdist())
91 return 1;
92 else
93 return -1;
94 }
95
96 });
97
98
99
100 StationBean tmpStations = new StationBean();
101 for (int i = 0; i<8; i++) {
102 tmpStations.entries.add( entries.get(i) );
103 }
104
105 return tmpStations;
106 }
107
108 @Override
109 public StationBean lookupStationsByName(String name) {
110
111 name = name.toLowerCase();
112 StationBean tmpStations = new StationBean();
113 for (StationEntry entry : stations.entries) {
114 if (entry.getName().toLowerCase().startsWith(name) ) {
115 tmpStations.entries.add(entry);
116 }
117 }
118
119 return tmpStations;
120 }
121
122 @Override
123 public StationBean lookupStationsByIds(String ids) {
124 IntSet idset = new IntSet();
125 idset.fromString(ids);
126
127 StationBean tmpStations = new StationBean();
128 for (StationEntry entry : stations.entries) {
129 if (idset.contains( entry.getId() ) ) {
130 tmpStations.entries.add(entry);
131 }
132 }
133
134
135
136 return tmpStations;
137 }
138
139 }

  ViewVC Help
Powered by ViewVC 1.1.20