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

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

import java.util.function.Function;

import org.apache.commons.lang3.StringUtils;

import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public class WahlvorschlagKurznameColumn<E extends Wahlvorschlag> extends AbstractWahlvorschlagColumn<E> {

  private static final long serialVersionUID = 1L;

  public WahlvorschlagKurznameColumn(String id, Messages messages, String headerKey, Function<E, Object> getter) {
    super(id, messages, headerKey, ColumnType.STRING, getter);
  }

  public WahlvorschlagKurznameColumn(AbstractWahlvorschlagColumn<E> column) {
    super(column.getId(), column.getMessages(), column.getHeaderKey(), column.getType(), column.getGetter());
  }

  @Override
  public String getTooltip(E entity) {
    return defaultErgaenzenWennKurznamenEquals(super.getTooltip(entity), entity, getMessage("kurznamen.von.gruppe.und.wahlvorschlag.abweichend.tooltip"));
  }

  @Override
  public String getStyleClass(E entity) {
    return defaultErgaenzenWennKurznamenEquals(super.getStyleClass(entity), entity, " ui-messages-warn");
  }

  private String defaultErgaenzenWennKurznamenEquals(String defaultResult, E entity, String zusaetzlicherString) {
    if (warnungAnzeigen(entity)) {
      return trimToEmpty(defaultResult) + " " + zusaetzlicherString;
    }

    return defaultResult;
  }

  private boolean warnungAnzeigen(E entity) {
    if (entity == null || StringUtils.isEmpty(entity.getGruppe().getKurzname()) || StringUtils.isEmpty(entity.getKurzname())) {
      return false;
    }

    return !entity.getGruppe().getKurzname().equals(entity.getKurzname());
  }
}
