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

import java.util.List;

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

import de.ivu.elect.business.exchange.control.FileFormat;
import de.ivu.elect.business.stimmeingabe.control.StimmeingabeImportContext;
import de.ivu.elect.business.stimmeingabe.control.StimmeingabeImportExchange;
import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingang;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabeImporterErsetzenStrategie;
import de.ivu.elect.exchange.AbstractImportExchange;
import de.ivu.elect.exchange.ImportMapper;

public class DefaultStimmeingabeImportExchange extends AbstractImportExchange<List<Ergebniseingang>, StimmeingabeImportContext> implements StimmeingabeImportExchange {

  @Inject
  private transient Instance<StimmeingabeImportMapper> mapper;

  public DefaultStimmeingabeImportExchange() {
    super();
  }

  @Override
  protected Iterable<? extends ImportMapper<List<Ergebniseingang>, StimmeingabeImportContext>> getAllSupportedMapper() {
    return mapper;
  }

  @Override
  public StimmeingabeImporterErsetzenStrategie getStimmeingabeImporterErsetzenStrategie(FileFormat fileFormat, StimmeingabeImportContext context) {
    if (fileFormat != null) {
      var stimmeingabeImportMapper = (StimmeingabeImportMapper) getMapperForFileTypeAndContext(fileFormat, context);

      if (stimmeingabeImportMapper != null) {
        return stimmeingabeImportMapper.getStimmeingabeImporterErsetzenStrategie();
      }
    }

    return StimmeingabeImporterErsetzenStrategie.DEFAULT;
  }
}
