
package de.ivu.elect.business.personenpruefung.control.wahlrecht.kriterium;

import static java.util.Objects.requireNonNull;

import java.util.Collection;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.person.entity.Wahlrechtsausschluss;
import de.ivu.elect.business.personenpruefung.control.AbstractPersonendatenMatcherKriterium;
import de.ivu.elect.jee.faces.Messages;

public class WahlrechtsausschlussKriterium extends AbstractPersonendatenMatcherKriterium {

  private static final long serialVersionUID = 1L;

  private final Wahlrechtsausschluss wahlrechtsausschluss;

  public WahlrechtsausschlussKriterium(Collection<Class< ? extends Personendaten>> personendatenClasses,
      Wahlrechtsausschluss wahlrechtsausschluss) {
    super(personendatenClasses);

    requireNonNull(wahlrechtsausschluss, "Wahlrechtsausschluss darf nicht null sein");

    this.wahlrechtsausschluss = wahlrechtsausschluss;
  }

  public Wahlrechtsausschluss getWahlrechtsausschluss() {
    return wahlrechtsausschluss;
  }

  @Override
  protected boolean matchesInternal(Personendaten personendaten) {
    return wahlrechtsausschluss.equals(personendaten.getWahlrechtsausschluss());
  }

  @Override
  public String getDescription(Messages messages) {
    return messages.getMessageForMessageKey(getDescriptionMsgKey(), messages.lokalisiere(getWahlrechtsausschluss()));
  }

  @Override
  public String toString() {
    return getClass().getSimpleName() + " [wahlrechtsausschluss = " + getWahlrechtsausschluss() + "]";
  }
}
