
package de.ivu.elect.was.exchange.stimmeingabe;

import de.ivu.elect.business.datei.entity.FileType;
import de.ivu.elect.business.exchange.control.FileFormat;
import de.ivu.elect.business.exchange.control.FileKonfiguration;
import de.ivu.elect.business.exchange.control.MappingException;
import de.ivu.elect.interfaces.was.stimmeingabe.ErfassteStimmen;

import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class WasStimmeingabeXMLZIPExportMapper extends AbstractWasStimmeingabeXMLExportMapper {

  public WasStimmeingabeXMLZIPExportMapper() {
    super();
  }

  @Override
  public FileFormat getFileFormat() {
    var fileFormatArchived = super.getFileFormat();

    return new FileFormat(fileFormatArchived.getName(), FileType.ZIP, fileFormatArchived.getFileType());
  }

  @Override
  public void serialize(ErfassteStimmen erfassteStimmen, OutputStream os, FileKonfiguration fileKonfiguration) throws MappingException {
    try {
      var zos = new ZipOutputStream(os);

      var zipEntry = new ZipEntry("stimmeingaben.xml");
      zos.putNextEntry(zipEntry);

      super.serialize(erfassteStimmen, zos, fileKonfiguration);

      zos.closeEntry();
      zos.finish();
    } catch (Exception ex) {
      throw new MappingException(ex.getMessage(), ex);
    }
  }
}
