
package de.ivu.elect.was.exchange.ergebnis;

import static java.util.Arrays.asList;

import java.util.Collection;

import javax.inject.Inject;

import de.ivu.elect.business.ergebnis.boundary.NlWasModelP221BulkExporter;
import de.ivu.elect.business.security.Customer;
import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingabestatus;
import de.ivu.elect.business.wahl.entity.NlWahlart;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.was.exchange.ergebnis.eml.AbstractNlWasEml5xxNachGebietErgebniseingabestatusExportMapper;
import de.ivu.elect.was.exchange.ergebnis.eml.Eml520ErgebnisExportMapper;

/**
 * @see NlWasModelP221MainDocumentExportMapper
 */
public class NlWasModelP221Eml520ExportMapper extends AbstractNlWasEml5xxNachGebietErgebniseingabestatusExportMapper implements NlWasModelP221ExportMapper {

  @Inject
  private transient Eml520ErgebnisExportMapper eml520ErgebnisExportMapper;

  public NlWasModelP221Eml520ExportMapper() {
    super();
  }

  @Override // https://support.elect-it.com/wiki/x/48g8
  protected Collection<NlWahlart> collectWahlartenAccepted() {
    return asList( //
        NlWahlart.TWEEDE_KAMER, //
        NlWahlart.EUROPEES_PARLEMENT, //
        NlWahlart.PROVINCIALE_STATEN2 //
    );
  }

  @Override // https://support.elect-it.com/wiki/x/48g8
  protected boolean isAcceptWahlebene(Wahl wahl, Customer customer) {
    return NlWahlart.isWasCSB(wahl, customer);
  }

  @Override
  protected Collection<Ergebniseingabestatus> collectErgebniseingabestatusAccepted() {
    return NlWasModelP221BulkExporter.EXPORT_ERGEBNISEINGABESTATUS;
  }

  @Override
  protected Eml520ErgebnisExportMapper getEmlExportMapper() {
    return eml520ErgebnisExportMapper;
  }
}
