Skip to content

Commit

Permalink
Adresse(String) added
Browse files Browse the repository at this point in the history
  • Loading branch information
oboehm committed Jan 21, 2018
1 parent 8d04dd4 commit 7a107c1
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/main/java/de/jfachwert/post/Adresse.java
Original file line number Diff line number Diff line change
Expand Up @@ -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:
* <ul>
* <li>Reihenfolge kann Ort, Strasse oder Strasse, Ort sein</li>
* <li>Ort / Strasse werden durch Komma oder Zeilenvorschub getrennt</li>
* <li>vor dem Ort steht die PLZ</li>
* </ul>
*
* @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.
*
Expand Down Expand Up @@ -128,6 +148,7 @@ private static List<String> 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");
Expand Down
12 changes: 12 additions & 0 deletions src/test/java/de/jfachwert/post/AdresseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

}

0 comments on commit 7a107c1

Please sign in to comment.