package de.nak.notendb.service;
import java.util.ArrayList;
import java.util.List;
import de.nak.notendb.dao.PruefungDAO;
import de.nak.notendb.dao.PruefungsleistungDAO;
import de.nak.notendb.model.Pruefung;
import de.nak.notendb.model.Pruefungsleistung;
/**
* Implementation des PruefungsService fuer die Verwaltung von Pruefungen
*
* @author Julian Pusch
*
*/
public class PruefungServiceImpl implements PruefungService {
private PruefungDAO pruefungDAO;
private PruefungsleistungDAO pruefungsleistungDAO;
public void setPruefungDAO(PruefungDAO pruefungDAO) {
this.pruefungDAO = pruefungDAO;
}
public void setPruefungsleistungDAO(PruefungsleistungDAO pruefungsleistungDAO) {
this.pruefungsleistungDAO = pruefungsleistungDAO;
}
@Override
public Pruefung ladePruefung(Long pruefungId) throws PruefungNichtGefundenException {
Pruefung pruefung = pruefungDAO.lade(pruefungId);
if (pruefung == null) {
throw new PruefungNichtGefundenException();
}
return pruefung;
}
@Override
public List<Pruefung> ladePruefungenZuFach(Long fachId) {
return pruefungDAO.ladePruefungenZuFach(fachId);
}
@Override
public List<Pruefung> ladeMuendlichePruefungenZuFach(Long fachId) {
// Alle Leistungen mit muendlicher laden
List<Pruefungsleistung> leistungen = pruefungsleistungDAO.ladeLeistungenMitMuendlich();
List<Pruefung> pruefungen = new ArrayList<Pruefung>();
// Pruefungen zu Fach aus Leistungen heraussuchen
for (Pruefungsleistung leistung : leistungen) {
if (leistung.getGueltig()
&& !(pruefungen.contains(leistung.getPruefung()))
&& leistung.getPruefung().getFach().getId().equals(fachId)) {
pruefungen.add(leistung.getPruefung());
}
}
return pruefungen;
}
@Override
public List<Pruefung> ladePruefungenMitMuendlicher() {
// Alle Leistungen mit muendlicher laden
List<Pruefungsleistung> leistungen = pruefungsleistungDAO.ladeLeistungenMitMuendlich();
List<Pruefung> pruefungen = new ArrayList<Pruefung>();
// Pruefungen aus Leistungen heraussuchen
for (Pruefungsleistung leistung : leistungen) {
if (leistung.getGueltig()
&& !(pruefungen.contains(leistung.getPruefung()))) {
pruefungen.add(leistung.getPruefung());
}
}
return pruefungen;
}
@Override
public List<Pruefung> ladeAlle() {
return pruefungDAO.ladeAlle();
}
@Override
public void speichere(Pruefung pruefung) throws PruefungExistentException {
if (pruefungDAO.ladePruefungenZuFachUndDozentUndDatum(pruefung.getFach(),pruefung.getDozent(),
pruefung.getDatum()).isEmpty() == false) {
throw new PruefungExistentException();
} else {
pruefungDAO.speichere(pruefung);
}
}
@Override
public void loescheAlle() {
pruefungDAO.loescheAlle();
}
}