package de.ivu.elect.presentation.system;

import de.ivu.elect.business.gebietsbaum.boundary.GebietExtendedDAO;
import de.ivu.elect.jee.presentation.dynamictable.ColumnEntry;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;
import de.ivu.elect.jee.presentation.status.StatusEntry;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;
import de.ivu.elect.presentation.gebietsbaum.status.GebietsbaumStatusEntry;
import de.ivu.elect.presentation.system.table.DefaultStatusEntryColumn;

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;

@Specializes
public class CommonStatusExporterColumnBuilder extends StatusExporterColumnBuilder {


  @Inject
  private transient GebietExtendedDAO gebietExtendedDAO;

  @Inject
  private transient GebietNummerFormatter gebietNummerFormatter;

  private DefaultStatusEntryColumn gebietColumn;

  @Override
  protected void initColumns() {
    super.initColumns();

    gebietColumn = new DefaultStatusEntryColumn<>("gebiet", messages, "status.entry.gebiet", ColumnType.STRING, s -> {
      if (s instanceof GebietsbaumStatusEntry) {
        return gebietNummerFormatter.getNameMitNummer(gebietExtendedDAO.attach(((GebietsbaumStatusEntry) s).getGebiet()));
      }
      return null;
    });
  }


  @Override
  protected List<ColumnEntry<? super StatusEntry>> getDefaultColumns() {
    List<ColumnEntry<? super StatusEntry>> defaultColumns = new ArrayList<>(super.getDefaultColumns());
    defaultColumns.add(gebietColumn);
    return defaultColumns;
  }
}
