/**
 * 
 */
package at.gv.egiz.pdfas.impl.input;

import java.util.List;

import at.gv.egiz.pdfas.impl.input.helper.DataSourceHelper;
import at.gv.egiz.pdfas.exceptions.ErrorCode;
import at.gv.egiz.pdfas.framework.input.PdfDataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
import at.knowcenter.wag.exactparser.ParseDocument;

/**
 * Parses the given PDF document into a list of Incremental Update blocks.
 * @author wprinz
 */
public class IncrementalUpdateParser
{
  /**
   * The log.
   */
  private static final Log log = LogFactory.getLog(IncrementalUpdateParser.class);
  
  public static List parsePdfIntoIUBlocks (PdfDataSource pdfDataSource) throws PDFDocumentException
  {
    log.trace("parsePdfIntoIUBlocks:");
    
    List blocks = null;
    try
    {
      byte [] pdf = DataSourceHelper.convertDataSourceToByteArray(pdfDataSource);
      blocks = ParseDocument.parseDocument(pdf);
    }
    catch (Exception e)
    {
      log.error("Error while parsing Document into IU blocks.", e);
      throw new PDFDocumentException(ErrorCode.DOCUMENT_CANNOT_BE_READ, e);
    }

    log.trace("parsePdfIntoIUBlocks finished.");
    return blocks;
  }

}