handle typical network exceptions in AsyncTasks

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@343 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-11-03 23:40:59 +00:00
parent 45465a87ee
commit 114f8db546
5 changed files with 12 additions and 53 deletions

View file

@ -17,10 +17,8 @@
package de.schildbach.pte; package de.schildbach.pte;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.SocketTimeoutException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -113,10 +111,6 @@ public abstract class AbstractEfaProvider implements NetworkProvider
{ {
throw new RuntimeException(x); throw new RuntimeException(x);
} }
catch (final SocketTimeoutException x)
{
throw new RuntimeException(x);
}
finally finally
{ {
if (is != null) if (is != null)
@ -289,13 +283,13 @@ public abstract class AbstractEfaProvider implements NetworkProvider
stations.add(ownStation); stations.add(ownStation);
if (maxStations == 0 || maxStations >= stations.size()) if (maxStations == 0 || maxStations >= stations.size())
return new NearbyStationsResult(uri, stations); return new NearbyStationsResult(stations);
else else
return new NearbyStationsResult(uri, stations.subList(0, maxStations)); return new NearbyStationsResult(stations.subList(0, maxStations));
} }
else if ("notidentified".equals(nameState)) else if ("notidentified".equals(nameState))
{ {
return new NearbyStationsResult(uri, NearbyStationsResult.Status.INVALID_STATION); return new NearbyStationsResult(NearbyStationsResult.Status.INVALID_STATION);
} }
else else
{ {
@ -306,14 +300,6 @@ public abstract class AbstractEfaProvider implements NetworkProvider
{ {
throw new RuntimeException(x); throw new RuntimeException(x);
} }
catch (final FileNotFoundException x)
{
return new NearbyStationsResult(uri, NearbyStationsResult.Status.SERVICE_DOWN);
}
catch (final SocketTimeoutException x)
{
return new NearbyStationsResult(uri, NearbyStationsResult.Status.SERVICE_DOWN);
}
finally finally
{ {
if (is != null) if (is != null)
@ -792,14 +778,6 @@ public abstract class AbstractEfaProvider implements NetworkProvider
{ {
throw new RuntimeException(x); throw new RuntimeException(x);
} }
catch (final FileNotFoundException x)
{
return new QueryDeparturesResult(QueryDeparturesResult.Status.SERVICE_DOWN, Integer.parseInt(stationId));
}
catch (final SocketTimeoutException x)
{
return new QueryDeparturesResult(QueryDeparturesResult.Status.SERVICE_DOWN, Integer.parseInt(stationId));
}
finally finally
{ {
if (is != null) if (is != null)
@ -855,10 +833,6 @@ public abstract class AbstractEfaProvider implements NetworkProvider
is = ParserUtils.scrapeInputStream(uri); is = ParserUtils.scrapeInputStream(uri);
return queryConnections(uri, is); return queryConnections(uri, is);
} }
catch (final SocketTimeoutException x)
{
return new QueryConnectionsResult(QueryConnectionsResult.Status.SERVICE_DOWN);
}
finally finally
{ {
if (is != null) if (is != null)
@ -874,10 +848,6 @@ public abstract class AbstractEfaProvider implements NetworkProvider
is = ParserUtils.scrapeInputStream(uri); is = ParserUtils.scrapeInputStream(uri);
return queryConnections(uri, is); return queryConnections(uri, is);
} }
catch (final SocketTimeoutException x)
{
return new QueryConnectionsResult(QueryConnectionsResult.Status.SERVICE_DOWN);
}
finally finally
{ {
if (is != null) if (is != null)

View file

@ -19,7 +19,6 @@ package de.schildbach.pte;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.SocketTimeoutException;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -178,10 +177,6 @@ public abstract class AbstractHafasProvider implements NetworkProvider
{ {
throw new RuntimeException(x); throw new RuntimeException(x);
} }
catch (final SocketTimeoutException x)
{
throw new RuntimeException(x);
}
finally finally
{ {
if (is != null) if (is != null)
@ -254,6 +249,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd"); final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
InputStream is = null; InputStream is = null;
try try
{ {
is = ParserUtils.scrapeInputStream(apiUri, wrap(request)); is = ParserUtils.scrapeInputStream(apiUri, wrap(request));
@ -479,10 +475,6 @@ public abstract class AbstractHafasProvider implements NetworkProvider
{ {
throw new RuntimeException(x); throw new RuntimeException(x);
} }
catch (final SocketTimeoutException x)
{
throw new RuntimeException(x);
}
catch (final ParseException x) catch (final ParseException x)
{ {
throw new RuntimeException(x); throw new RuntimeException(x);
@ -770,9 +762,9 @@ public abstract class AbstractHafasProvider implements NetworkProvider
} }
if (maxStations == 0 || maxStations >= stations.size()) if (maxStations == 0 || maxStations >= stations.size())
return new NearbyStationsResult(uri, stations); return new NearbyStationsResult(stations);
else else
return new NearbyStationsResult(uri, stations.subList(0, maxStations)); return new NearbyStationsResult(stations.subList(0, maxStations));
} }
protected static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüßáàâéèêíìîóòôúùû/-]+)[\\s-]*(.*)"); protected static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüßáàâéèêíìîóòôúùû/-]+)[\\s-]*(.*)");

View file

@ -125,9 +125,9 @@ public final class BahnProvider extends AbstractHafasProvider
} }
if (maxStations == 0 || maxStations >= stations.size()) if (maxStations == 0 || maxStations >= stations.size())
return new NearbyStationsResult(uri, stations); return new NearbyStationsResult(stations);
else else
return new NearbyStationsResult(uri, stations.subList(0, maxStations)); return new NearbyStationsResult(stations.subList(0, maxStations));
} }
private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep) private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep)

View file

@ -119,9 +119,9 @@ public class MvvProvider extends AbstractEfaProvider
} }
if (maxStations == 0 || maxStations >= stations.size()) if (maxStations == 0 || maxStations >= stations.size())
return new NearbyStationsResult(uri, stations); return new NearbyStationsResult(stations);
else else
return new NearbyStationsResult(uri, stations.subList(0, maxStations)); return new NearbyStationsResult(stations.subList(0, maxStations));
} }
@Override @Override

View file

@ -29,20 +29,17 @@ public final class NearbyStationsResult
OK, INVALID_STATION, SERVICE_DOWN OK, INVALID_STATION, SERVICE_DOWN
} }
public final String uri;
public final Status status; public final Status status;
public final List<Station> stations; public final List<Station> stations;
public NearbyStationsResult(final String uri, List<Station> stations) public NearbyStationsResult(final List<Station> stations)
{ {
this.uri = uri;
this.status = Status.OK; this.status = Status.OK;
this.stations = stations; this.stations = stations;
} }
public NearbyStationsResult(final String uri, final Status status) public NearbyStationsResult(final Status status)
{ {
this.uri = uri;
this.status = status; this.status = status;
this.stations = null; this.stations = null;
} }