
package de.ivu.elect.presentation.kandidatur;

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gruppe.boundary.EinzelbewerberBoundaryCreate;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.kandidatur.entity.Direktkandidatur;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.presentation.kandidatur.form.EinzelbewerberKandidaturViewFormBuilder;

public class EinzelbewerberDirektkandidaturCreateViewHelper extends AbstractDirektkandidaturCreateViewHelper {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient EinzelbewerberBoundaryCreate einzelbewerberBoundaryCreate;

  @Inject
  protected transient EinzelbewerberKandidaturViewFormBuilder einzelbewerberKandidaturViewFormBuilder;

  public EinzelbewerberDirektkandidaturCreateViewHelper() {
    super();
  }

  @Override
  public String getViewId() {
    return EinzelbewerberDirektkandidaturCreateView.VIEW_ID;
  }

  @Override
  public String getParentViewId() {
    return EinzelbewerberDirektkandidaturCreateView.PARENT_VIEW_ID;
  }

  @Override
  protected EinzelbewerberKandidaturViewFormBuilder getViewFormBuilder() {
    return einzelbewerberKandidaturViewFormBuilder;
  }

  @Override
  public void init(Gebiet gebiet, Direktkandidatur einzelkandidatur) {
    super.init(gebiet, einzelkandidatur);

    einzelkandidatur.getGruppeImGebiet().setGruppe(createEinzelbewerberGruppe(gebiet.getWahl()));
  }

  private PolitischeGruppe createEinzelbewerberGruppe(Wahl wahl) {
    return einzelbewerberBoundaryCreate.createGruppe(wahl);
  }

  @Override
  public String getEntityEinzahlMessage() {
    return getViewFormBuilder().getEntityEinzahlMessage(getSelectedGebiet());
  }
}
