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

import java.util.Collection;

import javax.annotation.Nullable;

import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.Icons;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.table.AbstractColumnEntry;

public class GruppeBerechnetePositionColumn extends AbstractColumnEntry<Gruppe> {

  private static final long serialVersionUID = 1L;

  private final Icons icons;

  private final Collection<Gruppe> alleGruppen;

  public GruppeBerechnetePositionColumn(Messages messages, Icons icons, Collection<Gruppe> alleGruppen) {
    super(messages);

    this.icons = icons;

    this.alleGruppen = alleGruppen;
  }

  @Override
  public ColumnType getType() {
    return ColumnType.LONG;
  }

  @Override
  public String getHeader() {
    return getMessage("gruppe.berechnete.position");
  }

  @Override
  public Object getValue(Gruppe gruppe) {
    return gruppe.getBerechnetePosition(alleGruppen);
  }

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

  @Override
  public boolean isIconRendered(Gruppe gruppe) {
    return true;
  }

  @Override
  public String getTooltip(Gruppe gruppe) {
    if (gruppe.getVorgegebenePosition() == null) {
      return getMessage("gruppe.position.berechnet");
    }

    return getMessage("gruppe.position.vorgegeben");
  }

  @Nullable
  @Override
  public String getIcon(Gruppe gruppe) {
    if (gruppe.getVorgegebenePosition() == null) {
      return icons.getIconCalculate();
    }

    return icons.getIconCheck();
  }
}
