From 7a107c12e9d5bd7f473a6a374008d252b6243adf Mon Sep 17 00:00:00 2001 From: oboehm Date: Sun, 21 Jan 2018 19:28:57 +0100 Subject: [PATCH] Adresse(String) added --- src/main/java/de/jfachwert/post/Adresse.java | 21 +++++++++++++++++++ .../java/de/jfachwert/post/AdresseTest.java | 12 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/main/java/de/jfachwert/post/Adresse.java b/src/main/java/de/jfachwert/post/Adresse.java index d31b36c7..fbcf1238 100644 --- a/src/main/java/de/jfachwert/post/Adresse.java +++ b/src/main/java/de/jfachwert/post/Adresse.java @@ -44,6 +44,26 @@ public class Adresse implements Fachwert { private final String strasse; private final String hausnummer; + /** + * Zerlegt die uebergebene Adresse in ihre Einzelteile und baut daraus die + * Adresse zusammen. Folgende Heuristiken werden fuer die Zerlegung + * herangezogen: + * + * + * @param adresse z.B. "12345 Entenhausen, Gansstr. 23" + */ + public Adresse(String adresse) { + this(split(adresse)); + } + + private Adresse(String[] adresse) { + this(new Ort(adresse[0]), adresse[1], adresse[2]); + } + /** * Erzeugt eine neue Adresse. * @@ -128,6 +148,7 @@ private static List toStrasseHausnummer(String line) { String[] splitted = line.trim().split("\\s+"); if (splitted.length != 2) { splitted = line.split("\\s+[0-9]", 2); + splitted[1] = line.substring(splitted[0].length()).trim(); } if (splitted.length != 2) { throw new InvalidValueException(line, "street_or_house_number"); diff --git a/src/test/java/de/jfachwert/post/AdresseTest.java b/src/test/java/de/jfachwert/post/AdresseTest.java index 3c613cf8..6958d05b 100644 --- a/src/test/java/de/jfachwert/post/AdresseTest.java +++ b/src/test/java/de/jfachwert/post/AdresseTest.java @@ -75,5 +75,17 @@ public void testValidateStrasseOrt() { String adresse = "Nordh\u00e4user Stra\u00dfe 63\n99089 Erfurt"; Adresse.validate(adresse); } + + /** + * Hier testen wir, ob der Konstruktor die uebergebene Adresse richtig + * zerlegt. + */ + @Test + public void testAdresse() { + String musterdorf = "Alter Weg 110 a\n12345 Musterdorf"; + Adresse adresse = new Adresse(musterdorf); + assertEquals("Alter Weg", adresse.getStrasse()); + assertEquals("110 a", adresse.getHausnummer()); + } }