
package de.ivu.elect.business.wahlausschuss.entity;

public enum WahlausschussmitgliedVerterterFilterKriterium {

  ALLE {

    @Override
    public boolean matches(Wahlausschussmitglied wahlausschussmitglied) {
      return true;
    }
  },
  NUR_MIT_VERTERTER {

    @Override
    public boolean matches(Wahlausschussmitglied wahlausschussmitglied) {
      return wahlausschussmitglied.isVertreterVorhanden();
    }
  },
  NUR_VERTRITT_ANDERE {

    @Override
    public boolean matches(Wahlausschussmitglied wahlausschussmitglied) {
      return wahlausschussmitglied.isVertrittJemanden();
    }
  },
  OHNE_VERTETER {

    @Override
    public boolean matches(Wahlausschussmitglied wahlausschussmitglied) {
      return !wahlausschussmitglied.isVertreterVorhanden();
    }
  },
  OHNE_VERTRITT_ANDERE {

    @Override
    public boolean matches(Wahlausschussmitglied wahlausschussmitglied) {
      return !wahlausschussmitglied.isVertrittJemanden();
    }
  };

  private WahlausschussmitgliedVerterterFilterKriterium() {
  }

  public abstract boolean matches(Wahlausschussmitglied wahlausschussmitglied);
}
