forked from Coded/SIPRP
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							4.9 KiB
						
					
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							4.9 KiB
						
					
					
				| /*
 | |
|  * FichasPrinter.java
 | |
|  *
 | |
|  * Created on 20 de Fevereiro de 2006, 0:43
 | |
|  *
 | |
|  * To change this template, choose Tools | Template Manager
 | |
|  * and open the template in the editor.
 | |
|  */
 | |
| 
 | |
| package siprp.impressaofichas;
 | |
| 
 | |
| import java.io.*;
 | |
| import java.text.*;
 | |
| import java.util.*;
 | |
| import javax.xml.transform.*;
 | |
| 
 | |
| import com.evolute.utils.*;
 | |
| import com.evolute.utils.date.*;
 | |
| import com.evolute.utils.fop.*;
 | |
| import com.evolute.utils.jdo.*;
 | |
| import com.evolute.utils.strings.*;
 | |
| import com.evolute.utils.ui.*;
 | |
| import com.evolute.utils.xml.*;
 | |
| 
 | |
| import siprp.data.*;
 | |
| import siprp.ficha.*;
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * @author Frederico
 | |
|  */
 | |
| public class FichasPrinter extends Thread
 | |
| {
 | |
| 	protected static final DateFormat D_F = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) );
 | |
| 	protected static final DateFormat D_F_L = DateFormat.getDateInstance( DateFormat.LONG, new Locale( "pt", "PT" ) );
 | |
| 	
 | |
| 	private ImpressaoFichasDataProvider provider;
 | |
| 	
 | |
| 	protected Integer ids[];
 | |
| 	protected String printerName;
 | |
| 	protected String listPath;
 | |
| 	protected String nomeEmpresa;
 | |
| 	protected String nomeEstabelecimento;
 | |
| 	
 | |
| 	/** Creates a new instance of FichasPrinter */
 | |
| 	public FichasPrinter( Integer ids[], String printerName, String listPath,
 | |
| 							String nomeEmpresa, String nomeEstabelecimento )
 | |
| 	{
 | |
| 		this.ids = ids;
 | |
| 		this.printerName = printerName;
 | |
| 		this.listPath = listPath;
 | |
| 		this.nomeEmpresa = nomeEmpresa;
 | |
| 		this.nomeEstabelecimento = nomeEstabelecimento;
 | |
| 	}
 | |
| 	
 | |
| 	public void run()
 | |
