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

import java.io.Serializable;
import java.util.List;

import de.ivu.elect.business.kandidatur.entity.KandidaturGewaehlt;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.Icons;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.table.AbstractColumnEntry;

public abstract class AbstractKandidaturGewaehltSitzberechnungsalgorithmusColumnBuilder implements Serializable, KandidaturGewaehltSitzberechnungsalgorithmusColumnBuilder {

  private static final long serialVersionUID = 1L;

  private final Messages messages;

  private final Icons icons;

  protected AbstractKandidaturGewaehltSitzberechnungsalgorithmusColumnBuilder(Messages messages, Icons icons) {
    super();

    this.messages = messages;
    this.icons = icons;

    initColumns();
  }

  protected abstract void initColumns();

  @Override
  public void addGewaehltKandidaturColumnEntries(List<ColumnEntry< ? super KandidaturGewaehlt>> result, AbstractColumnEntry<KandidaturGewaehlt> kandidaturFamiliennameBestandteilColumn,
      AbstractColumnEntry<KandidaturGewaehlt> kandidaturFamiliennameColumn, AbstractColumnEntry<KandidaturGewaehlt> kandidaturRufnameColumn,
      AbstractColumnEntry<KandidaturGewaehlt> kandidaturGeburtsdatumColumn) {
    result.add(kandidaturFamiliennameBestandteilColumn);
    result.add(kandidaturFamiliennameColumn);
    result.add(kandidaturRufnameColumn);
    result.add(kandidaturGeburtsdatumColumn);
  }

  @Override
  public void addGewaehltGewaehltStatusColumnEntries(List<ColumnEntry< ? super KandidaturGewaehlt>> result, AbstractColumnEntry<KandidaturGewaehlt> gewaehltGewaehltStatusColumn,
      AbstractColumnEntry<KandidaturGewaehlt> gewaehltGewaehltStatusVergabeColumn) {
    result.add(gewaehltGewaehltStatusColumn);
  }

  @Override
  public void addGewaehltRangColumnEntries(List<ColumnEntry< ? super KandidaturGewaehlt>> result, AbstractColumnEntry<KandidaturGewaehlt> gewaehltRangColumn) {
    result.add(gewaehltRangColumn);
  }

  protected Messages getMessages() {
    return messages;
  }

  protected Icons getIcons() {
    return icons;
  }
}
