
package de.ivu.elect.business.wahl.boundary;

import java.util.List;
import java.util.stream.Collectors;

import de.ivu.elect.business.wahl.entity.Wahlart;

public class WahlartSearch extends AbstractWahlartSearch {

  public WahlartSearch() {
    super();
  }

  @Override
  protected List<Wahlart> querySearchResult(WahlartSearchParameters searchParameters) {
    return dao.findByAllOrderByName(searchParameters.getMandant()).stream()
        .filter(wa -> isWahlartGebietsebenePasst(searchParameters, wa))
        .filter(wa -> isSystemebenePasst(searchParameters, wa))
        .collect(Collectors.toList());
  }

  private boolean isWahlartGebietsebenePasst(WahlartSearchParameters searchParameters, Wahlart wa) {
    return searchParameters.getWahlartSystemGebietsebene() == null || searchParameters.getWahlartSystemGebietsebene().equals(wa.getSystemGebietsebene());
  }

  private boolean isSystemebenePasst(WahlartSearchParameters searchParameters, Wahlart wa) {
    return searchParameters.getSystemGebietsebeneAkzeptiert() == null || wa.getSystemGebietsebene()
        .akzeptiert(searchParameters.getSystemGebietsebeneAkzeptiert());
  }
}
