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;
import java.io.IOException;
public class TextFileFormatException extends IOException {
public class TextFileFormatException extends Exception{
public TextFileFormatException(String s) {
super(s);

View File

@ -10,16 +10,22 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
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);
for (List<String> 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<String> 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<List<String>> load(String filename) throws IOException {
List<List<String>> result = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader(filename));
@ -29,6 +35,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return result;
}
/**
* @return eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
*/
public List<String> titles() {
/*
List<String> list = new ArrayList<>();
@ -45,6 +54,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return list;
}
/**
* @return die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
*/
public Set<String> workaholics() {
/*
Set<String> s = new HashSet<>();
@ -69,6 +81,9 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
return set;
}
/**
* @return eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet.
*/
public Map<String, List<String>> groupToTitles() {
/*
Map<String, List<String>> map = new HashMap<>();
@ -94,6 +109,10 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
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() {
/*
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() {
/*
List<String> l = new ArrayList<>();
@ -153,12 +175,16 @@ public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
SortedSet<Vorlesung> set = new TreeSet<>(this.reversed());
set.addAll(vorlesungen);
List<String> 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());

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;
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<String> titles = new ArrayList<>();