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

import java.util.List;

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

public class PersonendatenAkademischerGradAutoCompleteProperty extends AbstractSelectManyStringAutoCompleteProperty {

  private static final String UNKNOW_OPTION_SUFFIX_LABEL_MSG_KEY = "PersonendatenWertelistenAutoCompleteProperty.suffix.fuer.nicht.vorgeschlagenen.wert";

  private final Personendaten personendaten;

  public PersonendatenAkademischerGradAutoCompleteProperty(Personendaten personendaten,
      PersonendatenAkademischerGradAutoCompleteOptionsProvider optionsProvider) {
    super(optionsProvider, UNKNOW_OPTION_SUFFIX_LABEL_MSG_KEY);

    this.personendaten = personendaten;

    optionsProvider.setPersonendaten(personendaten);
  }

  @Override
  public boolean getDefaultRequired() {
    return !PersonendatenConstants.AKADEMISCHER_GRAD_NULLABLE;
  }

  @Override
  protected String getDefaultLabelMsgKey() {
    return PersonendatenConstants.MESSAGE_KEY_AKADEMISCHER_GRAD_EINZAHL;
  }

  @Override
  public int getMaxQueryLength() {
    return PersonendatenConstants.AKADEMISCHER_GRAD_MAX_LENGTH;
  }

  @Override
  public int getMinQueryLength() {
    return 1;
  }

  @Override
  protected List<String> getValueInternal() {
    return personendaten.getAkademischerGradAsList();
  }

  @Override
  protected void setValueInternal(List<String> selection) {
    personendaten.setAkademischerGradFromList(selection);
  }
}
