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

import java.util.function.Function;

import javax.annotation.Nullable;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.Icons;

public class AnzahlWahlberechtigteAbweichendColumn extends AnzahlWahlberechtigteColumn {
  private static final long serialVersionUID = 1L;

  private final Icons icons;

  public AnzahlWahlberechtigteAbweichendColumn(String id, Messages messages, Icons icons, String header, Function<Wahldurchfuehrungsgebiet, Object> valueFct) {
    super(id, messages, header, valueFct);
    this.icons = icons;
  }

  @Override
  public boolean isIconPresent() {
    return true;
  }

  @Override
  public boolean isIconRendered(Gebiet entity) {
    return getIcon(entity) != null;
  }

  @Nullable
  @Override
  public String getIcon(Gebiet entity) {
    Object value = getValue(entity);
    if (value instanceof Number) {
      if (((Number) value).intValue() > 0) {
        return icons.getIconWarning();
      }
    }
    return super.getIcon(entity);
  }

  @Override
  public String getTooltip(Gebiet entity) {
    Object value = getValue(entity);
    if (value instanceof Number) {
      if (((Number) value).intValue() > 0) {
        return getMessage("anzahl.gebiete.wahlberechtigte.abweichend.tooltip", value);
      }
    }

    return super.getTooltip(entity);
  }

}
