From f675de0c5f5a4df07ee842ecf89d115d5b9dd47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Sim=C3=A3o?= Date: Fri, 7 Mar 2008 11:53:08 +0000 Subject: [PATCH] Adicionada exportacao para PDF de fichas de aptidao git-svn-id: https://svn.coded.pt/svn/SIPRP@698 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/SIPRPSoft/src/siprp/ficha/ExamePDF.java | 6 +- .../src/siprp/ficha/FichaWindow.java | 139 ++++++++++++++---- .../src/siprp/ficha/TrabalhadorPanel.java | 3 - .../siprp/impressaofichas/FichasPrinter.java | 46 ++++-- 4 files changed, 147 insertions(+), 47 deletions(-) diff --git a/trunk/SIPRPSoft/src/siprp/ficha/ExamePDF.java b/trunk/SIPRPSoft/src/siprp/ficha/ExamePDF.java index 53335e10..96ad8415 100644 --- a/trunk/SIPRPSoft/src/siprp/ficha/ExamePDF.java +++ b/trunk/SIPRPSoft/src/siprp/ficha/ExamePDF.java @@ -3,7 +3,9 @@ package siprp.ficha; import java.awt.Color; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.util.HashMap; import siprp.SingletonConstants; @@ -179,8 +181,8 @@ public class ExamePDF implements FichaAptidaoConstants } } - public void printSilent( byte []pdf, String nome, String printerName ) - throws Exception + public void printSilent( byte []pdf, String nome, String printerName ) throws InterruptedException, IOException + // throws Exception { long time = System.currentTimeMillis(); // FileOutputStream fos = new FileOutputStream( System.getProperty( "user.home" ) + System.getProperty( "file.separator" ) + "report_ficha" + time + ".pdf" ); diff --git a/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java b/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java index 6c1ddc6e..027b6a57 100644 --- a/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java +++ b/trunk/SIPRPSoft/src/siprp/ficha/FichaWindow.java @@ -14,12 +14,14 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FilenameFilter; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Hashtable; import java.util.Vector; +import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -35,6 +37,7 @@ import siprp.data.MedicoData; import siprp.data.TrabalhadorData; import siprp.importer.Importer; import siprp.medicina.MarcacoesMedicinaHandler; +import siprp.printer.Printer; import com.evolute.utils.Singleton; import com.evolute.utils.data.IDObject; @@ -220,6 +223,20 @@ public class FichaWindow extends TabbedWindow }, "Apagar Fichas Anteriores", "Apagar Fichas Anteriores", null, 0, false ); + + registerAction( new ActionHandler(){ + public void execute() + { + printToFile(); + } + + public boolean activate( boolean newAction, boolean editAction, + boolean cancelAction, boolean saveAction, + boolean deleteAction, boolean selectAction ) + { + return saveAction || editAction; + } + }, "Exportar", "Exportar para PDF", null, 0, true ); // registerAction( new ActionHandler(){ // public void execute() @@ -560,15 +577,15 @@ public class FichaWindow extends TabbedWindow System.out.println( "no id" ); return; } - print( id ); + print( id, false ); } catch( Exception ex ) { DialogException.showExceptionMessage( ex, "N\u00e3o foi poss\u00edvel imprimir", true ); } } - - private void print( Integer exameID ) + + private void print( Integer exameID, boolean toFile ) throws Exception { // MetaObject exame = fdpProvider.load( fdpProvider.EXAMES, new DBKey( exameID ) ); @@ -578,43 +595,101 @@ public class FichaWindow extends TabbedWindow throw new Exception( "N\u00e3o existe exame" ); } - // lflores - ignore FO (for now) - byte fo[] = null; //(byte []) exame.get( ExameData.FO ); + byte fo[] = (byte []) exame.get( ExameData.FO ); byte pdf[] = (byte []) exame.get( ExameData.PDF ); - if( fo != null ) + if( toFile ) { - FichaAptidaoCreator.getCreator().print( fo ); + TrabalhadorData trabalhadorExame = ( TrabalhadorData ) exame.get( ExameData.TRABALHADOR ); + String fileName = StringPlainer.convertString( ( String ) trabalhadorExame.get( TrabalhadorData.NOME ) ); + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + Date date = new Date(); + fileName = fileName + sdf.format( date ); + fileName = fileName.replace( ' ', '_' ); + JFileChooser dialog = new JFileChooser(); + dialog.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY ); + int result = dialog.showSaveDialog( this ); + if( result == JFileChooser.APPROVE_OPTION ) + { + File selectedFile = dialog.getSelectedFile(); + if( selectedFile != null ) + { + String absolutePath = selectedFile.getAbsolutePath(); + if( absolutePath != null ) + { + if(absolutePath.charAt( absolutePath.length() - 1) != File.separatorChar ) + { + absolutePath = absolutePath + File.separatorChar; + } + fileName = absolutePath + fileName + ".pdf"; + } + + if( fo != null ) + { + Printer.printFoToFile( fo, fileName, true ); + } + else + { + Printer.printPDFToFile( pdf, fileName, true ); + } + } + } } else { - TrabalhadorData trabalhadorExame = ( TrabalhadorData ) exame.get( ExameData.TRABALHADOR ); - String nomeFicheiro = StringPlainer.convertString( ( String ) trabalhadorExame.get( TrabalhadorData.NOME ) ); - nomeFicheiro = nomeFicheiro.replaceAll( " ", "_" ); - ePDF.print( pdf, nomeFicheiro ); - } + if( fo != null ) + { + FichaAptidaoCreator.getCreator().print( fo ); + } + else + { + TrabalhadorData trabalhadorExame = ( TrabalhadorData ) exame.get( ExameData.TRABALHADOR ); + String nomeFicheiro = StringPlainer.convertString( ( String ) trabalhadorExame.get( TrabalhadorData.NOME ) ); + nomeFicheiro = nomeFicheiro.replaceAll( " ", "_" ); + ePDF.print( pdf, nomeFicheiro ); + } + } } - - private void printFO( Integer exameID ) - throws Exception + + private void printToFile() { - // MetaObject exame = fdpProvider.load( fdpProvider.EXAMES, new DBKey( exameID ) ); - ExameData exame = (ExameData) JDO.load( ExameData.class, exameID ); - if( exame == null ) + try { - throw new Exception( "N\u00e3o existe exame" ); + if( trabalhadorID != null ) + { + Integer id = fdpProvider.getLastExameIDForTrabalhador( trabalhadorID ); + if( id != null ) + { + print(id, true); + } + } } - - // lflores - ignore FO (for now) - byte fo[] = (byte []) exame.get( ExameData.FO ); - - if( fo != null ) + catch( Exception ex ) { - byte pdf[] = FichaAptidaoCreator.getCreator().createPDF( fo ); - new PDFFilePrinter( pdf, true ); + DialogException.showExceptionMessage( ex, "N\u00e3o foi poss\u00edvel exportar", true ); } } - + +// private void printFO( Integer exameID ) +// throws Exception +//{ +//// MetaObject exame = fdpProvider.load( fdpProvider.EXAMES, new DBKey( exameID ) ); +// ExameData exame = (ExameData) JDO.load( ExameData.class, exameID ); +// if( exame == null ) +// { +// throw new Exception( "N\u00e3o existe exame" ); +// } +// +// // lflores - ignore FO (for now) +// byte fo[] = (byte []) exame.get( ExameData.FO ); +// +// if( fo != null ) +// { +// byte pdf[] = FichaAptidaoCreator.getCreator().createPDF( fo ); +// new PDFFilePrinter( pdf, true ); +// } +//} + public byte[] createFO( ExameData exame ) throws Exception { @@ -1117,11 +1192,17 @@ public class FichaWindow extends TabbedWindow { if( useFO ) { - printFO( ( ( IDObject )value ).getID() ); + ExameData exame = (ExameData) JDO.load( ExameData.class, ( ( IDObject )value ).getID() ); + if( exame == null ) + { + throw new Exception( "N\u00e3o existe exame" ); + } + byte fo[] = (byte[]) exame.get( ExameData.FO ); + Printer.printFO( fo ); } else { - print( ( ( IDObject )value ).getID() ); + print( ( ( IDObject )value ).getID(), false ); } } catch( Exception ex ) diff --git a/trunk/SIPRPSoft/src/siprp/ficha/TrabalhadorPanel.java b/trunk/SIPRPSoft/src/siprp/ficha/TrabalhadorPanel.java index 649ac03e..25c2d670 100644 --- a/trunk/SIPRPSoft/src/siprp/ficha/TrabalhadorPanel.java +++ b/trunk/SIPRPSoft/src/siprp/ficha/TrabalhadorPanel.java @@ -320,9 +320,6 @@ public class TrabalhadorPanel extends JPanel { trabalhador = ( TrabalhadorData ) JDO.load( TrabalhadorData.class, trabalhadorID ); String names[] = trabalhador.getFieldNames(); - System.out.println(names.length); - System.out.println(trabalhador.getHashData().size()); - System.out.println(components.size()); ComponentController.fill( names, trabalhador.getHashData(), components ); // trabalhador = provider.load( FichaDataProvider.TRABALHADORES, new DBKey( trabalhadorID ) ); // DBField fields[] = FichaDataProvider.TRABALHADORES.getInsertFields(); diff --git a/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java b/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java index 1b21e717..bced3cd4 100644 --- a/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java +++ b/trunk/SIPRPSoft/src/siprp/impressaofichas/FichasPrinter.java @@ -24,6 +24,7 @@ import com.evolute.utils.xml.*; import siprp.data.*; import siprp.ficha.*; +import siprp.printer.Printer; /** * @@ -125,22 +126,41 @@ public class FichasPrinter extends Thread // 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 ) + + if( !printFO( exameID ) && !printPDF( exameID ) ) { 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++ ) + } + + private boolean printFO(int exameID) throws Exception + { + boolean result = false; + byte[] fo = provider.getFO( exameID ); + if(fo != null) { - nomeFicheiro += split[ n ] + "_"; + Printer.printFO( fo ); + result = true; } - ExamePDF ePDF = new ExamePDF(); - ePDF.printSilent( pdf, nomeFicheiro, printerName ); - } + return result; + } + + private boolean printPDF(int exameID) throws Exception + { + boolean result = false; + byte pdf[] = provider.getPDF( exameID ); + if( pdf != null ) + { + String nomeFicheiro = StringPlainer.convertString( provider.getNomeTrabalhadorForExameID( exameID ) ); + String split[] = nomeFicheiro.split( " " ); + nomeFicheiro = ""; + for( int n = 0; n < split.length; n++ ) + { + nomeFicheiro += split[n] + "_"; + } + Printer.printPDF( pdf, nomeFicheiro, printerName ); + result = true; + } + return result; + } }