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

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

import javax.inject.Inject;

import de.ivu.elect.business.CurrentCustomer;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.table.ColorColumnEntryWrapper;

/**
 * Klasse existiert wegen unterschiedlicher Behandlung von @Named bei mehreren Vererbungsstufen in JBoss 7 und Wildfly
 */
public class BasisWahlColumnBuilder implements Serializable {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient Messages messages;

  @Inject
  protected transient CurrentCustomer currentCustomer;

  protected AbstractWahlColumn<Wahl> wahlNameColumn;

  protected AbstractWahlColumn<Wahl> wahlWahlartColumn;

  protected ColumnEntry<Wahl> wahlFarbeColumn;

  public BasisWahlColumnBuilder() {
    super();
  }

  public void initColumns() {
    wahlNameColumn = AbstractWahlColumn.createWahlNameColumn(messages);
    wahlWahlartColumn = new WahlWahlartColumn(messages);
    wahlFarbeColumn = ColorColumnEntryWrapper.wrap(AbstractWahlColumn.createWahlFarbeColumn(messages));
  }

  public List<ColumnEntry< ? super Wahl>> getColumnEntriesSorted() {
    List<ColumnEntry< ? super Wahl>> result = new ArrayList<>();

    result.add(wahlFarbeColumn);
    result.add(wahlWahlartColumn);
    result.add(wahlNameColumn);

    return result;
  }

  protected CurrentCustomer getCustomer() {
    return currentCustomer;
  }
}
