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

import java.util.List;

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

import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.jee.entity.EagerLoadingCollector;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.table.AbstractColumnEntry;

@Named(KandidaturColumnBuilder.COMPONENT_NAME)
public class KandidaturColumnBuilder extends AbstractKandidaturColumnBuilder {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "kandidaturColumnBuilder";

  @Inject
  private transient BasisKandidaturColumnBuilder basisKandidaturColumnBuilder;

  public KandidaturColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    getBasisKandidaturColumnBuilder().initColumns();
  }

  @Override
  protected void addColumnEntriesGruppeGebiet(List<ColumnEntry< ? super Kandidatur>> result) {
    add(result, getKandidaturGebietColumn(), getKandidaturPolitischeGruppeColumn());

    getBasisKandidaturColumnBuilder().addColumnEntriesGruppeGebiet(result);
  }

  @Override // ELECT-8815
  protected void addColumnEntriesStimmzetteldaten(List<ColumnEntry< ? super Kandidatur>> result) {
    add(result, getKandidaturKandidaturArtColumn());

    getBasisKandidaturColumnBuilder().addColumnEntriesStimmzetteldaten(result);

    if (isWahlSelectedMitMehrfachnennungen()) {
      add(result, getKandidaturAnzahlNennungenColumn());
    }
  }

  @Override
  protected void addColumnEntriesKandidaturdaten(List<ColumnEntry< ? super Kandidatur>> result) {
    getBasisKandidaturColumnBuilder().addColumnEntriesKandidaturdaten(result);
  }

  @Override
  protected void addColumnEntriesPersonendaten(List<ColumnEntry< ? super Kandidatur>> result) {
    add(result, getKandidaturTitelColumn());

    getBasisKandidaturColumnBuilder().addColumnEntriesPersonendaten(result);
  }

  @Override
  protected void addColumnEntriesBeschaeftigungsdaten(List<ColumnEntry< ? super Kandidatur>> result) {
    getBasisKandidaturColumnBuilder().addColumnEntriesBeschaeftigungsdaten(result);
  }

  @Override
  protected void addColumnEntriesAnschrift(List<ColumnEntry< ? super Kandidatur>> result) {
    getBasisKandidaturColumnBuilder().addColumnEntriesAnschrift(result);
  }

  @Override
  protected void addColumnEntriesGewaehlt(List<ColumnEntry< ? super Kandidatur>> result) {
    getBasisKandidaturColumnBuilder().addColumnEntriesGewaehlt(result);
  }

  @Override
  protected void addColumnEntriesVerknuepfungen(List<ColumnEntry< ? super Kandidatur>> result) {
    getBasisKandidaturColumnBuilder().addColumnEntriesVerknuepfungen(result);
  }

  @Override
  protected void addColumnEntriesZulassungspruefung(List<ColumnEntry< ? super Kandidatur>> result) {
    getBasisKandidaturColumnBuilder().addColumnEntriesZulassungspruefung(result);
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturGebietColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturGebietColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturPolitischeGruppeColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturPolitischeGruppeColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturAnzahlNennungenColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturAnzahlNennungenColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturKandidaturArtColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturKandidaturArtColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturNameVollstaendigAnzeigeColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturNameVollstaendigAnzeigeColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturAkademischerGradColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturAkademischerGradColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturTitelColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturTitelColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturFamiliennameBestandteilColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturFamiliennameBestandteilColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturFamiliennameColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturFamiliennameColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturVornamenColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturVornamenColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturGeburtsdatumColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturGeburtsdatumColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturGeschlechtColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturGeschlechtColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturBerufColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturBerufColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturBerufUnformatiertColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturBerufUnformatiertColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturBerufsschluesselColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturBerufsschluesselColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturEhrenamtColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturEhrenamtColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturKuenstlernameOrdensnameColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturKuenstlernameOrdensnameColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturZusammengestezteAnschriftColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturZusammengestezteAnschriftColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturStrasseColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturStrasseColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturHausnummerColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturHausnummerColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturHausnummerzusatzColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturHausnummerzusatzColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturWohnungsnummerColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturWohnungsnummerColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturPlzColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturPlzColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturWohnortColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturWohnortColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturOrtsteilColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturOrtsteilColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturZustellanweisungColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturZustellanweisungColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturGewaehltVorperiodeColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturGewaehltVorperiodeColumn();
  }

  protected AbstractColumnEntry<Kandidatur> getKandidaturVerknuepfungColumn() {
    return getBasisKandidaturColumnBuilder().getKandidaturVerknuepfungColumn();
  }

  @Override
  public void collectEagerLoadings(EagerLoadingCollector<Kandidatur> eagerLoadingCollector) {
    getBasisKandidaturColumnBuilder().collectEagerLoadings(eagerLoadingCollector);

    super.collectEagerLoadings(eagerLoadingCollector);
  }

  private BasisKandidaturColumnBuilder getBasisKandidaturColumnBuilder() {
    return basisKandidaturColumnBuilder;
  }
}
