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

import java.util.function.Function;

import de.ivu.elect.business.niederschrift.boundary.AbstractNiederschriftStatusAenderungDAO;
import de.ivu.elect.business.niederschrift.entity.Niederschrift;
import de.ivu.elect.business.niederschrift.entity.NiederschriftStatusAenderung;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public abstract class AbstractNiederschriftNeuesteNiederschriftStatusAenderungColumn<E extends Niederschrift> extends AbstractNiederschriftColumn<E> {

  private static final long serialVersionUID = 1L;

  protected AbstractNiederschriftNeuesteNiederschriftStatusAenderungColumn(String attributeId, Messages messages, AbstractNiederschriftStatusAenderungDAO niederschriftStatusAenderungDAO,
      String headerKey, ColumnType type, Function<NiederschriftStatusAenderung, Object> getter) {
    super("Niederschrift-NeuesteNiederschriftStatusAenderung-" + attributeId, messages, headerKey, type, niederschrift -> {
      NiederschriftStatusAenderung niederschriftStatusAenderungNeueste = niederschrift.findNeuesteNiederschriftStatusAenderung(niederschriftStatusAenderungDAO);

      if (niederschriftStatusAenderungNeueste == null) {
        return null;
      }

      return getter.apply(niederschriftStatusAenderungNeueste);
    });
  }
}
