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

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

import javax.inject.Named;

import de.ivu.elect.business.gebietsbaum.entity.Gebietsart;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;

@Named(GebietsartColumnBuilder.COMPONENT_NAME)
public class GebietsartColumnBuilder extends AbstractColumnBuilder<Gebietsart> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "gebietsartColumnBuilder";

  private AbstractGebietsartColumn<Gebietsart> gebietsartPositionColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartNameColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartTitelColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartBezirksartColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartKennzeichenColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartDarstellungColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartIconMitIconColumn;

  private AbstractGebietsartColumn<Gebietsart> gebietsartSystemGebietsebeneColumn;

  public GebietsartColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    gebietsartNameColumn = AbstractGebietsartColumn.createGebietsartNameColumn(getMessages());
    gebietsartTitelColumn = AbstractGebietsartColumn.createGebietsartTitelColumn(getMessages());
    gebietsartPositionColumn = AbstractGebietsartColumn.createGebietsartPositionColumn(getMessages());
    gebietsartIconMitIconColumn = new GebietsartIconMitIconColumn(getMessages(), AbstractGebietsartColumn.createGebietsartIconColumn(getMessages()));
    gebietsartKennzeichenColumn = AbstractGebietsartColumn.createGebietsartKennzeichenColumn(getMessages());
    gebietsartBezirksartColumn = AbstractGebietsartColumn.createGebietsartBezirksartColumn(getMessages());
    gebietsartDarstellungColumn = new GebietsartDarstellungColumn(getMessages(), AbstractGebietsartColumn.createGebietsartDarstellungColumn(getMessages()));
    gebietsartSystemGebietsebeneColumn = AbstractGebietsartColumn.createGebietsartSystemGebietsebeneColumn(getMessages());
  }

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

    // ELECT-6811, cf. GebietsartViewFormBuilder#addProperties!
    result.add(gebietsartNameColumn);
    result.add(gebietsartTitelColumn);
    result.add(gebietsartPositionColumn);
    result.add(gebietsartIconMitIconColumn);
    result.add(gebietsartKennzeichenColumn);
    result.add(gebietsartDarstellungColumn);
    result.add(gebietsartBezirksartColumn);
    result.add(gebietsartSystemGebietsebeneColumn);

    return result;
  }
}
