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

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import de.ivu.elect.business.system.entity.SystemLog;
import de.ivu.elect.business.system.entity.SystemLogMeta;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

@Named(SystemLogColumnBuilder.COMPONENT_NAME)
public class SystemLogColumnBuilder extends AbstractColumnBuilder<SystemLog> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "systemLogColumnBuilder";

  @Inject
  private SystemLogMeta systemLogMeta;

  private AbstractSystemLogColumn<SystemLog> systemLogZeitpunktColumn;

  private AbstractSystemLogColumn<SystemLog> systemLogLogNachrichtArtColum;

  private AbstractSystemLogColumn<SystemLog> systemLogLogNachrichtArtColorColum;

  private AbstractSystemLogColumn<SystemLog> systemLogQuelleColumn;

  private SystemLogNachrichtColumn<SystemLog> systemLogNachrichtColumn;

  private AbstractSystemLogColumn<SystemLog> systemLogStatusColumn;

  public SystemLogColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    systemLogZeitpunktColumn = AbstractSystemLogColumn.createSystemLogZeitpunktColumn(getMessages());
    systemLogLogNachrichtArtColum = AbstractSystemLogColumn.createSystemLogLogNachrichtArtColumn(getMessages());
    systemLogLogNachrichtArtColorColum = new AbstractSystemLogColumn<>("systemLogLogNachrichtArtColorColum", getMessages(), "entity.einzahl.SYSTEM_LOG.LOG_NACHRICHT_ART_COLOR", ColumnType.COLOR, x-> x.getLogNachrichtArt().getColor());
    systemLogQuelleColumn = AbstractSystemLogColumn.createSystemLogQuelleColumn(getMessages());
    systemLogStatusColumn = AbstractSystemLogColumn.createSystemLogStatusColumn(getMessages());
    systemLogNachrichtColumn = new SystemLogNachrichtColumn<>(getMessages());
  }

  @Override
  protected List<ColumnEntry< ? super SystemLog>> getColumnEntriesSorted() {
    List<ColumnEntry< ? super SystemLog>> result = new ArrayList<>();

    result.add(systemLogLogNachrichtArtColorColum);
    result.add(systemLogLogNachrichtArtColum);
    result.add(systemLogZeitpunktColumn);
    result.add(systemLogStatusColumn);
    result.add(systemLogQuelleColumn);
    result.add(systemLogNachrichtColumn);

    return result;
  }
}
