
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.Wahlrechtspruefung;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(WahlrechtspruefungColumnBuilder.COMPONENT_NAME)
public class WahlrechtspruefungColumnBuilder extends AbstractColumnBuilder<Wahlrechtspruefung> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "wahlrechtspruefungColumnBuilder";

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungWahlrechtspruefStatusMitIconColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungBemerkungColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumPositionColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumKriteriumtextColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumFristInTagenBisZurWahlColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumKategorieColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumUnterkategorieColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumTeilDerSofortpruefungColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumHeilungsfaehigColumn;

  private AbstractWahlrechtspruefungColumn<Wahlrechtspruefung> wahlrechtspruefungPruefkriteriumWahlrechtlichRelevantColumn;

  public WahlrechtspruefungColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    wahlrechtspruefungWahlrechtspruefStatusMitIconColumn = new WahlrechtspruefungWahlrechtspruefStatusMitIconColumn(getMessages(), getIcons());

    wahlrechtspruefungBemerkungColumn = AbstractWahlrechtspruefungColumn.createWahlrechtspruefungBemerkungColumn(getMessages());

    wahlrechtspruefungPruefkriteriumPositionColumn = new WahlrechtspruefungPruefkriteriumColumn(AbstractPruefkriteriumColumn.createPruefkriteriumPositionColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumKriteriumtextColumn = new WahlrechtspruefungPruefkriteriumColumn(AbstractPruefkriteriumColumn.createPruefkriteriumKriteriumtextColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumFristInTagenBisZurWahlColumn = new WahlrechtspruefungPruefkriteriumColumn(
        AbstractPruefkriteriumColumn.createPruefkriteriumFristInTagenBisZurWahlColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumKategorieColumn = new WahlrechtspruefungPruefkriteriumColumn(AbstractPruefkriteriumColumn.createPruefkriteriumKategorieColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumUnterkategorieColumn = new WahlrechtspruefungPruefkriteriumColumn(AbstractPruefkriteriumColumn.createPruefkriteriumUnterkategorieColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumTeilDerSofortpruefungColumn = new WahlrechtspruefungPruefkriteriumColumn(
        AbstractPruefkriteriumColumn.createPruefkriteriumTeilDerSofortpruefungColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumHeilungsfaehigColumn = new WahlrechtspruefungPruefkriteriumColumn(AbstractPruefkriteriumColumn.createPruefkriteriumHeilungsfaehigColumn(getMessages()));
    wahlrechtspruefungPruefkriteriumWahlrechtlichRelevantColumn = new WahlrechtspruefungPruefkriteriumColumn(
        AbstractPruefkriteriumColumn.createPruefkriteriumWahlrechtlichRelevantColumn(getMessages()));
  }

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

    result.add(wahlrechtspruefungWahlrechtspruefStatusMitIconColumn);

    result.add(wahlrechtspruefungPruefkriteriumPositionColumn);
    result.add(wahlrechtspruefungPruefkriteriumKriteriumtextColumn);

    result.add(wahlrechtspruefungBemerkungColumn);

    result.add(wahlrechtspruefungPruefkriteriumFristInTagenBisZurWahlColumn);
    result.add(wahlrechtspruefungPruefkriteriumHeilungsfaehigColumn);
    result.add(wahlrechtspruefungPruefkriteriumKategorieColumn);
    result.add(wahlrechtspruefungPruefkriteriumUnterkategorieColumn);
    result.add(wahlrechtspruefungPruefkriteriumTeilDerSofortpruefungColumn);
    result.add(wahlrechtspruefungPruefkriteriumWahlrechtlichRelevantColumn);

    return result;
  }
}
