
package de.ivu.elect.jee.presentation.dynamictable;

import javax.annotation.Nullable;
import javax.el.MethodExpression;

import de.ivu.elect.jee.entity.EagerLoading;

public interface ColumnEntry<E> extends ColumnTypePresent {

  Object getDisplayValue(E entity);

  Object getSortByValue(E entity);

  boolean hasSortByValueComparator();

  @Nullable
  MethodExpression getSortByValueComparatorMethodExpression();

  boolean isRendered();

  String getHeader();

  ColumnType getType();

  /**
   * Achtung, funktioniert noch nicht.
   *
   * @return die Breite der Spalte
   */
  Integer getWidth();

  /**
   * Achtung, funktioniert noch nicht.
   *
   * @return der verwendete Style
   */
  String getStyle();

  String getStyleClass();

  String getStyleClass(E entity);

  boolean isIconRendered(E entity);

  @Nullable
  String getIcon(E entity);

  @Nullable
  String getIconTitle(E entity);

  @Nullable
  String getIconStyleClass(E entity);

  @Nullable
  String getIconStyle(E entity);

  String getTooltip(E entity);

  @Nullable
  EagerLoading<E> getEagerLoading();

  default String getName() {
    return getClass().getName();
  }

  boolean isSummeImExportAusgeben();

  boolean isNullValueOutputPresent();

  @Nullable
  String getNullValueOutput();
}
