diff --git a/src/de/schildbach/pte/SbbProvider.java b/src/de/schildbach/pte/SbbProvider.java index ac71e669..bd718f3c 100644 --- a/src/de/schildbach/pte/SbbProvider.java +++ b/src/de/schildbach/pte/SbbProvider.java @@ -204,8 +204,8 @@ public class SbbProvider implements NetworkProvider + "\n?(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n?)?.*?" // departureDate + "(?:(\\d{2}:\\d{2})| ).*?" // departureTime + "\n?\\s*(.+?)?\\s*\n?.*?" // departurePosition - + "\"(.*?)\".*?.*?" // line - + "(?:\n?(\\d+) Min\\..*?)?.*?" // min + + "\"(.*?)\"
.*?" // line + + "(?:\n?(\\d+) Min\\..*?.*?)?" // min + "" // arrivalId, + "(.*?).*?" // arrival + "\n?(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n?)?.*?" // arrivalDate @@ -433,6 +433,7 @@ public class SbbProvider implements NetworkProvider } private static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüß]+)[\\s-]*(.*)"); + private static final Pattern P_NORMALIZE_LINE_SBAHN = Pattern.compile("s\\d*"); private static String normalizeLine(final String type, final String line) { @@ -457,13 +458,17 @@ public class SbbProvider implements NetworkProvider return "I" + strippedLine; if (type.equals("tha")) // Thalys return "I" + strippedLine; + if (type.equals("rj")) // RailJet, Österreichische Bundesbahnen + return "I" + strippedLine; if (type.equals("r")) return "R" + strippedLine; if (type.equals("re")) return "R" + strippedLine; if (type.equals("ir")) return "R" + strippedLine; - if (type.matches("s\\d*")) + if (type.equals("d")) + return "R" + strippedLine; + if (P_NORMALIZE_LINE_SBAHN.matcher(type).matches()) return "S" + strippedLine; if (type.equals("tra")) return "T" + strippedLine; @@ -529,7 +534,7 @@ public class SbbProvider implements NetworkProvider return "R" + number; if (type.equals("IR")) // InterRegio return "RIR" + number; - if (type.equals("D")) // D-Zug? + if (type.equals("D")) return "RD" + number; if (type.equals("E")) return "RE" + number; diff --git a/test/de/schildbach/pte/SbbProviderTest.java b/test/de/schildbach/pte/SbbProviderTest.java index f14d98c4..a14edf07 100644 --- a/test/de/schildbach/pte/SbbProviderTest.java +++ b/test/de/schildbach/pte/SbbProviderTest.java @@ -28,6 +28,47 @@ import org.junit.Test; */ public class SbbProviderTest { + @Test + public void tripThatTriggeredLongRunningMatch() + { + assertFineConnectionDetails("\n" // + + "\"Umgebungskarte:\n" // + + "\n" // + + "\n" // + + "Budapest-Keleti pu.\n" // + + "\n" // + + "Di, 10.08.10\n" // + + "\n" // + + "ab21:05\n" // + + "\n" // + + "\n" // + + "\"EN
\n" // + + "\n" // + + "EN 462\n" // + + "\n" // + + "\n" // + + "\n" // + + "
\n" // + + "
\n" // + + "
\n" // + + "
\n" // + + "
\n" // + + "
\n" // + + "\n" // + + "\n" // + + "EuroNight, \"Nur \"Reservierung \"Schlafwagen\" \"Liegewagen\" \"Minibar\" GP \n" // + + "\n" // + + "\"Umgebungskarte:\n" // + + "\n" // + + "München Hbf\n" // + + "\n" // + + "Mi, 11.08.10\n" // + + "\n" // + + "an06:15\n" // + + "12 \n" // + + "\n"); + } + @Test public void tripWithoutDate() {