From 41b3355a35c16076e9d67c1ecdbf88126bb59cb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Flores?= Date: Tue, 15 May 2007 15:54:50 +0000 Subject: [PATCH] no message git-svn-id: https://svn.coded.pt/svn/SIPRP@382 bb69d46d-e84e-40c8-a05a-06db0d633741 --- trunk/siprp/data/Exame.java | 5 + trunk/siprp/data/ExameData.java | 5 +- trunk/siprp/data/package.jdo | 6 + trunk/siprp/ficha/ExamePDF.java | 18 +-- trunk/siprp/ficha/FichaAptidaoCreator.java | 103 +++++++++++++++ trunk/siprp/ficha/FichaWindow.java | 145 +++++++++++++-------- 6 files changed, 216 insertions(+), 66 deletions(-) create mode 100644 trunk/siprp/ficha/FichaAptidaoCreator.java diff --git a/trunk/siprp/data/Exame.java b/trunk/siprp/data/Exame.java index b00c1146..1b717bfb 100644 --- a/trunk/siprp/data/Exame.java +++ b/trunk/siprp/data/Exame.java @@ -27,6 +27,7 @@ public final class Exame implements JDOInnerObject private Trabalhador trabalhador; private Medico medico; private byte[] pdf; + private byte[] fo; private String inactivo; public Exame() @@ -95,6 +96,10 @@ public final class Exame implements JDOInnerObject { return pdf; } + else if( fieldName == ExameData.FO ) + { + return fo; + } else if( fieldName == ExameData.INACTIVO ) { return inactivo; diff --git a/trunk/siprp/data/ExameData.java b/trunk/siprp/data/ExameData.java index 2ad3f40f..ffc17877 100644 --- a/trunk/siprp/data/ExameData.java +++ b/trunk/siprp/data/ExameData.java @@ -28,18 +28,19 @@ public final class ExameData extends JDOObject public static final String TRABALHADOR = "trabalhador"; public static final String MEDICO = "medico"; public static final String PDF = "pdf"; + public static final String FO = "fo"; public static final String INACTIVO = "inactivo"; public static final String FIELD_NAMES[] = new String[]{ DATA, TIPO, OCASIONAL, OUTRO_TIPO, RESULTADO, OUTRA_FUNCAO_1, OUTRA_FUNCAO_2, OUTRA_FUNCAO_3, OUTRA_FUNCAO_4, PROXIMO_EXAME, OUTRAS_RECOMENDACOES, - TRABALHADOR, MEDICO, PDF, }; + TRABALHADOR, MEDICO, PDF, FO, }; protected static final String ALL_FIELD_NAMES[] = new String[]{ ID, DATA, TIPO, OCASIONAL, OUTRO_TIPO, RESULTADO, OUTRA_FUNCAO_1, OUTRA_FUNCAO_2, OUTRA_FUNCAO_3, OUTRA_FUNCAO_4, PROXIMO_EXAME, OUTRAS_RECOMENDACOES, - TRABALHADOR, MEDICO, PDF, INACTIVO, }; + TRABALHADOR, MEDICO, PDF, FO, INACTIVO, }; private HashMap dataHash; diff --git a/trunk/siprp/data/package.jdo b/trunk/siprp/data/package.jdo index 5ef176e2..6911c812 100644 --- a/trunk/siprp/data/package.jdo +++ b/trunk/siprp/data/package.jdo @@ -1035,6 +1035,12 @@ + + + + + + diff --git a/trunk/siprp/ficha/ExamePDF.java b/trunk/siprp/ficha/ExamePDF.java index c2ea0993..9b8f22b3 100644 --- a/trunk/siprp/ficha/ExamePDF.java +++ b/trunk/siprp/ficha/ExamePDF.java @@ -56,7 +56,7 @@ public class ExamePDF { { try { - Hashtable ht = new Hashtable(); + HashMap ht = new HashMap(); // designacao_social // estabelecimentos.nome // estabelecimentos.localidade @@ -107,9 +107,9 @@ public class ExamePDF { ht.put( "trabalhadores.nome", "Trabalhador do com\u00e9rcio" ); ht.put( "servico_saude_designacao", "Designacao servico saude" ); - ht.put( "servico_saude_tipo_externo", Boolean.TRUE ); - ht.put( "tipo_periodico", Boolean.TRUE ); - ht.put( "resultado_inapto_temp", Boolean.TRUE ); + ht.put( "servico_saude_tipo_externo", "" + Boolean.TRUE ); + ht.put( "tipo_periodico", "" + Boolean.TRUE ); + ht.put( "resultado_inapto_temp", "" + Boolean.TRUE ); FileOutputStream fos = new FileOutputStream( System.getProperty( "user.home" ) + "\\report.pdf" ); fos.write( new ExamePDF().createPDF( ht ) ); fos.close(); @@ -133,7 +133,7 @@ public class ExamePDF { FileOutputStream fos = new FileOutputStream( System.getProperty( "user.home" ) + System.getProperty( "file.separator" ) + nome + "_" + time + ".pdf" ); fos.write( pdf ); fos.close(); - System.out.println( "File saved." ); + System.out.println( "File saved ( " + nome + "_" + time + " )." ); Process proc; if( System.getProperty( "os.name" ).startsWith( "Windows" ) ) { @@ -174,7 +174,7 @@ public class ExamePDF { fos.write( pdf ); fos.close(); - System.out.println( "File saved." ); + System.out.println( "File saved ( " + nome + "_" + time + " )." ); //System.out.println("cmd /c \"c:\\temp\\acrord32.lnk /t \"c:" + System.getProperty( "file.separator" ) + "temp" + System.getProperty( "file.separator" ) + nome + "_" + time + ".pdf\" \"" + printerName + "\"\""); // proc = Runtime.getRuntime().exec( new String[]{ System.getProperty( "user.home" ) + "\\print.bat", // System.getProperty( "user.home" ) + "\\print_fichas_temp\\" + nome + "_" + time + ".pdf", @@ -188,6 +188,7 @@ public class ExamePDF { // System.err.println( "File: " + nome + "_" + ".pdf - NOT DELETED" ); // } } + } public void cleanSilentPrint() @@ -198,7 +199,7 @@ public class ExamePDF { proc.waitFor(); } - public byte[] createPDF( Hashtable values ) + public byte[] createPDF( HashMap values ) { Document document = new Document(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -233,8 +234,7 @@ public class ExamePDF { table.setOffset( 0 ); table.setWidth( 100 ); - table.addCell( new Phrase( "Empresa/Entidade", - FONT_BOLD ) ); + table.addCell( new Phrase( "Empresa/Entidade", FONT_BOLD ) ); StringBuffer texto = new StringBuffer(); Phrase ph = new Phrase( 12f ); diff --git a/trunk/siprp/ficha/FichaAptidaoCreator.java b/trunk/siprp/ficha/FichaAptidaoCreator.java new file mode 100644 index 00000000..61a7c8be --- /dev/null +++ b/trunk/siprp/ficha/FichaAptidaoCreator.java @@ -0,0 +1,103 @@ +/* + * FichaAptidaoCreator.java + * + * Created on May 14, 2007, 4:50 PM + * + * To change this template, choose Tools | Template Manager + * and open the template in the editor. + */ + +package siprp.ficha; + +import com.evolute.utils.UnicodeChecker; +import com.evolute.utils.fop.FOPCreator; +import com.evolute.utils.fop.FOPPrinter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.util.HashMap; + +/** + * + * @author lflores + */ +public class FichaAptidaoCreator implements FichaAptidaoConstants +{ + private final FOPCreator fopCreator; + private final FOPPrinter fopPrinter; + + private static FichaAptidaoCreator creator = null; + + /** Creates a new instance of FichaAptidaoCreator */ + private FichaAptidaoCreator() + { + fopCreator = FOPCreator.getFOPCreator(); + fopPrinter = FOPPrinter.getFOPPrinter(); + } + + public static FichaAptidaoCreator getCreator() + { + if( creator == null ) + { + creator = new FichaAptidaoCreator(); + } + return creator; + } + + public void print( byte fo[] ) + throws Exception + { + ByteArrayInputStream in = new ByteArrayInputStream( fo ); + fopPrinter.printFO( in, true, true, null ); +// System.out.println( "DONE" ); + } + + public void printSilent( byte fo[], String printerName ) + throws Exception + { + ByteArrayInputStream in = new ByteArrayInputStream( fo ); + fopPrinter.printFO( in, true, false, null ); + } + + public byte[] createFO( HashMap values ) + { + StringBuilder buff = new StringBuilder( "\n\n" ); + + values.put( PORTARIA, "Portaria n. 299/2007, de 16 de Março" ); + +// ☐ square +// ☑ checked square + + for( String key: values.keySet() ) + { + buff.append( "\t<" + key + ">" ); + String val = values.get( key ); + buff.append( UnicodeChecker.parseToUnicode( "&#x", ";", val, true ) ); + buff.append( "\n" ); + } + buff.append( "" ); + String xml = buff.toString(); + + System.out.println( "XML: " + xml ); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + InputStream xmlIn = new ByteArrayInputStream( xml.getBytes() ); + try + { + InputStream xslStream = getClass().getClassLoader().getResourceAsStream( "siprp/ficha/ficha_aptidao.xsl" ); + fopCreator.createFOfromXML( xmlIn, xslStream, out ); + // System.out.println( "FO created" ); + } + catch( Exception ex ) + { + ex.printStackTrace(); + } + + return out.toByteArray(); + } + + public byte[] createPDF( String fo ) + { + return null; + } +} diff --git a/trunk/siprp/ficha/FichaWindow.java b/trunk/siprp/ficha/FichaWindow.java index c7c00af8..e59eb937 100644 --- a/trunk/siprp/ficha/FichaWindow.java +++ b/trunk/siprp/ficha/FichaWindow.java @@ -33,7 +33,7 @@ import com.evolute.utils.ui.window.*; * @author fpalma */ public class FichaWindow extends TabbedWindow - implements ListAction + implements ListAction, FichaAptidaoConstants { private JDOProvider JDO; @@ -49,6 +49,8 @@ public class FichaWindow extends TabbedWindow private Integer estabelecimentoID; private Integer trabalhadorID; + private final ExamePDF ePDF = new ExamePDF(); + private static int permissions[][] = new int[][]{ { NEW_INDEX, CANCEL_INDEX, SAVE_INDEX } }; @@ -481,16 +483,23 @@ public class FichaWindow extends TabbedWindow { // MetaObject exame = fdpProvider.load( fdpProvider.EXAMES, new DBKey( exameID ) ); ExameData exame = (ExameData) JDO.load( ExameData.class, exameID ); - byte pdf[] = (byte []) exame.get( ExameData.PDF ); if( exame == null ) { throw new Exception( "N\u00e3o existe exame" ); } + byte fo[] = (byte []) exame.get( ExameData.FO ); + byte pdf[] = (byte []) exame.get( ExameData.PDF ); TrabalhadorData trabalhadorExame = ( TrabalhadorData ) exame.get( ExameData.TRABALHADOR ); String nomeFicheiro = StringPlainer.convertString( ( String ) trabalhadorExame.get( TrabalhadorData.NOME ) ); nomeFicheiro.replaceAll( " ", "_" ); - ExamePDF ePDF = new ExamePDF(); - ePDF.print( pdf, nomeFicheiro ); + if( fo != null ) + { + FichaAptidaoCreator.getCreator().print( pdf ); + } + else + { + ePDF.print( pdf, nomeFicheiro ); + } } public byte[] createPDF( ExameData exame ) @@ -501,112 +510,131 @@ public class FichaWindow extends TabbedWindow EstabelecimentoData estabelecimento = (EstabelecimentoData) trabalhador.get( TrabalhadorData.ESTABELECIMENTO ); EmpresaData empresa = (EmpresaData) estabelecimento.get( EstabelecimentoData.EMPRESA ); // empresa.load( empresa.getPrimaryKeyValue() ); - Hashtable ht = new Hashtable(); - ht.put( "designacao_social", empresa.get( EmpresaData.DESIGNACAO_SOCIAL ) ); - ht.put( "estabelecimentos.nome", estabelecimento.get( EstabelecimentoData.NOME ) ); + HashMap ht = new HashMap(); + ht.put( DESIGNACAO_SOCIAL, ( String )empresa.get( EmpresaData.DESIGNACAO_SOCIAL ) ); + ht.put( ESTABELECIMENTOS_NOME, ( String )estabelecimento.get( EstabelecimentoData.NOME ) ); String aux = (String)estabelecimento.get( EstabelecimentoData.LOCALIDADE ); - ht.put( "estabelecimentos.localidade", aux != null ? aux : "" ); + ht.put( ESTABELECIMENTOS_LOCALIDADE, aux != null ? aux : "" ); Integer tipo = (Integer)empresa.get( EmpresaData.SERVICO_SAUDE_TIPO ); + ht.put( SERVICO_SAUDE_TIPO_INTERNO, "☐" ); + ht.put( SERVICO_SAUDE_TIPO_INTEREMPRESAS, "☐" ); + ht.put( SERVICO_SAUDE_TIPO_EXTERNO, "☐" ); + ht.put( SERVICO_SAUDE_TIPO_SNS, "☐" ); switch( tipo.intValue() ) { case 1: - ht.put( "servico_saude_tipo_interno", "" ); + ht.put( SERVICO_SAUDE_TIPO_INTERNO, "v" ); break; case 2: - ht.put( "servico_saude_tipo_interempresas", "" ); + ht.put( SERVICO_SAUDE_TIPO_INTEREMPRESAS, "v" ); break; case 3: - ht.put( "servico_saude_tipo_externo", "" ); + ht.put( SERVICO_SAUDE_TIPO_EXTERNO, "v" ); break; case 4: - ht.put( "servico_saude_tipo_sns", "" ); + ht.put( SERVICO_SAUDE_TIPO_SNS, "v" ); break; } - ht.put( "servico_saude_designacao", empresa.get( EmpresaData.SERVICO_SAUDE_DESIGNACAO ) ); + ht.put( SERVICO_SAUDE_DESIGNACAO, ( String )empresa.get( EmpresaData.SERVICO_SAUDE_DESIGNACAO ) ); tipo = (Integer)empresa.get( EmpresaData.SERVICO_HIGIENE_TIPO ); + ht.put( SERVICO_HIGIENE_TIPO_INTERNO, "☐" ); + ht.put( SERVICO_HIGIENE_TIPO_INTEREMPRESAS, "☐" ); + ht.put( SERVICO_HIGIENE_TIPO_EXTERNO, "☐" ); + ht.put( SERVICO_HIGIENE_TIPO_OUTRO, "☐" ); switch( tipo.intValue() ) { case 1: - ht.put( "servico_higiene_tipo_interno", "" ); + ht.put( SERVICO_HIGIENE_TIPO_INTERNO, "v" ); break; case 2: - ht.put( "servico_higiene_tipo_interempresas", "" ); + ht.put( SERVICO_HIGIENE_TIPO_INTEREMPRESAS, "v" ); break; case 3: - ht.put( "servico_higiene_tipo_externo", "" ); + ht.put( SERVICO_HIGIENE_TIPO_EXTERNO, "v" ); break; case 4: - ht.put( "servico_higiene_outro", "" ); + ht.put( SERVICO_HIGIENE_TIPO_OUTRO, "v" ); break; } - ht.put( "servico_higiene_designacao", empresa.get( EmpresaData.SERVICO_HIGIENE_DESIGNACAO ) ); - ht.put( "trabalhadores.nome", trabalhador.get( TrabalhadorData.NOME ) ); + ht.put( SERVICO_HIGIENE_DESIGNACAO, ( String )empresa.get( EmpresaData.SERVICO_HIGIENE_DESIGNACAO ) ); + ht.put( TRABALHADORES_NOME, ( String )trabalhador.get( TrabalhadorData.NOME ) ); aux = (String)trabalhador.get( TrabalhadorData.SEXO ); switch( aux.charAt( 0 ) ) { case 'm': - ht.put( "sexo", "Masculino" ); + ht.put( SEXO, "Masculino" ); break; case 'f': - ht.put( "sexo", "Feminino" ); + ht.put( SEXO, "Feminino" ); break; } DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT ); Date data = ( Date )trabalhador.get( TrabalhadorData.DATA_NASCIMENTO ); - ht.put( "data_nascimento", data != null ? df.format( data ) : "" ); + ht.put( DATA_NASCIMENTO, data != null ? df.format( data ) : "" ); aux = (String)trabalhador.get( TrabalhadorData.NACIONALIDADE ); - ht.put( "nacionalidade", aux != null ? aux : "" ); + ht.put( NACIONALIDADE, aux != null ? aux : "" ); aux = (String)trabalhador.get( TrabalhadorData.NUMERO_MECANOGRAFICO ); - ht.put( "numero_mecanografico", aux != null ? aux : "" ); + ht.put( NUMERO_MECANOGRAFICO, aux != null ? aux : "" ); data = ( Date )trabalhador.get( TrabalhadorData.DATA_ADMISSAO ); - ht.put( "data_admissao", data != null ? df.format( data ) : "" ); + ht.put( DATA_ADMISSAO, data != null ? df.format( data ) : "" ); aux = (String)trabalhador.get( TrabalhadorData.CATEGORIA ); - ht.put( "categoria", aux != null ? aux : "" ); + ht.put( CATEGORIA, aux != null ? aux : "" ); aux = (String)trabalhador.get( TrabalhadorData.LOCAL_TRABALHO ); - ht.put( "local_trabalho", aux != null ? aux : "" ); + ht.put( LOCAL_TRABALHO, aux != null ? aux : "" ); aux = (String)trabalhador.get( TrabalhadorData.FUNCAO_PROPOSTA ); - ht.put( "funcao_proposta", aux != null ? aux : "" ); + ht.put( FUNCAO_PROPOSTA, aux != null ? aux : "" ); data = ( Date )trabalhador.get( TrabalhadorData.DATA_ADMISSAO_FUNCAO ); - ht.put( "data_admissao_funcao", data != null ? df.format( data ) : "" ); + ht.put( DATA_ADMISSAO_FUNCAO, data != null ? df.format( data ) : "" ); aux = (String)trabalhador.get( TrabalhadorData.OBSERVACOES ); - ht.put( "observacoes", aux != null ? aux : "" ); + ht.put( OBSERVACOES, aux != null ? aux : "" ); data = ( Date )exame.get( ExameData.DATA ); - ht.put( "exames.data", data != null ? df.format( data ) : "" ); + ht.put( EXAMES_DATA, data != null ? df.format( data ) : "" ); tipo = (Integer)exame.get( ExameData.TIPO ); + ht.put( TIPO_ADMISSAO, "☐" ); + ht.put( TIPO_PERIODICO, "☐" ); + ht.put( TIPO_OCASIONAL, "☐" ); switch( tipo.intValue() ) { case 1: - ht.put( "tipo_admissao", "" ); + ht.put( TIPO_ADMISSAO, "v" ); break; case 2: - ht.put( "tipo_periodico", "" ); + ht.put( TIPO_PERIODICO, "v" ); break; case 3: - ht.put( "tipo_ocasional", "" ); + ht.put( TIPO_OCASIONAL, "v" ); tipo = (Integer)exame.get( ExameData.OCASIONAL ); + ht.put( TIPO_APOS_DOENCA, "☐" ); + ht.put( TIPO_APOS_ACIDENTE, "☐" ); + ht.put( TIPO_PEDIDO_TRABALHADOR, "☐" ); + ht.put( TIPO_PEDIDO_EMPRESA, "☐" ); + ht.put( TIPO_MUDANCA_FUNCAO, "☐" ); + ht.put( TIPO_TRABALHO, "☐" ); + ht.put( TIPO_OUTRO, "☐" ); switch( tipo.intValue() ) { case 1: - ht.put( "tipo_apos_doenca", "" ); + ht.put( TIPO_APOS_DOENCA, "v" ); break; case 2: - ht.put( "tipo_apos_acidente", "" ); + ht.put( TIPO_APOS_ACIDENTE, "v" ); break; case 3: - ht.put( "tipo_pedido_trabalhador", "" ); + ht.put( TIPO_PEDIDO_TRABALHADOR, "v" ); break; case 4: - ht.put( "tipo_pedido_empresa", "" ); + ht.put( TIPO_PEDIDO_EMPRESA, "v" ); break; case 5: - ht.put( "tipo_mudanca_funcao", "" ); + ht.put( TIPO_MUDANCA_FUNCAO, "v" ); break; case 6: - ht.put( "tipo_trabalho", "" ); + ht.put( TIPO_TRABALHO, "v" ); break; case 10: aux = (String)exame.get( ExameData.OUTRO_TIPO ); - ht.put( "tipo_outro", aux != null ? aux : "" ); + ht.put( TIPO_OUTRO, "v" ); + ht.put( TIPO_OUTRO_TEXTO, aux != null ? aux : "" ); break; } break; @@ -616,39 +644,46 @@ public class FichaWindow extends TabbedWindow // break; } tipo = (Integer)exame.get( ExameData.RESULTADO ); + ht.put( RESULTADO_APTO, "☐" ); + ht.put( RESULTADO_APTO_CONDICIONALMENTE, "☐" ); + ht.put( RESULTADO_INAPTO_TEMP, "☐" ); + ht.put( RESULTADO_INAPTO_DEF, "☐" ); switch( tipo.intValue() ) { case 1: - ht.put( "resultado_apto", "" ); + ht.put( RESULTADO_APTO, "v" ); break; case 2: - ht.put( "resultado_apto_condicionalmente", "" ); + ht.put( RESULTADO_APTO_CONDICIONALMENTE, "v" ); break; case 3: - ht.put( "resultado_inapto_temp", "" ); + ht.put( RESULTADO_INAPTO_TEMP, "v" ); break; case 4: - ht.put( "resultado_inapto_def", "" ); + ht.put( RESULTADO_INAPTO_DEF, "v" ); break; } aux = (String)exame.get( ExameData.OUTRA_FUNCAO_1 ); - ht.put( "outra_funcao_1", aux != null ? aux : "" ); + ht.put( OUTRA_FUNCAO_1, aux != null ? aux : "" ); aux = (String)exame.get( ExameData.OUTRA_FUNCAO_2 ); - ht.put( "outra_funcao_2", aux != null ? aux : "" ); + ht.put( OUTRA_FUNCAO_2, aux != null ? aux : "" ); aux = (String)exame.get( ExameData.OUTRA_FUNCAO_3 ); - ht.put( "outra_funcao_3", aux != null ? aux : "" ); + ht.put( OUTRA_FUNCAO_3, aux != null ? aux : "" ); aux = (String)exame.get( ExameData.OUTRA_FUNCAO_4 ); - ht.put( "outra_funcao_4", aux != null ? aux : "" ); + ht.put( OUTRA_FUNCAO_4, aux != null ? aux : "" ); aux = (String)exame.get( ExameData.OUTRAS_RECOMENDACOES ); - ht.put( "outras_recomendacoes", aux != null ? aux : "" ); + ht.put( OUTRAS_RECOMENDACOES, aux != null ? aux : "" ); data = ( Date )exame.get( ExameData.PROXIMO_EXAME ); - ht.put( "proximo_exame", data != null ? df.format( data ) : "n/d" ); + ht.put( PROXIMO_EXAME, data != null ? df.format( data ) : "n/d" ); aux = (String)medico.get( MedicoData.NOME ); - ht.put( "medicos.nome", aux != null ? aux : "" ); + ht.put( MEDICOS_NOME, aux != null ? aux : "" ); aux = (String)medico.get( MedicoData.NUMERO_CEDULA ); - ht.put( "numero_cedula", aux != null ? aux : "" ); - ExamePDF ePDF = new ExamePDF(); - return ePDF.createPDF( ht ); + ht.put( NUMERO_CEDULA, aux != null ? aux : "" ); +// ExamePDF ePDF = new ExamePDF(); +// return ePDF.createPDF( ht ); + + return FichaAptidaoCreator.getCreator().createFO( ht ); + } private void excel()