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

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

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

import org.apache.deltaspike.core.api.scope.ConversationGroup;

import de.ivu.elect.business.niederschrift.boundary.NiederschriftStatusAenderungListConversationStore;
import de.ivu.elect.business.niederschrift.entity.NiederschriftStatusAenderung;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(NiederschriftStatusAenderungCreateColumnBuilder.COMPONENT_NAME)
public class NiederschriftStatusAenderungCreateColumnBuilder extends AbstractNiederschriftColumnBuilder<NiederschriftStatusAenderung> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "niederschriftStatusAenderungCreateColumnBuilder";

  @Inject // Cf. NiederschriftStatusAenderungCreateView!
  @ConversationGroup(NiederschriftStatusAenderungListConversationStore.class)
  private transient NiederschriftStatusAenderungListConversationStore niederschriftStatusAenderungenErfasst;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusLaufendeNummerColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftNiederschriftArtColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftWahldurchfuehrungsgebietwahldurchfuehrungsgebietColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftWahlNameColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftWahlWahldatumColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungStatusColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungRaumColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungBesitzerColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungStatusColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungRaumColumn;

  private ColumnEntry< ? super NiederschriftStatusAenderung> niederschriftStatusAenderungBesitzerColumn;

  public NiederschriftStatusAenderungCreateColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    niederschriftStatusLaufendeNummerColumn = new NiederschriftStatusAenderungLaufendeNummerColumn(getMessages(), niederschriftStatusAenderungenErfasst);

    niederschriftStatusAenderungNiederschriftNiederschriftArtColumn = new NiederschriftStatusAenderungNiederschriftNiederschriftArtColumn<>(getMessages());

    niederschriftStatusAenderungNiederschriftWahldurchfuehrungsgebietwahldurchfuehrungsgebietColumn = new NiederschriftStatusAenderungNiederschriftWahldurchfuehrungsgebietColumn<>(getMessages(),
        getNiederschriftFormatter());

    niederschriftStatusAenderungNiederschriftWahlNameColumn = new NiederschriftStatusAenderungNiederschriftWahlNameColumn<>(getMessages());
    niederschriftStatusAenderungNiederschriftWahlWahldatumColumn = new NiederschriftStatusAenderungNiederschriftWahlWahldatumColumn<>(getMessages());

    niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungStatusColumn = new NiederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungStatusColumn<>(
        getMessages(), niederschriftStatusAenderungExtendedDAO);
    niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungRaumColumn = new NiederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungRaumColumn<>(getMessages(),
        niederschriftStatusAenderungExtendedDAO);
    niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungBesitzerColumn = new NiederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungBesitzerColumn<>(
        getMessages(), niederschriftStatusAenderungExtendedDAO);

    niederschriftStatusAenderungStatusColumn = new NiederschriftStatusAenderungStatusColumn<>(getMessages());
    niederschriftStatusAenderungRaumColumn = new NiederschriftStatusAenderungRaumColumn<>(getMessages());
    niederschriftStatusAenderungBesitzerColumn = new NiederschriftStatusAenderungBesitzerColumn<>(getMessages());
  }

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

    result.add(niederschriftStatusLaufendeNummerColumn);

    result.add(niederschriftStatusAenderungNiederschriftNiederschriftArtColumn);
    result.add(niederschriftStatusAenderungNiederschriftWahldurchfuehrungsgebietwahldurchfuehrungsgebietColumn);

    result.add(niederschriftStatusAenderungNiederschriftWahlWahldatumColumn);
    result.add(niederschriftStatusAenderungNiederschriftWahlNameColumn);

    result.add(niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungStatusColumn);
    result.add(niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungRaumColumn);
    result.add(niederschriftStatusAenderungNiederschriftNeuesteNiederschriftStatusAenderungBesitzerColumn);

    result.add(niederschriftStatusAenderungStatusColumn);
    result.add(niederschriftStatusAenderungRaumColumn);
    result.add(niederschriftStatusAenderungBesitzerColumn);

    return result;
  }
}