| 	{
 | |
| 		try
 | |
| 		{
 | |
| 			SimpleXMLElement root = new SimpleXMLElement( "LISTA_FICHAS" );
 | |
| 			for( int n = 0; n < ids.length; n++ )
 | |
| 			{
 | |
| 				print( ids[ n ] );
 | |
| 				Object dados[] = provider.getDadosForExameID( ids[ n ] );
 | |
| 				SimpleXMLElement linha = new SimpleXMLElement( "FICHA" );
 | |
| 				linha.addElement( new SimpleXMLElement( "NOME", ( String ) dados[ 0 ] ) );
 | |
| 				linha.addElement( new SimpleXMLElement( "DATA_EXAME", D_F.format( ( Date ) dados[ 1 ] ) ) );
 | |
| 				linha.addElement( new SimpleXMLElement( "DATA_PROXIMO_EXAME", dados[ 2 ] != null ? D_F.format( ( Date ) dados[ 2 ] ) : "n/d" ) );
 | |
| 				root.addElement( linha );
 | |
| 				
 | |
| 				try
 | |
| 				{
 | |
| 					sleep( (n % 5 == 0 && n > 0) ? 3000 : 2000 );
 | |
| 				}
 | |
| 				catch( InterruptedException iex )
 | |
| 				{
 | |
| 				}
 | |
| 			}
 | |
| 			Date today = ( Date ) Singleton.getInstance( Singleton.TODAY );
 | |
| 			Calendar cal = Calendar.getInstance();
 | |
| 			cal.setTime( today );
 | |
| 			SimpleXMLElement data = new SimpleXMLElement( "DATA_EXTENSO", DateUtils.WEEKDAYS_FULL_PT[ cal.get( Calendar.DAY_OF_WEEK ) - Calendar.MONDAY ]
 | |
| 																			+ ", " + D_F_L.format( today ) );
 | |
| 			root.addElement( data );
 | |
| 			TransformerFactory tFactory = TransformerFactory.newInstance();
 | |
| 			String xml = root.toString();
 | |
| 			ByteArrayOutputStream out = new ByteArrayOutputStream();
 | |
| 			FOPCreator creator = new FOPCreator();
 | |
| 			InputStream xmlIn = new ByteArrayInputStream( xml.getBytes() );
 | |
| 			creator.createFOfromXML( xmlIn,
 | |
| 								FichasPrinter.class.getClassLoader().getResourceAsStream( 
 | |
| 									"siprp/impressaofichas/lista_fichas.xsl" ), 
 | |
| 									out );
 | |
| 			byte toPrint[] = out.toByteArray();
 | |
| 			ByteArrayInputStream in = new ByteArrayInputStream( toPrint );
 | |
| 			Hashtable printOptions = new Hashtable();
 | |
| //System.out.println( "OUT: " + out.toString() );
 | |
| 			new FOPPrinter().printFO( in, false, true, printOptions );
 | |
| 			byte []pdfData = new PDFCreator().createPdfFromFo( toPrint );
 | |
| 			File dir = new File( new File( listPath ), StringPlainer.convertString( nomeEmpresa ).replace( ' ', '_' ) );
 | |
| 			if( !dir.exists() )
 | |
| 			{
 | |
| 				dir.mkdir();
 | |
| 			}
 | |
| 			String fileName = StringPlainer.convertString( nomeEstabelecimento ).replace( ' ', '_' )
 | |
| 								+ "_" + DateUtils.plainFormatDate( today ) + ".pdf";
 | |
| 			FileOutputStream fos = new FileOutputStream( new File( dir, fileName ) );
 | |
| 			fos.write( pdfData );
 | |
| 			fos.close();
 | |
| 		}
 | |
| 		catch( Exception ex )
 | |
| 		{
 | |
| 			DialogException.showExceptionMessage( ex, "Erro a imprimir", true );
 | |
| 		}
 | |
| 		ids = null;
 | |
| 	}
 | |
| 	
 | |
| 	private void print( Integer exameID )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		if( provider == null )
 | |
| 		{
 | |
| 			provider = ( ImpressaoFichasDataProvider ) ImpressaoFichasDataProvider.getProvider();
 | |
| 		}
 | |
| //		MetaObject exame = fdpProvider.load( fdpProvider.EXAMES, new DBKey( exameID ) );		
 | |
| //		ExameData exame = (ExameData) JDO.load( ExameData.class, exameID );
 | |
| //		byte pdf[] = (byte []) exame.get( ExameData.PDF );
 | |
| 		byte pdf[] = provider.getPDF( exameID );
 | |
| 		if( pdf == null )
 | |
| 		{
 | |
| 			throw new Exception( "N\u00e3o existe exame" );
 | |
| 		}
 | |
| //		TrabalhadorData trabalhadorExame = ( TrabalhadorData ) exame.get( ExameData.TRABALHADOR );
 | |
| //		String nomeFicheiro = StringPlainer.convertString( ( String ) trabalhadorExame.get( TrabalhadorData.NOME ) );
 | |
| 		String nomeFicheiro = StringPlainer.convertString( provider.getNomeTrabalhadorForExameID( exameID ) );
 | |
| //		nomeFicheiro.replaceAll( " ", "_" );
 | |
| 		String split[] = nomeFicheiro.split( " " );
 | |
| 		nomeFicheiro = "";
 | |
| 		for( int n = 0; n < split.length; n++ )
 | |
| 		{
 | |
| 			nomeFicheiro += split[ n ] + "_";
 | |
| 		}
 | |
| 		ExamePDF ePDF = new ExamePDF();
 | |
| 		ePDF.printSilent( pdf, nomeFicheiro, printerName );
 | |
| 	}	
 | |
| }
 |