
package de.ivu.elect.exchange.gebietsbaum;

import java.util.List;

import org.apache.commons.lang3.StringUtils;

import de.ivu.elect.business.gebietsbaum.control.GebietByDepthFirstComparator;
import de.ivu.elect.business.gebietsbaum.control.GebietsbaumExchangeContext;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.exchange.gebietsbaum.csv.AbstractGebietsbaumCsvExportMapper;

public class PruefkennzeichenGebietsbaumCsvExportMapper extends AbstractGebietsbaumCsvExportMapper<PruefkennzifferGebietDTO> {

  public static final String FILE_FORMAT_NAME = "file.format.gebietsbaum.pruefkennziffer";

  public PruefkennzeichenGebietsbaumCsvExportMapper() {
    super();
  }

  @Override
  public boolean isAcceptContext(GebietsbaumExchangeContext context) {
    return context.hasWahl() || context.hasWahltermin();
  }

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

  @Override
  protected boolean isRelevantGebiet(Gebiet gebiet, GebietsbaumExchangeContext context) {
    return StringUtils.isNotBlank(gebiet.getExterneId());
  }

  @Override
  protected void sortiereGebiete(List<Gebiet> gebiete) {
    gebiete.sort(new GebietByDepthFirstComparator());
  }

  @Override
  protected PruefkennzifferGebietDTO createDto(Gebiet gebiet, GebietsbaumExchangeContext context) {
    return new PruefkennzifferGebietDTO(gebiet);
  }
}
