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

import java.util.Collection;
import java.util.HashSet;

import javax.enterprise.inject.Instance;
import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.core.exchange.wahl.NlExportArtefaktNachSystemExportstatusExportMapperResolver;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelE2ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelIIExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelN101EtAlExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelN102EtAlExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelN5ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelNa141ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelNa142Bijlage2ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelNa142ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelNa311ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelNa312ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelO3ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelO7ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelP221BijlageExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelP221ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelP222BijlageExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelP222ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelP2aExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelT11ExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelU16BijlageExportMapper;
import de.ivu.elect.was.exchange.ergebnis.NlWasModelU16ExportMapper;

@Specializes
public class NlWasExportArtefaktNachSystemExportstatusExportMapperResolver extends NlExportArtefaktNachSystemExportstatusExportMapperResolver {

  @Inject
  private transient Instance<NlWasModelN5ExportMapper> modelN5ExportMappers;

  @Inject
  private transient Instance<NlWasModelN101EtAlExportMapper> modelN101EtAlExportMappers;

  @Inject
  private transient Instance<NlWasModelN102EtAlExportMapper> modelN102EtAlExportMappers;

  @Inject
  private transient Instance<NlWasModelNa141ExportMapper> modelNa141ExportMappers;

  @Inject
  private transient Instance<NlWasModelNa142Bijlage2ExportMapper> modelNa142Bijlage2ExportMappers;

  @Inject
  private transient Instance<NlWasModelNa142ExportMapper> modelNa142ExportMappers;

  @Inject
  private transient Instance<NlWasModelP2aExportMapper> modelP2aExportMappers;

  @Inject
  private transient Instance<NlWasModelNa311ExportMapper> modelNa311ExportMappers;

  @Inject
  private transient Instance<NlWasModelNa312ExportMapper> modelNa312ExportMappers;

  @Inject
  private transient Instance<NlWasModelIIExportMapper> modelIIExportMappers;

  @Inject
  private transient Instance<NlWasModelT11ExportMapper> modelT11ExportMappers;

  @Inject
  private transient Instance<NlWasModelE2ExportMapper> modelE2ExportMappers;

  @Inject
  private transient Instance<NlWasModelO3ExportMapper> modelO3ExportMappers;

  @Inject
  private transient Instance<NlWasModelO7ExportMapper> modelO7ExportMappers;

  @Inject
  private transient Instance<NlWasModelP221ExportMapper> modelP221ExportMappers;

  @Inject
  private transient Instance<NlWasModelP221BijlageExportMapper> modelP221BijlageExportMappers;

  @Inject
  private transient Instance<NlWasModelP222ExportMapper> modelP222ExportMappers;

  @Inject
  private transient Instance<NlWasModelP222BijlageExportMapper> modelP222BijlageExportMappers;

  @Inject
  private transient Instance<NlWasModelU16ExportMapper> modelU16ExportMappers;

  @Inject
  private transient Instance<NlWasModelU16BijlageExportMapper> modelU16BijlageExportMappers;

  public NlWasExportArtefaktNachSystemExportstatusExportMapperResolver() {
    super();
  }

  public Collection<NlWasModelN5ExportMapper> collectModelN5ExportMappers() {
    Collection<NlWasModelN5ExportMapper> result = new HashSet<>();
    modelN5ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelN101EtAlExportMapper> collectModelN101EtAlExportMappers() {
    Collection<NlWasModelN101EtAlExportMapper> result = new HashSet<>();
    modelN101EtAlExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelN102EtAlExportMapper> collectModelN102EtAlExportMappers() {
    Collection<NlWasModelN102EtAlExportMapper> result = new HashSet<>();
    modelN102EtAlExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelNa141ExportMapper> collectModelNa141ExportMappers() {
    Collection<NlWasModelNa141ExportMapper> result = new HashSet<>();
    modelNa141ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelNa142Bijlage2ExportMapper> collectModelNa142Bijlage2ExportMappers() {
    Collection<NlWasModelNa142Bijlage2ExportMapper> result = new HashSet<>();
    modelNa142Bijlage2ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelNa142ExportMapper> collectModelNa142ExportMappers() {
    Collection<NlWasModelNa142ExportMapper> result = new HashSet<>();
    modelNa142ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelP2aExportMapper> collectModelP2aExportMappers() {
    Collection<NlWasModelP2aExportMapper> result = new HashSet<>();
    modelP2aExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelNa311ExportMapper> collectModelNa311ExportMappers() {
    Collection<NlWasModelNa311ExportMapper> result = new HashSet<>();
    modelNa311ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelNa312ExportMapper> collectModelNa312ExportMappers() {
    Collection<NlWasModelNa312ExportMapper> result = new HashSet<>();
    modelNa312ExportMappers.forEach(result::add);

    return result;
  }

  /**
   * @deprecated ELECT-15233, Model II -> Model Na 31-2
   */
  @Deprecated
  public Collection<NlWasModelIIExportMapper> collectModelIIExportMappers() {
    Collection<NlWasModelIIExportMapper> result = new HashSet<>();
    modelIIExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelT11ExportMapper> collectModelT11ExportMappers() {
    Collection<NlWasModelT11ExportMapper> result = new HashSet<>();
    modelT11ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelE2ExportMapper> collectModelE2ExportMappers() {
    Collection<NlWasModelE2ExportMapper> result = new HashSet<>();
    modelE2ExportMappers.forEach(result::add);

    return result;
  }

  /**
   * @deprecated ELECT-15233, Model O 3 -> Model O 7
   */
  @Deprecated
  public Collection<NlWasModelO3ExportMapper> collectModelO3ExportMappers() {
    Collection<NlWasModelO3ExportMapper> result = new HashSet<>();
    modelO3ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelO7ExportMapper> collectModelO7ExportMappers() {
    Collection<NlWasModelO7ExportMapper> result = new HashSet<>();
    modelO7ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelP221ExportMapper> collectModelP221ExportMappers() {
    Collection<NlWasModelP221ExportMapper> result = new HashSet<>();
    modelP221ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelP221BijlageExportMapper> collectModelP221BijlageExportMappers() {
    Collection<NlWasModelP221BijlageExportMapper> result = new HashSet<>();
    modelP221BijlageExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelP222ExportMapper> collectModelP222ExportMappers() {
    Collection<NlWasModelP222ExportMapper> result = new HashSet<>();
    modelP222ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelP222BijlageExportMapper> collectModelP222BijlageExportMappers() {
    Collection<NlWasModelP222BijlageExportMapper> result = new HashSet<>();
    modelP222BijlageExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelU16ExportMapper> collectModelU16ExportMappers() {
    Collection<NlWasModelU16ExportMapper> result = new HashSet<>();
    modelU16ExportMappers.forEach(result::add);

    return result;
  }

  public Collection<NlWasModelU16BijlageExportMapper> collectModelU16BijlageExportMappers() {
    Collection<NlWasModelU16BijlageExportMapper> result = new HashSet<>();
    modelU16BijlageExportMappers.forEach(result::add);

    return result;
  }
}
