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

import java.io.ByteArrayOutputStream;
import java.io.Serializable;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;

import org.apache.commons.io.IOUtils;

import de.ivu.elect.business.datei.boundary.DateiExportExtendedDAO;
import de.ivu.elect.business.datei.entity.DateiExport;
import de.ivu.elect.business.exchange.control.ImportExportStreamCreator;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.ergebnis.exchange.NlWasErgebnisArtefaktNachGebietKorrekturBulkExportView;

@RequestScoped
public class NlWasErgebnisBulkExportViewAction implements Serializable {
  private static final long serialVersionUID = 1L;

  @View
  @Inject
  private transient NlWasErgebnisArtefaktNachGebietKorrekturBulkExportView bulkExportView;

  @Inject
  private transient DateiExportExtendedDAO dateiExportExtendedDAO;

  @Inject
  private transient ImportExportStreamCreator importExportStreamCreator;

  public String setzeDateiExport(DateiExport dateiExportNotAttached) {
    var datei = dateiExportExtendedDAO.attach(dateiExportNotAttached).getDatei();
    try (var bos = new ByteArrayOutputStream()) {
      try (var is = datei.createInputStream(importExportStreamCreator)) {
        IOUtils.copy(is, bos);
      }
      bulkExportView.setFile(new ContentUploadedFile(datei.getDateiname(), datei.getMimeType(), bos.toByteArray()));
    } catch (Exception e) {
      throw new RuntimeException(e.getMessage(), e);
    }

    return NlWasErgebnisArtefaktNachGebietKorrekturBulkExportView.VIEW_ID;

  }

}
