
package de.ivu.elect.dokumente.gebiet;

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

import de.ivu.document.generator.template.annotations.DocumentRepeat;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.dokumente.BaseElectContext;

public class GebietMitUntergeordnetenErfassungsgebietenDocument extends GebietDokument {

  private static final long serialVersionUID = 1L;

  public static final GebietMitUntergeordnetenErfassungsgebietenDocument EMPTY_OBJECT = new GebietMitUntergeordnetenErfassungsgebietenDocument();

  @DocumentRepeat(value = "UntergeordneteErfassungsgebiete", elementClass = GebietDokument.class, itemName = "erfassungsgebiet")
  public final List<GebietDokument> untergeordneteErfassungsgebiete;

  protected GebietMitUntergeordnetenErfassungsgebietenDocument() {
    super();

    this.untergeordneteErfassungsgebiete = null;
  }

  public GebietMitUntergeordnetenErfassungsgebietenDocument(BaseElectContext baseElectContext, Gebiet gebiet) {
    super(baseElectContext, gebiet);

    this.untergeordneteErfassungsgebiete = ermittleUntergeordneteErfassungsgebiete(baseElectContext, gebiet);
  }

  private List<GebietDokument> ermittleUntergeordneteErfassungsgebiete(BaseElectContext baseElectContext, Gebiet gebiet) {
    List<GebietDokument> result = new ArrayList<>();

    for (Gebiet untergeordnetesGebiet : gebiet.getUntergeordneteGebieteSortiertNachPosition()) {
      if (untergeordnetesGebiet.isErfassungsgebiet()) {
        result.add(new GebietDokument(baseElectContext, untergeordnetesGebiet));
      }
    }

    return result;
  }
}
