
package de.ivu.elect.business.ergebnis.control;

import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.ergebnis.entity.Ergebnis;
import de.ivu.elect.business.ergebnis.entity.Ergebnisart;
import de.ivu.elect.business.wahl.boundary.WahlDAO;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.faces.Messages;

public class ErgebnisCreate extends AbstractErgebnisCreate {

  @Inject
  private WahlDAO wahlDAO;

  @Inject
  private Messages messages;

  @Override
  public void save(Ergebnis ergebnis) {
    save(ergebnis.getWahl(), ergebnis);
  }

  private void save(Wahl wahl, Ergebnis ergebnis) {
    ergebnis.setWahl(attach(wahl));

    super.save(ergebnis);
  }

  public void createIfNotExists(Wahl wahl, Ergebnisart ergebnisart) {
    List<Ergebnis> ergebnisse = dao.findByWahlAndErgebnisart(attach(wahl), ergebnisart);

    if (ergebnisse.isEmpty()) {
      create(wahl, ergebnisart);
    }
  }

  public void create(Wahl wahl, Ergebnisart ergebnisart) {
    Ergebnis ergebnis = new Ergebnis();
    ergebnis.setWahl(attach(wahl));
    ergebnis.setErgebnisart(ergebnisart);
    ergebnis.setName(messages.lokalisiere(ergebnisart));

    super.save(ergebnis);
  }

  private Wahl attach(Wahl wahl) {
    return wahlDAO.attach(wahl);
  }
}
