package siprp.planoactuacao.print;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import com.evolute.utils.fop.PDFCreator;
import com.evolute.utils.xml.XSLTransformer;

public class TestPrint
{
	public static void main( String args[] )
		throws Exception
	{
		new TestPrint().test();
	}
	
	public void test()
		throws Exception
	{
//		PlanoActuacaoDBInit.initDB();
//		PlanoActuacaoToPrint plano = PlanoActuacaoPrintDataProvider.getProvider().getPlanoToPrint( 6 );
//		Document foDoc = new Document( plano.toJdomElement() );
//		Format pretty = Format.getPrettyFormat();
//		pretty.setIndent("\t");
//		XMLOutputter outputter = new XMLOutputter(pretty);
//		ByteArrayOutputStream foBaos = new ByteArrayOutputStream();
//		outputter.output( foDoc, foBaos );
//		FileOutputStream fos = new FileOutputStream( "/home/fpalma/Desktop/in.xml" );
//		fos.write( foBaos.toByteArray() );
//		fos.close();
//		
//		byte fo[] = applyTemplate(
////				"siprp/planoactuacao/print/plano_actuacao.xsl",
//				getClass().getClassLoader().getResourceAsStream( "siprp/planoactuacao/print/plano_actuacao.xsl" ),
////				"siprp/planoactuacao/print/teste_input.xml" );
//				new ByteArrayInputStream( foBaos.toByteArray() ) );
////				new ByteArrayInputStream( "<?xml version=\"1.0\" encoding=\"UTF-8\"?><plano></plano>".getBytes() ) );
////		System.out.println( new String( fo ) );
//		createPDFFile( fo, "/home/fpalma/Desktop/out.pdf" );
////		createPDFFile( fo, "c:/Documents and Settings/Frederico/Ambiente de Trabalho/out.pdf" );
//		
//		fos = new FileOutputStream( "/home/fpalma/Desktop/out.xml" );
//		fos.write( fo );
//		fos.close();
		
		byte pdf[] = new PlanoActuacaoPDFCreator().createPDF( 6, true );
		FileOutputStream fos = new FileOutputStream( "/home/fpalma/Desktop/pdf.pdf" );
		fos.write( pdf );
		fos.close();
	}
	
	public void createPDFFile( byte fo[], String path )
		throws Exception
	{
		byte pdf[] = PDFCreator.getPDFCreator().createPdfFromFo( fo );
		FileOutputStream fos = new FileOutputStream( path );
		fos.write( pdf );
		fos.close();
	}
	
	public byte[] applyTemplate( String template, String data )
		throws Exception
	{
		InputStream xsl = getClass().getClassLoader().getResourceAsStream( template );
		InputStream xml = getClass().getClassLoader().getResourceAsStream( data );
		return( applyTemplate( xsl, xml ) );
	}
	
	public byte[] applyTemplate( InputStream xsl, InputStream dataStream )
		throws Exception
	{
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		XSLTransformer.getXSLTransformer().transform( dataStream, xsl, baos );
		return baos.toByteArray();
	}
}
