mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-18 16:29:51 +00:00
Parse empty <sf>.
This commit is contained in:
parent
e8704f8b85
commit
58eb637454
1 changed files with 47 additions and 39 deletions
|
@ -514,54 +514,62 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
|
|
||||||
final List<LocationAndQuality> locations = new ArrayList<LocationAndQuality>();
|
final List<LocationAndQuality> locations = new ArrayList<LocationAndQuality>();
|
||||||
|
|
||||||
XmlPullUtil.enter(pp, "sf");
|
XmlPullUtil.require(pp, "sf");
|
||||||
|
if (!pp.isEmptyElementTag())
|
||||||
while (XmlPullUtil.test(pp, "p"))
|
|
||||||
{
|
{
|
||||||
XmlPullUtil.enter(pp, "p");
|
XmlPullUtil.enter(pp, "sf");
|
||||||
|
|
||||||
final String name = normalizeLocationName(requireValueTag(pp, "n"));
|
while (XmlPullUtil.test(pp, "p"))
|
||||||
final String u = requireValueTag(pp, "u");
|
{
|
||||||
if (!"sf".equals(u))
|
XmlPullUtil.enter(pp, "p");
|
||||||
throw new RuntimeException("unknown usage: " + u);
|
|
||||||
final String ty = requireValueTag(pp, "ty");
|
|
||||||
final LocationType type;
|
|
||||||
if ("stop".equals(ty))
|
|
||||||
type = LocationType.STATION;
|
|
||||||
else if ("poi".equals(ty))
|
|
||||||
type = LocationType.POI;
|
|
||||||
else if ("loc".equals(ty))
|
|
||||||
type = LocationType.ADDRESS;
|
|
||||||
else if ("street".equals(ty))
|
|
||||||
type = LocationType.ADDRESS;
|
|
||||||
else if ("singlehouse".equals(ty))
|
|
||||||
type = LocationType.ADDRESS;
|
|
||||||
else
|
|
||||||
throw new RuntimeException("unknown type: " + ty);
|
|
||||||
|
|
||||||
XmlPullUtil.enter(pp, "r");
|
final String name = normalizeLocationName(requireValueTag(pp, "n"));
|
||||||
|
final String u = requireValueTag(pp, "u");
|
||||||
|
if (!"sf".equals(u))
|
||||||
|
throw new RuntimeException("unknown usage: " + u);
|
||||||
|
final String ty = requireValueTag(pp, "ty");
|
||||||
|
final LocationType type;
|
||||||
|
if ("stop".equals(ty))
|
||||||
|
type = LocationType.STATION;
|
||||||
|
else if ("poi".equals(ty))
|
||||||
|
type = LocationType.POI;
|
||||||
|
else if ("loc".equals(ty))
|
||||||
|
type = LocationType.ADDRESS;
|
||||||
|
else if ("street".equals(ty))
|
||||||
|
type = LocationType.ADDRESS;
|
||||||
|
else if ("singlehouse".equals(ty))
|
||||||
|
type = LocationType.ADDRESS;
|
||||||
|
else
|
||||||
|
throw new RuntimeException("unknown type: " + ty);
|
||||||
|
|
||||||
final int id = Integer.parseInt(requireValueTag(pp, "id"));
|
XmlPullUtil.enter(pp, "r");
|
||||||
requireValueTag(pp, "stateless");
|
|
||||||
requireValueTag(pp, "omc");
|
|
||||||
final String place = normalizeLocationName(optValueTag(pp, "pc"));
|
|
||||||
requireValueTag(pp, "pid");
|
|
||||||
final Point coord = coordStrToPoint(optValueTag(pp, "c"));
|
|
||||||
|
|
||||||
XmlPullUtil.exit(pp, "r");
|
final int id = Integer.parseInt(requireValueTag(pp, "id"));
|
||||||
|
requireValueTag(pp, "stateless");
|
||||||
|
requireValueTag(pp, "omc");
|
||||||
|
final String place = normalizeLocationName(optValueTag(pp, "pc"));
|
||||||
|
requireValueTag(pp, "pid");
|
||||||
|
final Point coord = coordStrToPoint(optValueTag(pp, "c"));
|
||||||
|
|
||||||
final String qal = optValueTag(pp, "qal");
|
XmlPullUtil.exit(pp, "r");
|
||||||
final int quality = qal != null ? Integer.parseInt(qal) : 0;
|
|
||||||
|
|
||||||
XmlPullUtil.exit(pp, "p");
|
final String qal = optValueTag(pp, "qal");
|
||||||
|
final int quality = qal != null ? Integer.parseInt(qal) : 0;
|
||||||
|
|
||||||
final Location location = new Location(type, type == LocationType.STATION ? id : 0, coord != null ? coord.lat : 0,
|
XmlPullUtil.exit(pp, "p");
|
||||||
coord != null ? coord.lon : 0, place, name);
|
|
||||||
final LocationAndQuality locationAndQuality = new LocationAndQuality(location, quality);
|
final Location location = new Location(type, type == LocationType.STATION ? id : 0, coord != null ? coord.lat : 0,
|
||||||
locations.add(locationAndQuality);
|
coord != null ? coord.lon : 0, place, name);
|
||||||
|
final LocationAndQuality locationAndQuality = new LocationAndQuality(location, quality);
|
||||||
|
locations.add(locationAndQuality);
|
||||||
|
}
|
||||||
|
|
||||||
|
XmlPullUtil.exit(pp, "sf");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
XmlPullUtil.next(pp);
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlPullUtil.exit(pp, "sf");
|
|
||||||
|
|
||||||
Collections.sort(locations);
|
Collections.sort(locations);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue