
package de.ivu.elect.presentation.dokumente;

import java.util.ArrayList;
import java.util.List;

import de.ivu.elect.business.dokumente.entity.DokumentVorlage;
import de.ivu.elect.business.dokumente.entity.DokumentVorlageArt;
import de.ivu.elect.business.dokumente.entity.DokumentVorlageProperties.DokumentVorlageArtProperty;

public class DokumentVorlageArtNachAnwendungGefiltertProperty extends DokumentVorlageArtProperty {

  private final List<DokumentVorlageArt> values;

  private final boolean hasNoSelectionItem;

  public DokumentVorlageArtNachAnwendungGefiltertProperty(DokumentVorlage dokumentVorlage, DokumentVorlageAuswahl dokumentVorlageAuswahl) {
    this(dokumentVorlage, dokumentVorlageAuswahl, false, false);
  }

  public DokumentVorlageArtNachAnwendungGefiltertProperty(DokumentVorlage dokumentVorlage, DokumentVorlageAuswahl dokumentVorlageAuswahl,
                                                          boolean hasNoSelectionItem, boolean hasLeerformular) {
    super(dokumentVorlage);

    this.values = getDokumentVorlageArten(dokumentVorlageAuswahl, hasLeerformular);
    this.hasNoSelectionItem = hasNoSelectionItem;
  }

  private static List<DokumentVorlageArt> getDokumentVorlageArten(DokumentVorlageAuswahl dokumentVorlageAuswahl, boolean hasLeerformular) {
    List<DokumentVorlageArt> result = new ArrayList<>(dokumentVorlageAuswahl.getDokumentVorlageArten());
    if (hasLeerformular && !result.contains(DokumentVorlageArt.LEERFORMULAR)) {
      result.add(DokumentVorlageArt.LEERFORMULAR);
    }
    return result;
  }

  @Override
  public boolean hasNoSelectionItem() {
    return hasNoSelectionItem;
  }

  @Override
  public List<DokumentVorlageArt> getValues() {
    return values;
  }
}
