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

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

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

import de.ivu.elect.business.staat.boundary.StaatenGruppeExtendedDAO;
import de.ivu.elect.business.staat.entity.StaatenGruppe;
import de.ivu.elect.business.staat.entity.StaatenGruppeMeta;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(StaatenGruppeColumnBuilder.COMPONENT_NAME)
public class StaatenGruppeColumnBuilder extends AbstractColumnBuilder<StaatenGruppe> {

  public static final String COMPONENT_NAME = "staatenGruppeColumnBuilder";

  private static final long serialVersionUID = 1L;

  @Inject
  private StaatenGruppeMeta staatenGruppeMeta;

  @Inject
  private StaatenGruppeExtendedDAO staatenGruppeDAO;

  private AbstractStaatenGruppeColumn<StaatenGruppe> staatenGruppeBezeichnungColumn;

  private AbstractStaatenGruppeColumn<StaatenGruppe> staatenGruppeStaatenGruppeTypColumn;

  private StaatenGruppeStaatenColumn<StaatenGruppe> staatenGruppeStaatenColumn;

  public StaatenGruppeColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    staatenGruppeBezeichnungColumn = AbstractStaatenGruppeColumn.createStaatenGruppeBezeichnungColumn(getMessages());
    staatenGruppeStaatenGruppeTypColumn = AbstractStaatenGruppeColumn.createStaatenGruppeStaatenGruppeTypColumn(getMessages());
    staatenGruppeStaatenColumn = new StaatenGruppeStaatenColumn<>(getMessages(), staatenGruppeMeta, staatenGruppeDAO);
  }

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

    result.add(staatenGruppeBezeichnungColumn);
    result.add(staatenGruppeStaatenGruppeTypColumn);
    result.add(staatenGruppeStaatenColumn);

    return result;
  }
}
