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

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

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

import de.ivu.elect.business.datei.entity.DateiImport;
import de.ivu.elect.business.datei.entity.DateiMeta;
import de.ivu.elect.jee.presentation.dynamictable.AbstractColumnBuilder;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.presentation.datei.table.AbstractDateiImportColumn;

@Named(DateiImportColumnBuilder.COMPONENT_NAME)
public class DateiImportColumnBuilder extends AbstractColumnBuilder<DateiImport> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "dateiImportColumnBuilder";

  @Inject
  private transient DateiMeta dateiMeta;

  private AbstractDateiImportColumn<DateiImport> dateiImportDateiNameColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportOriginalDateinameColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportImportStatusWithIconColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportDateiFileTypeColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportDateiFormatColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportErstellungszeitpunktColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportImportiertAmColumn;

  private AbstractDateiImportColumn<DateiImport> dateiImportKommentarColumn;

  public DateiImportColumnBuilder() {
    super();
  }

  @Override
  protected void initColumns() {
    dateiImportDateiNameColumn = new DateiImportDateiNameColumn(getMessages(), dateiMeta);
    dateiImportOriginalDateinameColumn = new DateiImportOriginalDateinameColumn(getMessages(), dateiMeta);
    dateiImportImportStatusWithIconColumn = new DateiImportImportStatusWithIconColumn(getMessages(), getIcons());
    dateiImportDateiFileTypeColumn = new DateiImportDateiFileTypeColumn(getMessages(), dateiMeta);
    dateiImportDateiFormatColumn = new DateiImportDateiFormatColumn(getMessages(), dateiMeta);
    dateiImportErstellungszeitpunktColumn = new DateiImportErstellungszeitpunktColumn(getMessages(), dateiMeta);
    dateiImportImportiertAmColumn = AbstractDateiImportColumn.createDateiImportImportiertAmColumn(getMessages());
    dateiImportKommentarColumn = new DateiImportKommentarColumn(getMessages());
  }

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

    result.add(dateiImportImportStatusWithIconColumn);
    result.add(dateiImportErstellungszeitpunktColumn);
    result.add(dateiImportOriginalDateinameColumn);
    result.add(dateiImportDateiFileTypeColumn);
    result.add(dateiImportDateiFormatColumn);
    result.add(dateiImportImportiertAmColumn);
    //result.add(dateiImportDateiNameColumn);
    result.add(dateiImportKommentarColumn);

    return result;
  }
}
