
package de.ivu.elect.presentation.personenpruefung.form;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.personenpruefung.control.mehrstaatigkeit.AbstractPersonendatenMehrstaatigkeitMatcher;
import de.ivu.elect.business.personenpruefung.control.mehrstaatigkeit.MehrstaatigkeitZulaessigkeit;
import de.ivu.elect.business.personenpruefung.control.mehrstaatigkeit.kriterium.MehrstaatigkeitZulaessigkeitKriterium;

public class PersonenMehrstaatigkeitPruefSchrittErgebnisProperties {

  private final AbstractPersonendatenMehrstaatigkeitMatcher matcher;

  private final Personendaten personendaten;

  public PersonenMehrstaatigkeitPruefSchrittErgebnisProperties(AbstractPersonendatenMehrstaatigkeitMatcher matcher,
      Personendaten personendaten) {
    super();

    this.matcher = matcher;
    this.personendaten = personendaten;
  }

  public MehrstaatigkeitZulaessigkeitProperty getMehrstaatigkeitZulaessigkeitProperty(
      MehrstaatigkeitZulaessigkeit mehrstaatigkeitZulaessigkeit) {
    return new MehrstaatigkeitZulaessigkeitProperty(personendaten, matcher, mehrstaatigkeitZulaessigkeit);
  }

  public static final class MehrstaatigkeitZulaessigkeitProperty
      extends
        AbstractPruefSchrittErgebnisStringProperty<AbstractPersonendatenMehrstaatigkeitMatcher> {

    private final MehrstaatigkeitZulaessigkeit mehrstaatigkeitZulaessigkeit;

    public MehrstaatigkeitZulaessigkeitProperty(Personendaten personendaten, AbstractPersonendatenMehrstaatigkeitMatcher matcher,
        MehrstaatigkeitZulaessigkeit mehrstaatigkeitZulaessigkeit) {
      super(personendaten, matcher);

      this.mehrstaatigkeitZulaessigkeit = mehrstaatigkeitZulaessigkeit;
    }

    public MehrstaatigkeitZulaessigkeit getMehrstaatigkeitZulaessigkeit() {
      return mehrstaatigkeitZulaessigkeit;
    }

    @Override
    public String getDefaultLabel() {
      return getMessage(getDefaultMsgKeyPrefix() + "label");
    }

    @Override
    public String getValue() {
      return getMessage(getDefaultMsgKeyPrefix() + "description." + getMehrstaatigkeitZulaessigkeit().name());
    }

    private String getDefaultMsgKeyPrefix() {
      return MehrstaatigkeitZulaessigkeitKriterium.class.getSimpleName() + ".";
    }
  }
}
