
package de.ivu.elect.presentation.gebietsbaum.status;

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

import de.ivu.elect.business.gebietsbaum.entity.EntityMitGebiet;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.status.OutputSeverity;
import de.ivu.elect.jee.presentation.status.StatusEntry;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;

public class GebietsbaumStatusEntry extends StatusEntry implements EntityMitGebiet {

  private final GebietNummerFormatter gebietNummerFormatter;

  private final Gebiet gebiet;

  private boolean labelBerechnet;

  public GebietsbaumStatusEntry(Gebiet gebiet, GebietNummerFormatter gebietNummerFormatter) {
    this(null, gebiet, gebietNummerFormatter);
  }

  public GebietsbaumStatusEntry(OutputSeverity outputSeverity, Gebiet gebiet, GebietNummerFormatter gebietNummerFormatter) {
    this.gebiet = gebiet;
    this.gebietNummerFormatter = gebietNummerFormatter;
    setSeverity(outputSeverity);
  }


  @Override
  public String getLabel() {
    if (!labelBerechnet) {
      setLabel(createLabel());
      labelBerechnet = true;
    }
    return super.getLabel();
  }

  @Override
  public Gebiet getGebiet() {
    return gebiet;
  }

  protected String createLabel() { // ELECTSL-60, ELECTKOM-549
    if (gebiet != null && gebietNummerFormatter != null) {
      return gebietNummerFormatter.getDetailMitMarkierungenIcons(gebiet, instance -> defaultString(instance.getKuerzel(), gebietNummerFormatter.getNummer(instance)));
    }

    return "";
  }
}
