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

import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.person.entity.PersonendatenConstants;
import de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty;

public class PersonendatenPersonStatusNichtGeeignetBemerkungProperty<E extends Personendaten> extends AbstractStringProperty {

  public static final String LABEL_MSG_KEY = "PersonendatenPersonStatusNichtGeeignetBemerkungProperty.label";

  private final E personendaten;

  public PersonendatenPersonStatusNichtGeeignetBemerkungProperty(E personendaten) {
    super();

    this.personendaten = personendaten;
  }

  @Override
  public boolean isVisible() {
    return super.isVisible() && isPersonStatusNichtGeeignet();
  }

  @Override
  public boolean isReadonly() {
    return true;
  }

  @Override
  public boolean getDefaultRequired() {
    return false;
  }

  @Override
  public int getDefaultMaxLength() {
    return PersonendatenConstants.BEMERKUNG_MAX_LENGTH;
  }

  @Override
  public String getDefaultLabel() {
    return getMessage(LABEL_MSG_KEY);
  }

  @Override
  public String getValue() {
    if (isPersonStatusNichtGeeignet()) {
      if (isNotBlank(personendaten.getBemerkung())) {
        return personendaten.getBemerkung();
      }

      // NOTE, dass keine direkte Verknüpfung zu Konflikten existiert, daher die implizite Annahme, dass ein Konflikt
      // vorliegen muss...
      return getMessage("PersonendatenPersonStatusNichtGeeignetBemerkungProperty.PersonenKonfliktStatus.IST_ABLEHNUNGSGRUND");
    }

    return "";
  }

  @Override
  public void setValue(String value) {
    // Not supported
  }

  private boolean isPersonStatusNichtGeeignet() {
    return nonNull(personendaten) && personendaten.isPersonStatusNichtGeeignet();
  }
}
