
package de.ivu.elect.wus.exchange.stimmzettel;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.stimmzettel.control.StimmzettelExportContext;
import de.ivu.elect.business.stimmzettel.control.StimmzettelExportExchange;
import de.ivu.elect.business.stimmzettel.control.StimmzettelExportObject;
import de.ivu.elect.exchange.AbstractExportExchange;
import de.ivu.elect.exchange.ExchangeException;
import de.ivu.elect.exchange.ExportMapper;

public class DefaultStimmzettelExportExchange extends AbstractExportExchange<StimmzettelExportObject, StimmzettelExportContext> implements StimmzettelExportExchange {

  private static final Logger LOG = LoggerFactory.getLogger(DefaultStimmzettelExportExchange.class);

  @Inject
  private transient Instance<StimmzettelExportMapper> mapper;

  public DefaultStimmzettelExportExchange() {
    super();
  }

  @Override
  protected Iterable< ? extends StimmzettelExportMapper> getAllSupportedMapper() {
    return mapper;
  }

  /**
   * @deprecated
   * @see Exchange#addProperties
   */
  @Override
  @Deprecated
  public boolean isDokumentVorlageBenoetigt(StimmzettelExportContext context) {
    try {
      for (ExportMapper<StimmzettelExportObject, StimmzettelExportContext> mapper : getSupportedMapperForContext(context)) {
        if (((StimmzettelExportMapper) mapper).isDokumentVorlageBenoetigt()) {
          return true;
        }
      }

    } catch (ExchangeException ignored) {
      LOG.debug("Fehler beim Abfrage von ExportMappern.", ignored);
      // Der fehlende Mapper fliegt uns noch an anderer Stelle um die Ohren und wird da auch richtig behandelt.
      // An dieser Stelle aber lautet die fachlich korrekte Antwort: ohne Mapper braucht auch niemand eine Vorlage.
    }

    return false;
  }
}
