/**
 * 
 */
package at.gv.egiz.pdfas.framework;

import java.io.InputStream;

import at.gv.egiz.pdfas.framework.input.DataSource;
import at.gv.egiz.pdfas.framework.input.PdfDataSource;
import at.gv.egiz.pdfas.framework.input.TextDataSource;
import at.gv.egiz.pdfas.framework.output.DataSink;

/**
 * Factory for creating DataSources.
 * 
 * @author wprinz
 */
public interface DataStrategy
{
  
  public TextDataSource createTextDataSource (String text);
  
  public PdfDataSource createPdfDataSource (InputStream is);
  
  public PdfDataSource createPdfDataSource (DataSource other, int length);
  
  /**
   * @deprecated - use streaming.
   * @param pdf
   * @return
   */
  public PdfDataSource createPdfDataSource (byte [] pdf);

  public void destroyDataSource (DataSource dataSource);
  
  public DataSink createDataSink ();
}