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

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

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

import de.ivu.elect.business.wahlbeteiligung.entity.WahlbeteiligungVerlaufGebiet;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;

@Named(WahlbeteiligungVerlaufGebietColumnBuilder.COMPONENT_NAME)
public class WahlbeteiligungVerlaufGebietColumnBuilder extends AbstractColumnBuilder<WahlbeteiligungVerlaufGebiet> {

  public static final String COMPONENT_NAME = "wahlbeteiligungVerlaufGebietColumnBuilder";

  private static final long serialVersionUID = 1L;

  public WahlbeteiligungVerlaufGebietColumnBuilder() {
    super();
  }

  @Inject
  private transient GebietNummerFormatter gebietNummerFormatter;

  private  WahlbeteiligungVerlaufGebietVerlaufNameColumn wahlbeteiligungVerlaufGebietVerlaufNameColumn;

  private WahlbeteiligungVerlaufGebietVerlaufDatumColumn wahlbeteiligungVerlaufGebietVerlaufDatumColumn;

  private AbstractWahlbeteiligungVerlaufGebietColumn<WahlbeteiligungVerlaufGebiet> wahlbeteiligungVerlaufGebietWahlbeteilungColumn;

  private   AbstractWahlbeteiligungVerlaufGebietColumn<WahlbeteiligungVerlaufGebiet> gebietColumn;
  @Override
  protected void initColumns() {

    wahlbeteiligungVerlaufGebietVerlaufNameColumn =new WahlbeteiligungVerlaufGebietVerlaufNameColumn(getMessages());
    wahlbeteiligungVerlaufGebietVerlaufDatumColumn = new WahlbeteiligungVerlaufGebietVerlaufDatumColumn(getMessages());
    wahlbeteiligungVerlaufGebietWahlbeteilungColumn = AbstractWahlbeteiligungVerlaufGebietColumn.createWahlbeteiligungVerlaufGebietWahlbeteilungColumn(getMessages());

    gebietColumn = AbstractWahlbeteiligungVerlaufGebietColumn.createGebietColumn(getMessages(), ColumnType.STRING, wvp -> gebietNummerFormatter.getNameMitNummer(wvp.getGebiet()));

  }

  @Override
  protected List<ColumnEntry<? super WahlbeteiligungVerlaufGebiet>> getColumnEntriesSorted() {
    List<ColumnEntry<? super WahlbeteiligungVerlaufGebiet>> result = new ArrayList<>();
    result.add(gebietColumn);
    result.add(wahlbeteiligungVerlaufGebietVerlaufNameColumn);
    result.add(wahlbeteiligungVerlaufGebietVerlaufDatumColumn);
    result.add(wahlbeteiligungVerlaufGebietWahlbeteilungColumn);
    return result;
  }
}
