Praktikum 3: weitere Tests für Exceptions

This commit is contained in:
Johannes Theiner 2018-04-23 14:30:55 +02:00
parent 950e9cfd0c
commit 05eb757005
6 changed files with 62 additions and 12 deletions

View File

@ -1,8 +1,6 @@
package de.joethei.hs.java2.praktikum.praktikum3; package de.joethei.hs.java2.praktikum.praktikum3;
import java.io.IOException; public class TextFileFormatException extends Exception{
public class TextFileFormatException extends IOException {
public TextFileFormatException(String s) { public TextFileFormatException(String s) {
super(s); super(s);

View File

@ -10,16 +10,22 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
private Set<Vorlesung> vorlesungen = new HashSet<>(); private Set<Vorlesung> vorlesungen = new HashSet<>();
public Vorlesungsverzeichnis(String filename) throws IOException { public Vorlesungsverzeichnis(String filename) throws IOException, TextFileFormatException {
List<List<String>> datenbasis = load(filename); List<List<String>> datenbasis = load(filename);
for (List<String> entry : datenbasis) { for (List<String> entry : datenbasis) {
if (entry.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line"); 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 (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<List<String>> load(String filename) throws IOException { private List<List<String>> load(String filename) throws IOException {
List<List<String>> result = new ArrayList<>(); List<List<String>> result = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader(filename)); BufferedReader br = new BufferedReader(new FileReader(filename));
@ -29,6 +35,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return result; return result;
} }
/**
* @return eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
*/
public List<String> titles() { public List<String> titles() {
/* /*
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
@ -45,6 +54,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return list; return list;
} }
/**
* @return die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
*/
public Set<String> workaholics() { public Set<String> workaholics() {
/* /*
Set<String> s = new HashSet<>(); Set<String> s = new HashSet<>();
@ -69,6 +81,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return set; return set;
} }
/**
* @return eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet.
*/
public Map<String, List<String>> groupToTitles() { public Map<String, List<String>> groupToTitles() {
/* /*
Map<String, List<String>> map = new HashMap<>(); Map<String, List<String>> map = new HashMap<>();
@ -94,6 +109,10 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return map; 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<String, List<String>> multipleTitles() { public Map<String, List<String>> multipleTitles() {
/* /*
Map<String, List<String>> map = new HashMap<>(); Map<String, List<String>> map = new HashMap<>();
@ -131,6 +150,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
} }
/**
* @return Liste mit Vorlesungstitel absteigend sortiert nach Teilnehmerzahl
*/
public List<String> descendingTitles() { public List<String> descendingTitles() {
/* /*
List<String> l = new ArrayList<>(); List<String> l = new ArrayList<>();
@ -153,12 +175,16 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
SortedSet<Vorlesung> set = new TreeSet<>(this.reversed()); SortedSet<Vorlesung> set = new TreeSet<>(this.reversed());
set.addAll(vorlesungen); set.addAll(vorlesungen);
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
set.forEach(vorlesung -> list.add(vorlesung.getTitle())); set.forEach(vorlesung -> list.add(vorlesung.getTitle()));
return list; return list;
} }
/**
* für die aufsteigende Sortierung
*/
@Override @Override
public int compare(Vorlesung o1, Vorlesung o2) { public int compare(Vorlesung o1, Vorlesung o2) {
return Integer.compare(o1.getTeilnehmerzahl(), o2.getTeilnehmerzahl()); return Integer.compare(o1.getTeilnehmerzahl(), o2.getTeilnehmerzahl());

View File

@ -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

View File

@ -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

View File

@ -1,5 +1,6 @@
package de.joethei.hs.java2.tests; package de.joethei.hs.java2.tests;
import de.joethei.hs.java2.praktikum.praktikum3.TextFileFormatException;
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis; import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -17,18 +18,29 @@ public class VorlesungsverzeichnisTest {
@Before @Before
public void before() { public void before() {
try { try {
vorlesungsverzeichnis = new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("vorlesungen.txt")).getFile()); vorlesungsverzeichnis = new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen.txt")).getFile());
} catch (IOException e) { } catch (IOException | TextFileFormatException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@Test(expected = IOException.class) @Test(expected = IOException.class)
public void constructors() throws IOException { public void constructorIOException() throws IOException, TextFileFormatException {
new Vorlesungsverzeichnis("HalloWelt"); 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 @Test
public void titles() { public void titles() {
List<String> titles = new ArrayList<>(); List<String> titles = new ArrayList<>();