1 |
package dk.thoerup.traininfo.provider; |
package dk.thoerup.traininfo.provider; |
2 |
|
|
|
import java.io.BufferedReader; |
|
|
import java.io.IOException; |
|
|
import java.io.InputStream; |
|
|
import java.io.InputStreamReader; |
|
3 |
import java.io.StringReader; |
import java.io.StringReader; |
|
import java.net.URL; |
|
|
import java.net.URLConnection; |
|
4 |
import java.util.ArrayList; |
import java.util.ArrayList; |
5 |
import java.util.List; |
import java.util.List; |
6 |
|
|
15 |
|
|
16 |
import android.util.Log; |
import android.util.Log; |
17 |
import dk.thoerup.traininfo.DepartureBean; |
import dk.thoerup.traininfo.DepartureBean; |
18 |
|
import dk.thoerup.traininfo.util.DownloadUtil; |
19 |
|
|
20 |
public class XmlDepartureProvider extends DefaultHandler implements DepartureProvider { |
public class XmlDepartureProvider extends DefaultHandler implements DepartureProvider { |
21 |
|
|
29 |
public void lookupDepartures(String station) { |
public void lookupDepartures(String station) { |
30 |
departures.clear(); |
departures.clear(); |
31 |
try |
try |
32 |
{ |
{ String url = "http://t-hoerup.dk/tog/xml_display.php?stationname="+station; |
33 |
String doc = getUrlContents("http://t-hoerup.dk/tog/xml_display.php?stationname="+station); |
String doc = DownloadUtil.getContent(url, 45000, "ISO-8859-1"); |
34 |
|
|
35 |
InputSource source = new InputSource( new StringReader(doc)); |
InputSource source = new InputSource( new StringReader(doc)); |
36 |
|
|
51 |
public List<DepartureBean> getDepartures() { |
public List<DepartureBean> getDepartures() { |
52 |
return departures; |
return departures; |
53 |
} |
} |
|
|
|
|
private String getUrlContents(String uri) throws IOException |
|
|
{ |
|
|
URL url = new URL(uri); |
|
|
URLConnection conn = url.openConnection(); |
|
|
conn.setConnectTimeout(5000); |
|
|
InputStream stream = conn.getInputStream(); |
|
|
|
|
|
BufferedReader in = new BufferedReader(new InputStreamReader(stream, "ISO-8859-1"),8192); |
|
|
|
|
|
StringBuilder sbuilder = new StringBuilder(); |
|
|
|
|
|
String line; |
|
|
while ( (line = in.readLine()) != null) { |
|
|
sbuilder.append(line); |
|
|
sbuilder.append("\r\n"); |
|
|
} |
|
|
|
|
|
return sbuilder.toString(); |
|
|
} |
|
54 |
|
|
55 |
// this can be called several times fore the same text-node if there are many chardata / lines |
// this can be called several times fore the same text-node if there are many chardata / lines |
56 |
@Override |
@Override |
75 |
if (name.equals("train")) { |
if (name.equals("train")) { |
76 |
departures.add( tempDeparture ); |
departures.add( tempDeparture ); |
77 |
} else if (name.equals("time")) { |
} else if (name.equals("time")) { |
78 |
tempDeparture.setTime(builder.toString()); |
tempDeparture.setTime(builder.toString().trim()); |
79 |
} else if (name.equals("updated")) { |
} else if (name.equals("updated")) { |
80 |
tempDeparture.setLastUpdate(builder.toString()); |
tempDeparture.setLastUpdate(builder.toString().trim()); |
81 |
} else if (name.equals("trainnumber")) { |
} else if (name.equals("trainnumber")) { |
82 |
tempDeparture.setTrainNumber(builder.toString()); |
tempDeparture.setTrainNumber(builder.toString().trim()); |
83 |
} else if (name.equals("destination")) { |
} else if (name.equals("destination")) { |
84 |
tempDeparture.setDestination(builder.toString()); |
tempDeparture.setDestination(builder.toString().trim()); |
85 |
} else if (name.equals("origin")) { |
} else if (name.equals("origin")) { |
86 |
tempDeparture.setOrigin(builder.toString()); |
tempDeparture.setOrigin(builder.toString().trim()); |
87 |
} else if (name.equals("location")) { |
} else if (name.equals("location")) { |
88 |
tempDeparture.setLocation(builder.toString()); |
tempDeparture.setLocation(builder.toString().trim()); |
89 |
} else if (name.equals("status")) { |
} else if (name.equals("status")) { |
90 |
tempDeparture.setStatus(builder.toString()); |
tempDeparture.setStatus(builder.toString().trim()); |
91 |
} else if (name.equals("note")) { |
} else if (name.equals("note")) { |
92 |
tempDeparture.setNote(builder.toString()); |
tempDeparture.setNote(builder.toString().trim()); |
93 |
} |
} |
94 |
} |
} |
95 |
} |
} |