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

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

import javax.inject.Named;

import de.ivu.elect.business.entschaedigung.entity.Entschaedigungsart;
import de.ivu.elect.business.entschaedigung.entity.EntschaedigungsartKriteriumPersonendatenArt;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(EntschaedigungsartColumnBuilder.COMPONENT_NAME)
public class EntschaedigungsartColumnBuilder extends AbstractColumnBuilder<Entschaedigungsart> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "entschaedigungsartColumnBuilder";

  private AbstractEntschaedigungsartColumn<Entschaedigungsart> entschaedigungsartKriteriumPersonendatenArtColumn;

  private AbstractEntschaedigungsartColumn<Entschaedigungsart> entschaedigungsartErklaerungColumn;

  private AbstractEntschaedigungsartColumn<Entschaedigungsart> entschaedigungsartTemplateColumn;

  private AbstractEntschaedigungsartColumn<Entschaedigungsart> entschaedigungsartBerechnungsartColumn;

  private AbstractEntschaedigungsartColumn<Entschaedigungsart> entschaedigungsartEinzelbetragInitialMitWaehrungColumn;

  private AbstractEntschaedigungsartColumn<Entschaedigungsart> entschaedigungsartEinzelbetragIntervallMitWaehrungColumn;

  public EntschaedigungsartColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    entschaedigungsartKriteriumPersonendatenArtColumn = new EntschaedigungsartKriteriumColumn(getMessages(), EntschaedigungsartKriteriumPersonendatenArt.MSG_KEY_PREFIX,
        AbstractEntschaedigungsartColumn.createEntschaedigungsartKriteriumPersonendatenArtColumn(getMessages()));

    entschaedigungsartErklaerungColumn = new EntschaedigungsartErklaerungColumn(getMessages());

    entschaedigungsartTemplateColumn = new EntschaedigungsartTemplateColumn(getMessages());

    entschaedigungsartBerechnungsartColumn = AbstractEntschaedigungsartColumn.createEntschaedigungsartBerechnungsartColumn(getMessages());

    entschaedigungsartEinzelbetragInitialMitWaehrungColumn = new EntschaedigungsartEinzelbetragInitialMitWaehrungColumn(getUserLocale(), getMessages());
    entschaedigungsartEinzelbetragIntervallMitWaehrungColumn = new EntschaedigungsartEinzelbetragIntervallMitWaehrungColumn(getUserLocale(), getMessages());
  }

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

    result.add(entschaedigungsartKriteriumPersonendatenArtColumn);

    result.add(entschaedigungsartErklaerungColumn);

    result.add(entschaedigungsartTemplateColumn);
    result.add(entschaedigungsartBerechnungsartColumn);

    result.add(entschaedigungsartEinzelbetragInitialMitWaehrungColumn);
    result.add(entschaedigungsartEinzelbetragIntervallMitWaehrungColumn);

    return result;
  }
}
