From 7fdd00a5ae00e3855fadbb48a3993b6c200b195d Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Thu, 9 Feb 2012 10:02:24 +0000 Subject: [PATCH] destinations now are locations git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@934 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/AbstractEfaProvider.java | 12 ++++++++---- .../schildbach/pte/AbstractHafasProvider.java | 13 ++++++++----- src/de/schildbach/pte/BvgProvider.java | 15 ++++++++------- src/de/schildbach/pte/InvgProvider.java | 7 ++++--- src/de/schildbach/pte/NsProvider.java | 5 +++-- src/de/schildbach/pte/RmvProvider.java | 5 +++-- src/de/schildbach/pte/SeptaProvider.java | 7 ++++--- src/de/schildbach/pte/ShProvider.java | 7 ++++--- src/de/schildbach/pte/VgsProvider.java | 7 ++++--- src/de/schildbach/pte/dto/Departure.java | 18 +++++------------- src/de/schildbach/pte/dto/LineDestination.java | 12 ++---------- 11 files changed, 53 insertions(+), 55 deletions(-) diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 1422e27e..1eebf773 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1297,12 +1297,14 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { final String assignedStopIdStr = pp.getAttributeValue(null, "assignedStopID"); final int assignedStopId = assignedStopIdStr != null ? Integer.parseInt(assignedStopIdStr) : 0; - final String destination = normalizeLocationName(pp.getAttributeValue(null, "direction")); + final String destinationName = normalizeLocationName(pp.getAttributeValue(null, "direction")); final String destinationIdStr = pp.getAttributeValue(null, "destID"); final int destinationId = (destinationIdStr != null && destinationIdStr.length() > 0) ? Integer.parseInt(destinationIdStr) : 0; - final LineDestination line = new LineDestination(processItdServingLine(pp), destinationId, destination); + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); + final LineDestination line = new LineDestination(processItdServingLine(pp), destination); StationDepartures assignedStationDepartures; if (assignedStopId == 0) @@ -1363,10 +1365,12 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider XmlPullUtil.require(pp, "itdServingLine"); final boolean isRealtime = pp.getAttributeValue(null, "realtime").equals("1"); - final String destination = normalizeLocationName(pp.getAttributeValue(null, "direction")); + final String destinationName = normalizeLocationName(pp.getAttributeValue(null, "direction")); final String destinationIdStr = pp.getAttributeValue(null, "destID"); final int destinationId = destinationIdStr != null ? Integer.parseInt(destinationIdStr) : 0; + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); final Line line = processItdServingLine(pp); if (isRealtime && !predictedDepartureTime.isSet(Calendar.HOUR_OF_DAY)) @@ -1374,7 +1378,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider final Departure departure = new Departure(plannedDepartureTime.getTime(), predictedDepartureTime.isSet(Calendar.HOUR_OF_DAY) ? predictedDepartureTime.getTime() : null, line, position, - destinationId, destination, null, null); + destination, null, null); assignedStationDepartures.departures.add(departure); XmlPullUtil.exit(pp, "itdDeparture"); diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index d7febb9a..1d6ea456 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -612,13 +612,13 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final String position = platform != null ? "Gl. " + ParserUtils.resolveEntities(platform) : null; - final String destination; + final String destinationName; if (dir != null) - destination = dir.trim(); + destinationName = dir.trim(); else if (targetLoc != null) - destination = targetLoc.trim(); + destinationName = targetLoc.trim(); else - destination = null; + destinationName = null; final int destinationId; if (dirnr != null) @@ -626,6 +626,9 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider else destinationId = 0; + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); + final Line prodLine = parseLineAndType(prod); final Line line; if (classStr != null) @@ -665,7 +668,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } final Departure departure = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - position, destinationId, destination, capacity, message); + position, destination, capacity, message); departures.add(departure); } diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index 15e1c9eb..80f7f0a0 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -332,12 +332,12 @@ public final class BvgProvider extends AbstractHafasProvider final String position = null; - final int destinationId = 0; + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(4)); + final Location destination = new Location(LocationType.ANY, 0, null, destinationName); - final String destination = ParserUtils.resolveEntities(mDepFine.group(4)); + final String message = messages.get(line.label); - final Departure dep = new Departure(plannedTime, predictedTime, line, position, destinationId, destination, null, - messages.get(line.label)); + final Departure dep = new Departure(plannedTime, predictedTime, line, position, destination, null, message); if (!departures.contains(dep)) departures.add(dep); } @@ -403,10 +403,11 @@ public final class BvgProvider extends AbstractHafasProvider final String position = ParserUtils.resolveEntities(mDepFine.group(3)); final int destinationId = Integer.parseInt(mDepFine.group(4)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(5)); + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); - final String destination = ParserUtils.resolveEntities(mDepFine.group(5)); - - final Departure dep = new Departure(plannedTime, null, line, position, destinationId, destination, null, null); + final Departure dep = new Departure(plannedTime, null, line, position, destination, null, null); if (!departures.contains(dep)) departures.add(dep); } diff --git a/src/de/schildbach/pte/InvgProvider.java b/src/de/schildbach/pte/InvgProvider.java index 5d7719fa..841f08f8 100644 --- a/src/de/schildbach/pte/InvgProvider.java +++ b/src/de/schildbach/pte/InvgProvider.java @@ -238,13 +238,14 @@ public class InvgProvider extends AbstractHafasProvider final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)), false); final int destinationId = mDepFine.group(5) != null ? Integer.parseInt(mDepFine.group(5)) : 0; - - final String destination = ParserUtils.resolveEntities(mDepFine.group(6)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(6)); + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - position, destinationId, destination, null, null); + position, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/NsProvider.java b/src/de/schildbach/pte/NsProvider.java index 558f3e86..d77ef093 100644 --- a/src/de/schildbach/pte/NsProvider.java +++ b/src/de/schildbach/pte/NsProvider.java @@ -162,7 +162,8 @@ public class NsProvider extends AbstractHafasProvider { final Line line = parseLineWithoutType(ParserUtils.resolveEntities(mDepFine.group(1))); - final String destination = ParserUtils.resolveEntities(mDepFine.group(2)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(2)); + final Location destination = new Location(LocationType.ANY, 0, null, destinationName); final Calendar parsedTime = new GregorianCalendar(timeZone()); parsedTime.setTimeInMillis(currentTime.getTimeInMillis()); @@ -173,7 +174,7 @@ public class NsProvider extends AbstractHafasProvider mDepFine.group(4); // TODO delay - final Departure dep = new Departure(parsedTime.getTime(), null, line, null, 0, destination, null, null); + final Departure dep = new Departure(parsedTime.getTime(), null, line, null, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index c4ecf14e..5ecc28b7 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -243,7 +243,8 @@ public class RmvProvider extends AbstractHafasProvider { final Line line = parseLineWithoutType(ParserUtils.resolveEntities(mDepFine.group(1))); - final String destination = ParserUtils.resolveEntities(mDepFine.group(2)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(2)); + final Location destination = new Location(LocationType.ANY, 0, null, destinationName); final Calendar plannedTime = new GregorianCalendar(timeZone()); plannedTime.setTimeInMillis(currentTime.getTimeInMillis()); @@ -270,7 +271,7 @@ public class RmvProvider extends AbstractHafasProvider final String position = ParserUtils.resolveEntities(ParserUtils.selectNotNull(mDepFine.group(5), mDepFine.group(6))); final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - position, 0, destination, null, null); + position, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/SeptaProvider.java b/src/de/schildbach/pte/SeptaProvider.java index 662e7f6e..fa75dfb9 100644 --- a/src/de/schildbach/pte/SeptaProvider.java +++ b/src/de/schildbach/pte/SeptaProvider.java @@ -260,13 +260,14 @@ public class SeptaProvider extends AbstractHafasProvider final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)), false); final int destinationId = mDepFine.group(5) != null ? Integer.parseInt(mDepFine.group(5)) : 0; - - final String destination = ParserUtils.resolveEntities(mDepFine.group(6)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(6)); + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - position, destinationId, destination, null, null); + position, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/ShProvider.java b/src/de/schildbach/pte/ShProvider.java index 2be8e22c..1ac82d02 100644 --- a/src/de/schildbach/pte/ShProvider.java +++ b/src/de/schildbach/pte/ShProvider.java @@ -226,12 +226,13 @@ public class ShProvider extends AbstractHafasProvider final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(3).trim()), false); final int destinationId = mDepFine.group(4) != null ? Integer.parseInt(mDepFine.group(4)) : 0; - - final String destination = ParserUtils.resolveEntities(mDepFine.group(5)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(5)); + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); final String position = mDepFine.group(6) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(6)) : null; - final Departure dep = new Departure(plannedTime.getTime(), null, line, position, destinationId, destination, null, null); + final Departure dep = new Departure(plannedTime.getTime(), null, line, position, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/VgsProvider.java b/src/de/schildbach/pte/VgsProvider.java index 24c6d752..fedf8c57 100644 --- a/src/de/schildbach/pte/VgsProvider.java +++ b/src/de/schildbach/pte/VgsProvider.java @@ -267,13 +267,14 @@ public class VgsProvider extends AbstractHafasProvider final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)), false); final int destinationId = mDepFine.group(5) != null ? Integer.parseInt(mDepFine.group(5)) : 0; - - final String destination = ParserUtils.resolveEntities(mDepFine.group(6)); + final String destinationName = ParserUtils.resolveEntities(mDepFine.group(6)); + final Location destination = new Location(destinationId > 0 ? LocationType.STATION : LocationType.ANY, destinationId, null, + destinationName); final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - position, destinationId, destination, null, null); + position, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/dto/Departure.java b/src/de/schildbach/pte/dto/Departure.java index b33703a5..03286e53 100644 --- a/src/de/schildbach/pte/dto/Departure.java +++ b/src/de/schildbach/pte/dto/Departure.java @@ -28,19 +28,17 @@ public final class Departure final public Date predictedTime; final public Line line; final public String position; - final public int destinationId; - final public String destination; + final public Location destination; final public int[] capacity; final public String message; - public Departure(final Date plannedTime, final Date predictedTime, final Line line, final String position, final int destinationId, - final String destination, final int[] capacity, final String message) + public Departure(final Date plannedTime, final Date predictedTime, final Line line, final String position, final Location destination, + final int[] capacity, final String message) { this.plannedTime = plannedTime; this.predictedTime = predictedTime; this.line = line; this.position = position; - this.destinationId = destinationId; this.destination = destination; this.capacity = capacity; this.message = message; @@ -58,8 +56,6 @@ public final class Departure builder.append(","); builder.append(position != null ? position : "null"); builder.append(","); - builder.append(destinationId); - builder.append(","); builder.append(destination != null ? destination : "null"); builder.append(")"); return builder.toString(); @@ -79,9 +75,7 @@ public final class Departure return false; if (!nullSafeEquals(this.line, other.line)) return false; - if (this.destinationId != other.destinationId) - return false; - if (!this.destination.equals(other.destination)) + if (!nullSafeEquals(this.destination, other.destination)) return false; return true; } @@ -96,9 +90,7 @@ public final class Departure hashCode *= 29; hashCode += nullSafeHashCode(line); hashCode *= 29; - hashCode += destinationId; - hashCode *= 29; - hashCode += destination.hashCode(); + hashCode += nullSafeHashCode(destination); return hashCode; } diff --git a/src/de/schildbach/pte/dto/LineDestination.java b/src/de/schildbach/pte/dto/LineDestination.java index 322c74a2..4a636645 100644 --- a/src/de/schildbach/pte/dto/LineDestination.java +++ b/src/de/schildbach/pte/dto/LineDestination.java @@ -23,13 +23,11 @@ package de.schildbach.pte.dto; public final class LineDestination { final public Line line; - final public int destinationId; - final public String destination; + final public Location destination; - public LineDestination(final Line line, final int destinationId, final String destination) + public LineDestination(final Line line, final Location destination) { this.line = line; - this.destinationId = destinationId; this.destination = destination; } @@ -39,8 +37,6 @@ public final class LineDestination StringBuilder builder = new StringBuilder("LineDestination("); builder.append(line != null ? line : "null"); builder.append(","); - builder.append(destinationId); - builder.append(","); builder.append(destination != null ? destination : "null"); builder.append(")"); return builder.toString(); @@ -56,8 +52,6 @@ public final class LineDestination final LineDestination other = (LineDestination) o; if (!nullSafeEquals(this.line, other.line)) return false; - if (this.destinationId != other.destinationId) - return false; if (!nullSafeEquals(this.destination, other.destination)) return false; return true; @@ -69,8 +63,6 @@ public final class LineDestination int hashCode = 0; hashCode += nullSafeHashCode(line); hashCode *= 29; - hashCode += destinationId; - hashCode *= 29; hashCode += nullSafeHashCode(destination); return hashCode; }