//@include lib_Class.js

/**
 * PDF utilities
 *
 * @author MW, ELO Digital Office GmbH
 *
 * @eloas
 *
 * @requires sol.common.RepoUtils
 */

sol.define("sol.common.as.PdfUtils", {

  singleton: true,

  /**
   * Merges PDF streams
   * @param {Array} inputStreams PDF input streams
   * @param {java.io.OutputStream} outputStream
   */
  mergePdfStreams: function (inputStreams, outputStream) {
    var me = this,
        pdfBoxVersion, pdfMerger;

    if (!inputStreams) {
      throw "Input streams are empty";
    }

    pdfBoxVersion = (new Packages.org.apache.pdfbox.pdmodel.PDDocument()).class.package.implementationVersion;
    me.logger.debug(["PDF box version: {0}", pdfBoxVersion]);

    if (pdfBoxVersion > "2.0.0") {
      pdfMerger = new Packages.org.apache.pdfbox.multipdf.PDFMergerUtility();
    } else {
      pdfMerger = new Packages.org.apache.pdfbox.util.PDFMergerUtility();
    }

    inputStreams.forEach(function (inputStream) {
      pdfMerger.addSource(inputStream);
    });

    pdfMerger.destinationStream = outputStream;
    pdfMerger.mergeDocuments();

    inputStreams.forEach(function (inputStream) {
      inputStream.close();
    });
  }
});