diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index 8a396a4b..14775ca0 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1095,6 +1095,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return new Line(id, network, Product.HIGH_SPEED_TRAIN, "MT" + trainNum); if (("TLK".equals(trainType) || "Tanie Linie Kolejowe".equals(trainName)) && trainNum != null) return new Line(id, network, Product.HIGH_SPEED_TRAIN, "TLK" + trainNum); + if ("DNZ".equals(trainType) && "Nacht-Schnellzug".equals(trainName) && trainNum != null) + return new Line(id, network, Product.HIGH_SPEED_TRAIN, "DNZ" + trainNum); + if ("AVE".equals(trainType) && trainNum != null) // klimatisierter Hochgeschwindigkeitszug + return new Line(id, network, Product.HIGH_SPEED_TRAIN, "DNZ" + trainNum); if ("Zug".equals(trainName)) return new Line(id, network, Product.REGIONAL_TRAIN, symbol); @@ -1118,6 +1122,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return new Line(id, network, Product.REGIONAL_TRAIN, symbol); if (trainType == null && "RB67/71".equals(trainNum)) return new Line(id, network, Product.REGIONAL_TRAIN, trainNum); + if (trainType == null && "RB65/68".equals(trainNum)) + return new Line(id, network, Product.REGIONAL_TRAIN, trainNum); if ("RE-Bahn".equals(trainName)) return new Line(id, network, Product.REGIONAL_TRAIN, symbol); if ("REX".equals(trainType)) // RegionalExpress, Österreich @@ -1160,6 +1166,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return new Line(id, network, Product.REGIONAL_TRAIN, "EBx" + trainNum); if ("Erfurter Bahn Express".equals(longName) && symbol == null) return new Line(id, network, Product.REGIONAL_TRAIN, "EBx"); + if ("MR".equals(trainType) && "Märkische Regiobahn".equals(trainName) && trainNum != null) + return new Line(id, network, Product.REGIONAL_TRAIN, "MR" + trainNum); if ("MRB".equals(trainType) || "Mitteldeutsche Regiobahn".equals(trainName)) return new Line(id, network, Product.REGIONAL_TRAIN, "MRB" + trainNum); if ("ABR".equals(trainType) || "ABELLIO Rail NRW GmbH".equals(trainName)) @@ -1353,10 +1361,16 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return new Line(id, network, Product.REGIONAL_TRAIN, "OPX" + trainNum); if (("LEO".equals(trainType) || "Chiemgauer Lokalbahn".equals(trainName)) && trainNum != null) return new Line(id, network, Product.REGIONAL_TRAIN, "LEO" + trainNum); + if (("VAE".equals(trainType) || "Voralpen-Express".equals(trainName)) && trainNum != null) + return new Line(id, network, Product.REGIONAL_TRAIN, "VAE" + trainNum); if (("V6".equals(trainType) || "vlexx".equals(trainName)) && trainNum != null) return new Line(id, network, Product.REGIONAL_TRAIN, "vlexx" + trainNum); if (("ARZ".equals(trainType) || "Autoreisezug".equals(trainName)) && trainNum != null) return new Line(id, network, Product.REGIONAL_TRAIN, "ARZ" + trainNum); + if ("RR".equals(trainType)) + return new Line(id, network, Product.REGIONAL_TRAIN, "RR" + Strings.nullToEmpty(trainNum)); + if (("TER".equals(trainType) || "Train Express Regional".equals(trainName)) && trainNum != null) + return new Line(id, network, Product.REGIONAL_TRAIN, "TER" + trainNum); if ("BSB-Zug".equals(trainName) && trainNum != null) // Breisgau-S-Bahn return new Line(id, network, Product.SUBURBAN_TRAIN, trainNum); @@ -1413,14 +1427,15 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return new Line(id, network, Product.SUBURBAN_TRAIN, name); if ("S-Bahn".equals(trainName)) return new Line(id, network, Product.SUBURBAN_TRAIN, "S" + Strings.nullToEmpty(trainNum)); - if ("S5X".equals(symbol)) - return new Line(id, network, Product.SUBURBAN_TRAIN, "S5X"); if (symbol != null && symbol.equals(name)) { final Matcher m = P_LINE_S_DB.matcher(symbol); if (m.matches()) return new Line(id, network, Product.SUBURBAN_TRAIN, m.group(1)); } + if ("REX".equals(trainType)) + return new Line(id, network, Product.REGIONAL_TRAIN, "REX" + Strings.nullToEmpty(trainNum)); + return new Line(id, network, Product.SUBURBAN_TRAIN, ParserUtils.firstNotEmpty(symbol, name)); } else if ("2".equals(mot)) { @@ -1449,6 +1464,11 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { return new Line(id, network, null, ParserUtils.firstNotEmpty(symbol, name)); } + else if ("17".equals(mot)) + { + if (trainNum == null && "Schienenersatzverkeh".equals(trainName)) + return new Line(id, network, Product.BUS, "SEV"); + } throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName + "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'"); diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 635ea0dd..59d3a002 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -3286,7 +3286,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider return Product.HIGH_SPEED_TRAIN; if ("TGV".equals(ucType)) // Train à Grande Vitesse return Product.HIGH_SPEED_TRAIN; - if ("DNZ".equals(ucType)) // Nachtzug Basel-Moskau + if ("DNZ".equals(ucType)) // Nacht-Schnellzug return Product.HIGH_SPEED_TRAIN; if ("AIR".equals(ucType)) // Generic Flight return Product.HIGH_SPEED_TRAIN; @@ -3554,6 +3554,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider return Product.REGIONAL_TRAIN; if ("TER".equals(ucType)) // Transport express régional return Product.REGIONAL_TRAIN; + if ("ENO".equals(ucType)) + return Product.REGIONAL_TRAIN; + if ("THU".equals(ucType)) // Thurbo AG + return Product.REGIONAL_TRAIN; + if ("GW".equals(ucType)) // gwtr.cz + return Product.REGIONAL_TRAIN; // Suburban Trains if (P_LINE_SBAHN.matcher(ucType).matches()) // Generic (Night) S-Bahn diff --git a/enabler/src/de/schildbach/pte/BayernProvider.java b/enabler/src/de/schildbach/pte/BayernProvider.java index c2d53cb0..81dfc4fb 100644 --- a/enabler/src/de/schildbach/pte/BayernProvider.java +++ b/enabler/src/de/schildbach/pte/BayernProvider.java @@ -78,6 +78,8 @@ public class BayernProvider extends AbstractEfaProvider { if ("ABR".equals(trainType) || "ABELLIO Rail NRW GmbH".equals(trainName)) return new Line(id, network, Product.SUBURBAN_TRAIN, "ABR" + trainNum); + if ("SBB".equals(trainType) || "SBB GmbH".equals(trainName)) + return new Line(id, network, Product.REGIONAL_TRAIN, "SBB" + Strings.nullToEmpty(trainNum)); } else if ("5".equals(mot)) { diff --git a/enabler/src/de/schildbach/pte/NvbwProvider.java b/enabler/src/de/schildbach/pte/NvbwProvider.java index e5a5d91d..24bdf769 100644 --- a/enabler/src/de/schildbach/pte/NvbwProvider.java +++ b/enabler/src/de/schildbach/pte/NvbwProvider.java @@ -73,8 +73,6 @@ public class NvbwProvider extends AbstractEfaProvider return new Line(id, network, Product.REGIONAL_TRAIN, "IR"); if ("REGIOBAHN".equals(trainName) && trainNum == null) return new Line(id, network, Product.REGIONAL_TRAIN, null); - if ("RR".equals(trainType) && trainNum == null) - return new Line(id, network, Product.REGIONAL_TRAIN, "RR"); if ("Meridian".equals(trainName) && symbol != null) return new Line(id, network, Product.REGIONAL_TRAIN, symbol); if ("CityBahn".equals(trainName) && trainNum == null) diff --git a/enabler/src/de/schildbach/pte/SydneyProvider.java b/enabler/src/de/schildbach/pte/SydneyProvider.java index 9c8143ad..f555164d 100644 --- a/enabler/src/de/schildbach/pte/SydneyProvider.java +++ b/enabler/src/de/schildbach/pte/SydneyProvider.java @@ -108,6 +108,8 @@ public class SydneyProvider extends AbstractEfaProvider return new Line(id, network, Product.SUBURBAN_TRAIN, "WST"); if ("STH".equals(symbol)) // Southern NSW Line return new Line(id, network, Product.SUBURBAN_TRAIN, "STH"); + if ("NRW".equals(symbol)) // North Western NSW Line + return new Line(id, network, Product.SUBURBAN_TRAIN, "NRW"); if ("T1".equals(symbol) || "T1 North Shore & Northern Line".equals(symbol) || "T1 North Shore and Northern Line".equals(symbol) || "T1 Northern Line".equals(symbol) || "T1 Western Line".equals(symbol) @@ -154,7 +156,7 @@ public class SydneyProvider extends AbstractEfaProvider return new Line(id, network, Product.FERRY, "F6"); if ("F7".equals(symbol) || "F7 Eastern Suburbs".equals(symbol)) return new Line(id, network, Product.FERRY, "F7"); - if ("Private ferry servic".equals(trainName) && symbol != null) + if (("Private ferry servic".equals(trainName) || "Private ferry and fa".equals(trainName)) && symbol != null) return new Line(id, network, Product.FERRY, symbol); if ("MFF".equals(symbol) || "Manly Fast Ferry".equals(name)) return new Line(id, network, Product.FERRY, "MFF"); diff --git a/enabler/src/de/schildbach/pte/TlemProvider.java b/enabler/src/de/schildbach/pte/TlemProvider.java index 2bfd82ca..dd652901 100644 --- a/enabler/src/de/schildbach/pte/TlemProvider.java +++ b/enabler/src/de/schildbach/pte/TlemProvider.java @@ -23,6 +23,8 @@ import java.util.Set; import javax.annotation.Nullable; +import com.google.common.base.Strings; + import de.schildbach.pte.dto.Line; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.Style; @@ -77,6 +79,11 @@ public class TlemProvider extends AbstractEfaProvider if (trainType == null && ("DLR".equals(trainNum) || "Light Railway".equals(trainName))) return new Line(id, network, Product.SUBURBAN_TRAIN, "DLR"); } + else if ("13".equals(mot)) + { + if ("OO".equals(trainType) || "Ordinary passenger (o.pas.)".equals(trainName)) + return new Line(id, network, Product.REGIONAL_TRAIN, "OO" + Strings.nullToEmpty(trainNum)); + } return super.parseLine(id, network, mot, symbol, name, longName, trainType, trainNum, trainName); } diff --git a/enabler/src/de/schildbach/pte/VagfrProvider.java b/enabler/src/de/schildbach/pte/VagfrProvider.java index 6c126dd9..d8f213dc 100644 --- a/enabler/src/de/schildbach/pte/VagfrProvider.java +++ b/enabler/src/de/schildbach/pte/VagfrProvider.java @@ -52,8 +52,6 @@ public class VagfrProvider extends AbstractEfaProvider { if (("N".equals(trainType) || "Nahverkehrszug".equals(trainName)) && trainNum != null) return new Line(id, network, Product.REGIONAL_TRAIN, "N" + trainNum); - if (("VAE".equals(trainType) || "Voralpen-Express".equals(trainName)) && trainNum != null) - return new Line(id, network, Product.REGIONAL_TRAIN, "VAE" + trainNum); } return super.parseLine(id, network, mot, symbol, name, longName, trainType, trainNum, trainName); diff --git a/enabler/src/de/schildbach/pte/VorProvider.java b/enabler/src/de/schildbach/pte/VorProvider.java index f0d01311..7ea98864 100644 --- a/enabler/src/de/schildbach/pte/VorProvider.java +++ b/enabler/src/de/schildbach/pte/VorProvider.java @@ -80,6 +80,11 @@ public class VorProvider extends AbstractEfaProvider if ("WLB".equals(trainNum) && trainType == null) return new Line(id, network, Product.TRAM, "WLB"); } + else if ("1".equals(mot)) + { + if ("LILO".equals(symbol) && "Lokalbahn".equals(trainName)) + return new Line(id, network, Product.REGIONAL_TRAIN, "LILO"); + } return super.parseLine(id, network, mot, symbol, name, longName, trainType, trainNum, trainName); } diff --git a/enabler/src/de/schildbach/pte/ZvvProvider.java b/enabler/src/de/schildbach/pte/ZvvProvider.java index 252782b9..e0a7a82a 100644 --- a/enabler/src/de/schildbach/pte/ZvvProvider.java +++ b/enabler/src/de/schildbach/pte/ZvvProvider.java @@ -120,6 +120,9 @@ public class ZvvProvider extends AbstractHafasProvider if ("Trm-NF".equals(type)) return newLine(Product.TRAM, stripPrefix(number, "Trm", "Trm-NF"), null, Line.Attr.WHEEL_CHAIR_ACCESS); + if ("S18".equals(number)) + return newLine(Product.SUBURBAN_TRAIN, "S18", null); + if (type.length() > 0) { final Product product = normalizeType(type);