package de.ivu.elect.dokumente.kandidatur.statistik;

import java.util.function.Predicate;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;

/**
 *  on 11.11.2016.
 */
public interface GebietFilter extends Predicate<Kandidat> {
    public static final GebietFilter WURZELGEBIET = k -> true;

    public static final GebietFilter KANDIDIERT_IM_WURZELGEBIET = k -> k.kandidiertImWurzelgebiet();

    public static final GebietFilter IS_GEBIETSUEBERGREIFEND = k -> k.isGebietsuebergreifend() && !k.kandidiertImWurzelgebiet();

    public static GebietFilter fuerListengebiet(Gebiet listengebiet) {
        return k -> k.hatEinzigesGebiet(listengebiet);
    }

    public static GebietFilter fuerGebiet(Gebiet gebiet) {
        if (!gebiet.hasUebergeordnetesGebiet()) {
            return WURZELGEBIET;
        } else {
            return fuerListengebiet(gebiet);
        }
    }
}
