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

import static java.util.Objects.requireNonNull;

import java.util.Collection;

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

public class MehrstaatigkeitZulaessigkeitKriterium extends AbstractPersonendatenMatcherKriterium {

  private static final long serialVersionUID = 1L;

  private final MehrstaatigkeitZulaessigkeit mehrstaatigkeitZulaessigkeit;

  public MehrstaatigkeitZulaessigkeitKriterium(Collection<Class< ? extends Personendaten>> personendatenClasses,
      MehrstaatigkeitZulaessigkeit mehrstaatigkeitZulaessigkeit) {
    super(personendatenClasses);

    requireNonNull(mehrstaatigkeitZulaessigkeit, "MehrstaatigkeitZulaessigkeit darf nicht null sein");

    this.mehrstaatigkeitZulaessigkeit = mehrstaatigkeitZulaessigkeit;
  }

  public MehrstaatigkeitZulaessigkeit getMehrstaatigkeitZulaessigkeit() {
    return mehrstaatigkeitZulaessigkeit;
  }

  @Override
  protected boolean matchesInternal(Personendaten personendaten) {
    return getMehrstaatigkeitZulaessigkeit().isIrrelevant();
  }

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

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