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

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

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

import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.person.PersonendatenFormatter;
import de.ivu.elect.presentation.person.table.AbstractPersonendatenColumn;
import de.ivu.elect.presentation.person.table.PersonendatenFamiliennameAnzeigeColumn;
import de.ivu.elect.presentation.person.table.PersonendatenVornamenAnzeigeColumn;

@Named(WahlausschussmitgliedColumnBuilder.COMPONENT_NAME)
public class WahlausschussmitgliedColumnBuilder extends AbstractColumnBuilder<Wahlausschussmitglied> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "wahlausschussmitgliedColumnBuilder";

  @Inject
  private transient PersonendatenFormatter personendatenFormatter;

  protected WahlausschussmitgliedGebietNameColumn wahlausschussmitgliedGebietNameColumn;

  protected AbstractWahlausschussmitgliedColumn<Wahlausschussmitglied> wahlausschussmitgliedWahlausschussrolleColumn;

  protected WahlausschussmitgliedPolitischeGruppeKurznameColumn wahlausschussmitgliedPolitischeGruppeKurznameColumn;

  protected AbstractPersonendatenColumn<Wahlausschussmitglied> wahlausschussmitgliedFamiliennameAnzeigeColumn;

  protected AbstractPersonendatenColumn<Wahlausschussmitglied> wahlausschussmitgliedVornamenAnzeigeColumn;

  protected WahlausschussmitgliedVertreterColumn wahlausschussmitgliedVertreterColumn;

  protected WahlausschussmitgliedVetrittColumn wahlausschussmitgliedVetrittColumn;

  public WahlausschussmitgliedColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    wahlausschussmitgliedGebietNameColumn = new WahlausschussmitgliedGebietNameColumn(getMessages());
    wahlausschussmitgliedWahlausschussrolleColumn = AbstractWahlausschussmitgliedColumn.createWahlausschussmitgliedWahlausschussrolleColumn(getMessages());
    wahlausschussmitgliedPolitischeGruppeKurznameColumn = new WahlausschussmitgliedPolitischeGruppeKurznameColumn(getMessages());

    wahlausschussmitgliedFamiliennameAnzeigeColumn = new PersonendatenFamiliennameAnzeigeColumn<>(getMessages(), personendatenFormatter);
    wahlausschussmitgliedVornamenAnzeigeColumn = new PersonendatenVornamenAnzeigeColumn<>(getMessages(), personendatenFormatter);

    wahlausschussmitgliedVertreterColumn = new WahlausschussmitgliedVertreterColumn(getMessages());
    wahlausschussmitgliedVetrittColumn = new WahlausschussmitgliedVetrittColumn(getMessages());
  }

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

    result.add(wahlausschussmitgliedGebietNameColumn);
    result.add(wahlausschussmitgliedWahlausschussrolleColumn);
    result.add(wahlausschussmitgliedPolitischeGruppeKurznameColumn);

    result.add(wahlausschussmitgliedFamiliennameAnzeigeColumn);
    result.add(wahlausschussmitgliedVornamenAnzeigeColumn);

    result.add(wahlausschussmitgliedVertreterColumn);
    result.add(wahlausschussmitgliedVetrittColumn);

    return result;
  }
}
