
package de.ivu.elect.presentation.dokumente;

import static org.apache.commons.lang3.StringUtils.defaultIfBlank;

import java.util.List;

import de.ivu.elect.business.dokumente.entity.DokumentVorlage;
import de.ivu.elect.business.dokumente.entity.DokumentVorlageConstants;
import de.ivu.elect.jee.presentation.dynamicform.AbstractAutocompletionProperty;

public class DokumentVorlageProperty extends AbstractAutocompletionProperty<DokumentVorlage> {

  private final String defaultLabel;

  private DokumentVorlage dokumentVorlage;

  public DokumentVorlageProperty(List<DokumentVorlage> dokumentVorlagen) {
    this("", dokumentVorlagen);
  }

  public DokumentVorlageProperty(String defaultLabelMsgKey, List<DokumentVorlage> dokumentVorlagen) {
    super(dokumentVorlagen);

    this.defaultLabel = getMessage(defaultIfBlank(defaultLabelMsgKey, DokumentVorlageConstants.MESSAGE_KEY_ENTITY_EINZAHL));

    if (dokumentVorlagen != null && dokumentVorlagen.size() == 1) {
      this.dokumentVorlage = dokumentVorlagen.get(0);
    }
  }

  @Override
  protected boolean isMatching(DokumentVorlage dokumentVorlage, String value) {
    return dokumentVorlage.matchesBeschreibung(value) || dokumentVorlage.matchesName(value);
  }

  @Override
  public DokumentVorlage getValue() {
    return this.dokumentVorlage;
  }

  @Override
  public void setValue(DokumentVorlage dokumentVorlage) {
    this.dokumentVorlage = dokumentVorlage;
  }

  @Override
  public String getDefaultLabel() {
    return defaultLabel;
  }

  @Override
  public String getItemLabel(DokumentVorlage dokumentVorlage) {
    if (dokumentVorlage == null) {
      return "";
    }

    return dokumentVorlage.getName();
  }
}
