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

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

import javax.inject.Named;

import de.ivu.elect.business.wahlrechtspruefung.entity.Pruefkriterium;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(PruefkriteriumColumnBuilder.COMPONENT_NAME)
public class PruefkriteriumColumnBuilder extends AbstractColumnBuilder<Pruefkriterium> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "pruefkriteriumColumnBuilder";

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPositionColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumBezugColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumKategorieColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumUnterkategorieColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumKriteriumtextColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumHeilungsfaehigColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumFristInTagenBisZurWahlColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumTeilDerSofortpruefungColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumKannIrrelevantSeinColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumWahlrechtlichRelevantColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumGruppeArtColumn;

  private AbstractPruefkriteriumColumn<Pruefkriterium> pruefkriteriumPruefkriteriumInitialerStatusColumn;

  public PruefkriteriumColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    pruefkriteriumPositionColumn = AbstractPruefkriteriumColumn.createPruefkriteriumPositionColumn(getMessages());
    pruefkriteriumPruefkriteriumBezugColumn = AbstractPruefkriteriumColumn.createPruefkriteriumPruefkriteriumBezugColumn(getMessages());
    pruefkriteriumKategorieColumn = AbstractPruefkriteriumColumn.createPruefkriteriumKategorieColumn(getMessages());
    pruefkriteriumPruefkriteriumUnterkategorieColumn = AbstractPruefkriteriumColumn.createPruefkriteriumUnterkategorieColumn(getMessages());
    pruefkriteriumPruefkriteriumKriteriumtextColumn = AbstractPruefkriteriumColumn.createPruefkriteriumKriteriumtextColumn(getMessages());
    pruefkriteriumPruefkriteriumHeilungsfaehigColumn = AbstractPruefkriteriumColumn.createPruefkriteriumHeilungsfaehigColumn(getMessages());
    pruefkriteriumPruefkriteriumFristInTagenBisZurWahlColumn = AbstractPruefkriteriumColumn.createPruefkriteriumFristInTagenBisZurWahlColumn(getMessages());
    pruefkriteriumPruefkriteriumTeilDerSofortpruefungColumn = AbstractPruefkriteriumColumn.createPruefkriteriumTeilDerSofortpruefungColumn(getMessages());
    pruefkriteriumPruefkriteriumKannIrrelevantSeinColumn = AbstractPruefkriteriumColumn.createPruefkriteriumKannIrrelevantSeinColumn(getMessages());
    pruefkriteriumPruefkriteriumWahlrechtlichRelevantColumn = AbstractPruefkriteriumColumn.createPruefkriteriumWahlrechtlichRelevantColumn(getMessages());
    pruefkriteriumPruefkriteriumGruppeArtColumn = AbstractPruefkriteriumColumn.createPruefkriteriumPruefkriteriumGruppeArtColumn(getMessages());
    pruefkriteriumPruefkriteriumInitialerStatusColumn = AbstractPruefkriteriumColumn.createPruefkriteriumInitialerStatusColumn(getMessages());
  }

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

    result.add(pruefkriteriumPositionColumn);
    result.add(pruefkriteriumPruefkriteriumBezugColumn);
    result.add(pruefkriteriumPruefkriteriumGruppeArtColumn);
    result.add(pruefkriteriumKategorieColumn);
    result.add(pruefkriteriumPruefkriteriumUnterkategorieColumn);
    result.add(pruefkriteriumPruefkriteriumKriteriumtextColumn);
    result.add(pruefkriteriumPruefkriteriumHeilungsfaehigColumn);
    result.add(pruefkriteriumPruefkriteriumFristInTagenBisZurWahlColumn);
    result.add(pruefkriteriumPruefkriteriumTeilDerSofortpruefungColumn);
    result.add(pruefkriteriumPruefkriteriumKannIrrelevantSeinColumn);
    result.add(pruefkriteriumPruefkriteriumWahlrechtlichRelevantColumn);
    result.add(pruefkriteriumPruefkriteriumInitialerStatusColumn);

    return result;
  }
}
