package de.ivu.elect.presentation.gebietsbaum.exchange;

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.exchange.control.AbstractExporter;
import de.ivu.elect.business.gebietsbaum.boundary.AnzahlWahlberechtigteExporter;
import de.ivu.elect.business.gebietsbaum.entity.AnzahlWahlberechtigteExchangeObjekt;
import de.ivu.elect.business.gebietsbaum.entity.AnzahlWahlberechtigteExportContext;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.exchange.AbstractExportSearchView;
import de.ivu.elect.presentation.exchange.ExportDescription;

@Named(AnzahlWahlberechtigteExportView.COMPONENT_NAME)
@View(viewId = AnzahlWahlberechtigteExportView.VIEW_ID, useCase = UseCasePermission.ANZAHL_WAHLBERECHTIGTE_EXPORTIEREN)
public class AnzahlWahlberechtigteExportView extends AbstractExportSearchView<AnzahlWahlberechtigteExchangeObjekt, AnzahlWahlberechtigteExportContext> {

  public static final String COMPONENT_NAME = "anzahlWahlberechtigteExportView";

  public static final String VIEW_ID = "/gebietsbaum/anzahl-wahlberechtigte-export.xhtml";

  private static final long serialVersionUID = 1L;

  @Inject
  private transient AnzahlWahlberechtigteExportDescription exportDescription;

  @Inject
  private transient AnzahlWahlberechtigteExporter anzahlWahlberechtigteExporter;

  @Override
  @PreConditionCheck
  public String checkPreCondition() {
    if (getSelectedWahl() == null) {
      return getStartViewId();
    }

    return super.checkPreCondition();
  }

  @Override
  public ExportDescription getExportDescription() {
    return exportDescription;
  }

  @Override
  protected AbstractExporter<AnzahlWahlberechtigteExchangeObjekt, AnzahlWahlberechtigteExportContext> getExporter() {
    return anzahlWahlberechtigteExporter;
  }

  @Override
  protected AnzahlWahlberechtigteExportContext getContext() {
    return new AnzahlWahlberechtigteExportContext(getSelectedWahl());
  }
}
