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

import static java.util.stream.Collectors.toSet;

import java.util.Collection;

import javax.annotation.Nullable;

import de.ivu.elect.business.datei.entity.Datei;
import de.ivu.elect.business.wahl.control.AbstractNlExportArtefaktNachSystemExportstatusExportContext;
import de.ivu.elect.core.exchange.wahl.AbstractNlExportArtefaktNachSystemExportstatusZipExportMapper;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.presentation.ergebnis.exchange.NlWasModelP2aBulkExportDescription;
import de.ivu.elect.was.exchange.wahl.NlWasExportArtefaktNachSystemExportstatusExportMapperResolver;

public class NlWasModelP2aZipExportMapper extends AbstractNlExportArtefaktNachSystemExportstatusZipExportMapper implements NlWasModelP2aBulkExportMapper {

  public static final String FILE_FORMAT_NAME = NlWasModelP2aBulkExportDescription.FILE_FORMAT_NAME;

  public NlWasModelP2aZipExportMapper() {
    super();
  }

  @Override
  public String getFileFormatName() {
    return FILE_FORMAT_NAME;
  }

  @Override
  public void addProperties(FormBuilder formBuilder, AbstractNlExportArtefaktNachSystemExportstatusExportContext context, @Nullable Datei datei) {
    NlWasModelP2aBulkExportMapper.super.addProperties(formBuilder, context, datei);

    super.addProperties(formBuilder, context, datei);
  }

  @Override
  protected Collection<NlWasModelP2aExportMapper> collectSimpleExportMappersIgnoringSystemExportstatus(AbstractNlExportArtefaktNachSystemExportstatusExportContext context) {
    return getExportMapperResolver().collectModelP2aExportMappers().stream() //
        .filter(exportMapper -> exportMapper.isAcceptContextIgnoringSystemExportstatus(context)) //
        .collect(toSet());
  }

  @Override
  protected NlWasExportArtefaktNachSystemExportstatusExportMapperResolver getExportMapperResolver() {
    return (NlWasExportArtefaktNachSystemExportstatusExportMapperResolver) super.getExportMapperResolver();
  }
}
