
package de.ivu.elect.sitzberechnung.konflikt;

import static java.util.stream.Collectors.toList;

import java.util.Collection;
import java.util.List;

import de.ivu.elect.sitzberechnung.SitzberechnungEntity;

public abstract class AbstractErgebnisKonfliktEntitiesAuswaehlen extends AbstractErgebnisKonflikt {

  private final Enum< ? > typ;

  private final long anzahlAuszuwaehlen;

  protected AbstractErgebnisKonfliktEntitiesAuswaehlen(Enum< ? > typ, ErgebnisKonfliktStatus ergebnisKonfliktStatus, long anzahlAuszuwaehlen) {
    super(ergebnisKonfliktStatus, 0L);

    this.typ = typ;

    this.anzahlAuszuwaehlen = anzahlAuszuwaehlen;
  }

  public Enum< ? > getLosentscheidTyp() {
    return typ;
  }

  public long getAnzahlAuszuwaehlen() {
    return anzahlAuszuwaehlen;
  }

  protected static <E extends SitzberechnungEntity> List<E> filterEntitiesByEntityKeys(Collection<E> entities, Collection<String> entityKeys) {
    return entities.stream().filter(entity -> entityKeys.contains(entity.getKey())).collect(toList());
  }
}
