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

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

import javax.inject.Named;

import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.entschaedigung.EntschaedigungStatusEntry;

@Named(EntschaedigungStatusEntryColumnBuilder.COMPONENT_NAME)
public class EntschaedigungStatusEntryColumnBuilder extends AbstractColumnBuilder<EntschaedigungStatusEntry> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "entschaedigungStatusEntryColumnBuilder";

  private AbstractEntschaedigungStatusEntryColumn entschaedigungStatusEntryBezeichnungColumn;

  private AbstractEntschaedigungStatusEntryColumn entschaedigungStatusEntryBetragMitWaehrungColumn;

  private AbstractEntschaedigungStatusEntryColumn entschaedigungStatusEntryAnzahlColumn;

  private AbstractEntschaedigungStatusEntryColumn entschaedigungStatusEntryBetragMitWaehrungAggregiertColumn;

  public EntschaedigungStatusEntryColumnBuilder() {
    super();
  }

  @Override
  public boolean isColumnsSortableByValue() {
    return false;
  }

  @Override
  protected void initColumns() {
    entschaedigungStatusEntryBezeichnungColumn = AbstractEntschaedigungStatusEntryColumn.createEntschaedigungStatusEntryBezeichnungColumn(getMessages());
    entschaedigungStatusEntryBetragMitWaehrungColumn = AbstractEntschaedigungStatusEntryColumn.createEntschaedigungStatusEntryBetragMitWaehrungColumn(getMessages());

    entschaedigungStatusEntryAnzahlColumn = AbstractEntschaedigungStatusEntryColumn.createEntschaedigungStatusEntryAnzahlColumn(getMessages());
    entschaedigungStatusEntryBetragMitWaehrungAggregiertColumn = AbstractEntschaedigungStatusEntryColumn.createEntschaedigungStatusEntryBetragMitWaehrungAggregiertColumn(getMessages());
  }

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

    result.add(entschaedigungStatusEntryBezeichnungColumn);
    result.add(entschaedigungStatusEntryBetragMitWaehrungColumn);

    result.add(entschaedigungStatusEntryAnzahlColumn);
    result.add(entschaedigungStatusEntryBetragMitWaehrungAggregiertColumn);

    return result;
  }
}
