package de.nak.notendb.service;
import java.util.Iterator;
import java.util.List;
import de.nak.notendb.dao.PruefungsfachDAO;
import de.nak.notendb.model.Pruefungsfach;
/**
* Implementation des PruefungsfachService fuer die Verwaltung von Pruefungsfaechern
*
* @author Julian Pusch
*
*/
public class PruefungsfachServiceImpl implements PruefungsfachService {
private PruefungsfachDAO pruefungsfachDAO;
public void setPruefungsfachDAO(PruefungsfachDAO pruefungsfachDAO) {
this.pruefungsfachDAO = pruefungsfachDAO;
}
@Override
public Pruefungsfach ladeFach(Long pruefungsfachId) throws PruefungsfachNichtGefundenException {
Pruefungsfach fach = pruefungsfachDAO.lade(pruefungsfachId);
if (fach == null) {
throw new PruefungsfachNichtGefundenException();
}
return fach;
}
@Override
public List<Pruefungsfach> ladeAlle() {
return pruefungsfachDAO.ladeAlle();
}
@Override
public List<Pruefungsfach> ladeFaecherZuManipel(Long manipelId) {
// Alle Faecher laden
List<Pruefungsfach> rueckgabe = pruefungsfachDAO.ladeAlle();
Pruefungsfach fach;
// Faecher die nicht zu Manipel gehören entfernen
for ( Iterator<Pruefungsfach> iterator = rueckgabe.iterator(); iterator.hasNext(); )
{
fach = iterator.next();
if (!(fach.getManipel().getId().equals(manipelId))) {
iterator.remove();
}
}
return rueckgabe;
}
@Override
public void speichere(Pruefungsfach fach) throws PruefungsfachExistentException {
if (pruefungsfachDAO.ladePruefungsfaecherZuManipelUndTitel
(fach.getManipel(), fach.getTitel()).isEmpty() == false) {
throw new PruefungsfachExistentException();
} else {
pruefungsfachDAO.speichere(fach);
}
}
@Override
public void loescheAlle() {
pruefungsfachDAO.loescheAlle();
}
}