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

import de.ivu.elect.business.benutzerverwaltung.boundary.AbstractBenutzerDAO;
import de.ivu.elect.business.benutzerverwaltung.entity.Nachricht;
import de.ivu.elect.business.benutzerverwaltung.entity.NachrichtConstants;
import de.ivu.elect.business.benutzerverwaltung.entity.NachrichtMeta;
import de.ivu.elect.business.benutzerverwaltung.entity.NachrichtSenderProperty;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.person.PersonendatenFormatter;

public class NachrichtSenderColumn<E extends Nachricht> extends AbstractNachrichtColumn<E> {

  private static final long serialVersionUID = 1L;

  private final PersonendatenFormatter personendatenFormatter;

  private final AbstractBenutzerDAO benutzerDao;

  public NachrichtSenderColumn(Messages messages, NachrichtMeta nachrichtMeta, AbstractBenutzerDAO benutzerDao,
      PersonendatenFormatter personendatenFormatter) {
    super(NachrichtSenderColumn.class.getName(), messages, NachrichtConstants.MESSAGE_KEY_SENDER_BENUTZERKENNUNG_EINZAHL, ColumnType.STRING, Nachricht::getSenderkennung );

    this.benutzerDao = benutzerDao;
    this.personendatenFormatter = personendatenFormatter;
  }

  @Override
  public String getHeader() {
    return getMessage("entity.einzahl.NACHRICHT.SENDER");
  }

  @Override
  public Object getValue(E nachricht) {
    return NachrichtSenderProperty.formatSender(nachricht, benutzerDao, personendatenFormatter);
  }
}
