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

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

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

import de.ivu.elect.business.gebietsbaum.boundary.GebietsgruppierungExtendedDAO;
import de.ivu.elect.business.gebietsbaum.entity.Gebietsgruppierung;
import de.ivu.elect.business.gebietsbaum.entity.GebietsgruppierungMeta;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(GebietsgruppierungColumnBuilder.COMPONENT_NAME)
public class GebietsgruppierungColumnBuilder extends AbstractColumnBuilder<Gebietsgruppierung> {

  public static final String COMPONENT_NAME = "gebietsgruppierungColumnBuilder";

  private static final long serialVersionUID = 1L;

  @Inject
  private GebietsgruppierungMeta gebietsgruppierungMeta;

  @Inject
  private GebietsgruppierungExtendedDAO gebietsgruppierungDAO;

  private AbstractGebietsgruppierungColumn<Gebietsgruppierung> gebietsgruppierungGebietsgruppierungNameColumn;

  private AbstractGebietsgruppierungColumn<Gebietsgruppierung> gebietsgruppierungGebietsgruppierungGebietsgruppierungArtColumn;

  private AbstractGebietsgruppierungColumn<Gebietsgruppierung> gebietsgruppierungGebietsgruppierungPositionColumn;
  private GebietsgruppierungGebieteColumn<Gebietsgruppierung> gebietsgruppierungGebieteColumn;

  public GebietsgruppierungColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    gebietsgruppierungGebietsgruppierungNameColumn = AbstractGebietsgruppierungColumn.createGebietsgruppierungNameColumn(getMessages());
    gebietsgruppierungGebietsgruppierungGebietsgruppierungArtColumn = AbstractGebietsgruppierungColumn.createGebietsgruppierungGebietsgruppierungArtColumn(getMessages());
    gebietsgruppierungGebietsgruppierungPositionColumn = AbstractGebietsgruppierungColumn.createGebietsgruppierungPositionColumn(getMessages());
    gebietsgruppierungGebieteColumn = new GebietsgruppierungGebieteColumn(getMessages(), gebietsgruppierungMeta, gebietsgruppierungDAO);
  }

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

    result.add(gebietsgruppierungGebietsgruppierungNameColumn);
    result.add(gebietsgruppierungGebietsgruppierungGebietsgruppierungArtColumn);
    result.add(gebietsgruppierungGebietsgruppierungPositionColumn);
    result.add(gebietsgruppierungGebieteColumn);

    return result;
  }
}
