From 05eb75700530f11b37f83b9e2a8cbb460990175a Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Mon, 23 Apr 2018 14:30:55 +0200 Subject: [PATCH] =?UTF-8?q?Praktikum=203:=20weitere=20Tests=20f=C3=BCr=20E?= =?UTF-8?q?xceptions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../praktikum3/TextFileFormatException.java | 4 +- .../praktikum3/Vorlesungsverzeichnis.java | 38 ++++++++++++++++--- .../praktikum3/vorlesungen-format.txt | 7 ++++ .../praktikum3/vorlesungen-number.txt | 7 ++++ .../{ => praktikum3}/vorlesungen.txt | 0 .../tests/VorlesungsverzeichnisTest.java | 18 +++++++-- 6 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 src/main/resources/praktikum3/vorlesungen-format.txt create mode 100644 src/main/resources/praktikum3/vorlesungen-number.txt rename src/main/resources/{ => praktikum3}/vorlesungen.txt (100%) diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/TextFileFormatException.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/TextFileFormatException.java index ababeab..cab3e42 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/TextFileFormatException.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/TextFileFormatException.java @@ -1,8 +1,6 @@ package de.joethei.hs.java2.praktikum.praktikum3; -import java.io.IOException; - -public class TextFileFormatException extends IOException { +public class TextFileFormatException extends Exception{ public TextFileFormatException(String s) { super(s); diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java index 9ee5f75..36cc255 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java @@ -10,16 +10,22 @@ public class Vorlesungsverzeichnis implements Comparator{ private Set vorlesungen = new HashSet<>(); - public Vorlesungsverzeichnis(String filename) throws IOException { + public Vorlesungsverzeichnis(String filename) throws IOException, TextFileFormatException { List> datenbasis = load(filename); - for (List entry : datenbasis) { - if (entry.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line"); - for (String s : entry) if (s.isEmpty()) throw new TextFileFormatException("empty attribute"); + for (List entry : datenbasis) { + if (entry.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line"); + for (String s : entry) if (s.isEmpty()) throw new TextFileFormatException("empty attribute"); - vorlesungen.add(new Vorlesung(entry)); - } + vorlesungen.add(new Vorlesung(entry)); + } } + /** + * Lädt die Datenbasis von einer Datei + * @param filename Dateiname + * @return Liste der Einträge + * @throws IOException Dateifehler + */ private List> load(String filename) throws IOException { List> result = new ArrayList<>(); BufferedReader br = new BufferedReader(new FileReader(filename)); @@ -29,6 +35,9 @@ public class Vorlesungsverzeichnis implements Comparator{ return result; } + /** + * @return eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen. + */ public List titles() { /* List list = new ArrayList<>(); @@ -45,6 +54,9 @@ public class Vorlesungsverzeichnis implements Comparator{ return list; } + /** + * @return die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten. + */ public Set workaholics() { /* Set s = new HashSet<>(); @@ -69,6 +81,9 @@ public class Vorlesungsverzeichnis implements Comparator{ return set; } + /** + * @return eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet. + */ public Map> groupToTitles() { /* Map> map = new HashMap<>(); @@ -94,6 +109,10 @@ public class Vorlesungsverzeichnis implements Comparator{ return map; } + /** + * @return eine Map, die Vorlesungen auf Listen von Dozenten, die diese Vorlesungen halten, abbildet. + * Als Schlüssel werden in der Map nur Vorlesungen verwendet, die von unterschiedlichen Dozenten gehalten werden. + */ public Map> multipleTitles() { /* Map> map = new HashMap<>(); @@ -131,6 +150,9 @@ public class Vorlesungsverzeichnis implements Comparator{ } + /** + * @return Liste mit Vorlesungstitel absteigend sortiert nach Teilnehmerzahl + */ public List descendingTitles() { /* List l = new ArrayList<>(); @@ -153,12 +175,16 @@ public class Vorlesungsverzeichnis implements Comparator{ SortedSet set = new TreeSet<>(this.reversed()); set.addAll(vorlesungen); + List list = new ArrayList<>(); set.forEach(vorlesung -> list.add(vorlesung.getTitle())); return list; } + /** + * für die aufsteigende Sortierung + */ @Override public int compare(Vorlesung o1, Vorlesung o2) { return Integer.compare(o1.getTeilnehmerzahl(), o2.getTeilnehmerzahl()); diff --git a/src/main/resources/praktikum3/vorlesungen-format.txt b/src/main/resources/praktikum3/vorlesungen-format.txt new file mode 100644 index 0000000..405dbb1 --- /dev/null +++ b/src/main/resources/praktikum3/vorlesungen-format.txt @@ -0,0 +1,7 @@ +I2:Java 2:Rump:100 +I2:Algorithmen und Datenstrukturen:Totzauer:30 +MT2::von Coelln:60 +MT2:Audio-/Videotechnik:Lemke:50 +E2:Mathematik 2:Rabe:20 +I4:Rechnerarchitekturen:von Coelln:45 +I4:Internet-Technologien:Rump:40 \ No newline at end of file diff --git a/src/main/resources/praktikum3/vorlesungen-number.txt b/src/main/resources/praktikum3/vorlesungen-number.txt new file mode 100644 index 0000000..9525bd5 --- /dev/null +++ b/src/main/resources/praktikum3/vorlesungen-number.txt @@ -0,0 +1,7 @@ +I2:Java 2:Rump:100 +I2:Algorithmen und Datenstrukturen:Totzauer:80 +MT2:Mathematik 2:von Coelln:60 +MT2:Audio-/Videotechnik:Lemke:5F +E2:Mathematik 2:Rabe:70 +I4:Rechnerarchitekturen:von Coelln:45 +I4:Internet-Technologien:Rump:40 \ No newline at end of file diff --git a/src/main/resources/vorlesungen.txt b/src/main/resources/praktikum3/vorlesungen.txt similarity index 100% rename from src/main/resources/vorlesungen.txt rename to src/main/resources/praktikum3/vorlesungen.txt diff --git a/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java b/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java index aca4167..047b665 100644 --- a/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java +++ b/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java @@ -1,5 +1,6 @@ package de.joethei.hs.java2.tests; +import de.joethei.hs.java2.praktikum.praktikum3.TextFileFormatException; import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis; import org.junit.Before; import org.junit.Test; @@ -17,18 +18,29 @@ public class VorlesungsverzeichnisTest { @Before public void before() { try { - vorlesungsverzeichnis = new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("vorlesungen.txt")).getFile()); - } catch (IOException e) { + vorlesungsverzeichnis = new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen.txt")).getFile()); + } catch (IOException | TextFileFormatException e) { e.printStackTrace(); } } @Test(expected = IOException.class) - public void constructors() throws IOException { + public void constructorIOException() throws IOException, TextFileFormatException { new Vorlesungsverzeichnis("HalloWelt"); } + @Test(expected = TextFileFormatException.class) + public void constructorTextFileFormatException() throws IOException, TextFileFormatException { + new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen-format.txt")).getFile()); + } + + @Test(expected = NumberFormatException.class) + public void constructorNumberFormatException() throws IOException, TextFileFormatException { + new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen-number.txt")).getFile()); + } + + @Test public void titles() { List titles = new ArrayList<>();