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

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

import javax.inject.Named;

import de.ivu.elect.business.statistik.entity.StatistikLauf;
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(StatistikLaufColumnBuilder.COMPONENT_NAME)
public class StatistikLaufColumnBuilder extends AbstractColumnBuilder<StatistikLauf> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "statistikLaufColumnBuilder";

  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufStatusColumn;
  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufZeitpunktDesLaufsColumn;
  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufTageWahlColumn;

  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufAusloeserColumn;

  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufBeschreibungColumn;
  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufStartDesLaufsColumn;

  private AbstractStatistikLaufColumn<StatistikLauf> statistikLaufEndeDesLaufsColumn;

  public StatistikLaufColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    statistikLaufTageWahlColumn = new AbstractStatistikLaufColumn<>("statistikLauf-tage-bis-zur-wahl", getMessages(), "statistik.lauf.tage.header", ColumnType.STRING,
        sl -> sl.getTageBisZurWahlLokalized(getMessages()));
    statistikLaufStatusColumn = AbstractStatistikLaufColumn.createStatistikLaufStatusColumn(getMessages());
    statistikLaufZeitpunktDesLaufsColumn = AbstractStatistikLaufColumn.createStatistikLaufZeitpunktDesLaufsColumn(getMessages());
    statistikLaufStartDesLaufsColumn = AbstractStatistikLaufColumn.createStatistikLaufStartDesLaufsColumn(getMessages());
    statistikLaufEndeDesLaufsColumn = AbstractStatistikLaufColumn.createStatistikLaufEndeDesLaufsColumn(getMessages());

    statistikLaufAusloeserColumn = AbstractStatistikLaufColumn.createStatistikLaufAusloeserColumn(getMessages());
    statistikLaufBeschreibungColumn = AbstractStatistikLaufColumn.createStatistikLaufBeschreibungColumn(getMessages());
  }

  @Override
  protected List<ColumnEntry< ? super StatistikLauf>> getColumnEntriesSorted() {
    List<ColumnEntry< ? super StatistikLauf>> result = new ArrayList<>();
    result.add(statistikLaufTageWahlColumn);
    result.add(statistikLaufZeitpunktDesLaufsColumn);
    result.add(statistikLaufStartDesLaufsColumn);
    result.add(statistikLaufEndeDesLaufsColumn);
    result.add(statistikLaufStatusColumn);
    result.add(statistikLaufAusloeserColumn);
    result.add(statistikLaufBeschreibungColumn);

    return result;
  }
}
