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

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

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

import de.ivu.elect.business.ergebnis.control.mass.StimmenAbweichungMassFinder;
import de.ivu.elect.business.stimmeingabe.entity.ErgebniseingangMeta;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabeHochgerechnet;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(StimmeingabeHochgerechnetColumnBuilder.COMPONENT_NAME)
public class StimmeingabeHochgerechnetColumnBuilder extends AbstractColumnBuilder<StimmeingabeHochgerechnet> {

  public static final String COMPONENT_NAME = "stimmeingabeHochgerechnetColumnBuilder";

  private static final long serialVersionUID = 1L;

  private StimmeingabeHochgerechnetGebietsnameColumn gebietsnameColumn;

  private StimmeingabeHochgerechnetGebietsnummerColumn gebietsnummerColumn;
  private StimmeingabeHochgerechnetStimmenartColumn stimmeingabeHochgerechnetStimmenartColumn;
  private StimmeingabeHochgerechnetGruppeColumn stimmeingabeHochgerechnetGruppeColumn;
  private StimmeingabeHochgerechnetStimmenVorperiodeColumn stimmeingabeHochgerechnetStimmenVorperiodeColumn;
  private StimmeingabeHochgerechnetStimmenHochgerechnetColumn stimmeingabeHochgerechnetStimmenHochgerechnetColumn;
  private StimmeingabeHochgerechnetStimmenAktuellColumn stimmeingabeHochgerechnetStimmenAktuellColumn;

  private StimmeingabeHochgerechnetAnteilVorperiodeColumn stimmeingabeHochgerechnetAnteilVorperiodeColumn;
  private StimmeingabeHochgerechnetAnteilHochgerechnetColumn stimmeingabeHochgerechnetAnteilHochgerechnetColumn;
  private StimmeingabeHochgerechnetAnteilAktuellColumn stimmeingabeHochgerechnetAnteilAktuellColumn;

  //List<StimmeingabeHochgerechnetAbweichungMassColumn> stimmeingabeHochgerechnetAbweichungMassColumns;


  @Inject
  private ErgebniseingangMeta ergebniseingangMeta;

  @Inject
  StimmenAbweichungMassFinder stimmenAbweichungMassFinder;

  public StimmeingabeHochgerechnetColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    gebietsnameColumn = new StimmeingabeHochgerechnetGebietsnameColumn(getMessages());
    gebietsnummerColumn = new StimmeingabeHochgerechnetGebietsnummerColumn(getMessages());
    stimmeingabeHochgerechnetStimmenartColumn = new StimmeingabeHochgerechnetStimmenartColumn(getMessages());
    stimmeingabeHochgerechnetGruppeColumn = new StimmeingabeHochgerechnetGruppeColumn(getMessages());
    stimmeingabeHochgerechnetStimmenVorperiodeColumn = new StimmeingabeHochgerechnetStimmenVorperiodeColumn(getMessages());
    stimmeingabeHochgerechnetStimmenHochgerechnetColumn = new StimmeingabeHochgerechnetStimmenHochgerechnetColumn(getMessages());
    stimmeingabeHochgerechnetStimmenAktuellColumn = new StimmeingabeHochgerechnetStimmenAktuellColumn(getMessages());
    stimmeingabeHochgerechnetAnteilVorperiodeColumn = new StimmeingabeHochgerechnetAnteilVorperiodeColumn(getMessages());
    stimmeingabeHochgerechnetAnteilHochgerechnetColumn = new StimmeingabeHochgerechnetAnteilHochgerechnetColumn(getMessages());
    stimmeingabeHochgerechnetAnteilAktuellColumn = new StimmeingabeHochgerechnetAnteilAktuellColumn(getMessages());

    /*stimmeingabeHochgerechnetAbweichungMassColumns = new ArrayList<>();

    for (StimmenAbweichungMass stimmenAbweichungMass : stimmenAbweichungMassFinder.getStimmenAbweichungMasse()) {
      stimmeingabeHochgerechnetAbweichungMassColumns.add(new StimmeingabeHochgerechnetAbweichungMassColumn(getMessages(), stimmenAbweichungMass));
    }*/


  }

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

    result.add(gebietsnameColumn);
    result.add(gebietsnummerColumn);
    result.add(stimmeingabeHochgerechnetGruppeColumn);
    result.add(stimmeingabeHochgerechnetStimmenartColumn);
    result.add(stimmeingabeHochgerechnetStimmenVorperiodeColumn);
    result.add(stimmeingabeHochgerechnetStimmenHochgerechnetColumn);
    result.add(stimmeingabeHochgerechnetStimmenAktuellColumn);
    result.add(stimmeingabeHochgerechnetAnteilVorperiodeColumn);
    result.add(stimmeingabeHochgerechnetAnteilHochgerechnetColumn);
    result.add(stimmeingabeHochgerechnetAnteilAktuellColumn);
    //result.addAll(stimmeingabeHochgerechnetAbweichungMassColumns);
    return result;
  }
}