/*
* EstatisticaWindow.java
*
* Created on 16 de Dezembro de 2004, 13:50
*/
package siprp.estatistica;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import java.text.*;
import java.util.*;
import com.evolute.utils.*;
import com.evolute.utils.data.*;
import com.evolute.utils.documents.*;
import com.evolute.utils.jdo.*;
import com.evolute.utils.tables.*;
import com.evolute.utils.tracker.*;
import com.evolute.utils.ui.*;
import com.evolute.utils.ui.text.*;
import siprp.data.*;
import siprp.pesquisas.*;
/**
*
* @author fpalma
*/
public class EstatisticaWindow extends JFrame
implements TrackableWindow, ListSelectionListener, ActionListener, ItemListener
{
public static final DateFormat DF = DateFormat.getDateInstance( DateFormat.SHORT );
public static final int NONE = 0;
public static final int LISTAGEM_GERAL_MARCACOES_PERIODO = 1;
public static final int LISTAGEM_MARCACOES_PERIODO_EMPRESA_ESTABELECIMENTO = 2;
public static final int LISTAGEM_GLOBAL_TRABALHADORES_SEM_EXAMES = 3;
public static final int LISTAGEM_TRABALHADORES_SEM_EXAMES_EMPRESA_ESTABELECIMENTO = 4;
public static final int LISTAGEM_GLOBAL_TRABALHADORES_COM_EXAMES_PERIODO = 5;
public static final int LISTAGEM_TRABALHADORES_COM_EXAMES_PERIODO_EMPRESA_ESTABELECIMENTO = 6;
public static final int LISTAGEM_GLOBAL_TRABALHADORES_SEM_CONSULTA = 7;
public static final int LISTAGEM_TRABALHADORES_SEM_CONSULTA_EMPRESA_ESTABELECIMENTO = 8;
public static final int LISTAGEM_GLOBAL_TRABALHADORES_COM_CONSULTA_PERIODO = 9;
public static final int LISTAGEM_TRABALHADORES_COM_CONSULTA_PERIODO_EMPRESA_ESTABELECIMENTO = 10;
public static final int LISTAGEM_GLOBAL_TRABALHADORES_PERIODO = -1;
public static final int LISTAGEM_GLOBAL_HIGIENE_SEGURANCA = 11;
public static final String ESTATISTICAS[] =
new String[]{ "",
"Marca\u00e7\u00f5es efectuadas e pendentes (geral)",
"Marca\u00e7\u00f5es efectuadas e pendentes (por Empresa e Estabelecimento)",
"Contagem global de trabalhadores que ainda n\u00e3o realizaram exames (por per\u00edodo)",
"Listagem de trabalhadores que ainda n\u00e3o realizaram exames (por per\u00edodo, Empresa e Estabelecimento)",
"Contagem global de trabalhadores que j\u00e1 realizaram exames (por per\u00edodo)",
"Listagem de trabalhadores que j\u00e1 realizaram exames (por per\u00edodo, Empresa e Estabelecimento)",
"Contagem global de trabalhadores que ainda n\u00e3o realizaram consultas (por per\u00edodo)",
"Listagem de trabalhadores que ainda n\u00e3o realizaram consultas (por per\u00edodo, Empresa e Estabelecimento)",
"Contagem global de trabalhadores que j\u00e1 realizaram consultas (por per\u00edodo)",
"Listagem de trabalhadores que j\u00e1 realizaram consultas (por per\u00edodo, Empresa e Estabelecimento)",
//"Listagem global de trabalhadores (por per\u00edodo)",
"Listagem global com os dados de higiene e seguran\u00e7a" };
public static final int OPTION_INTERVALO = 0;
public static final int OPTION_ANO = 1;
public static final int OPTION_EMPRESA = 2;
public static final int OPTION_ESTABELECIMENTO = 0;
public static final boolean ESTATISTICAS_OPTIONS[][] =
// intervalo, ano, empresa, estabelecimento
new boolean[][]{ { false, false, false, false },
{ true, false, false, false },
{ true, false, true, true },
{ true, false, false, false },
{ true, false, true, true },
{ true, false, false, false },
{ true, false, true, true },
{ true, false, false, false },
{ true, false, true, true },
{ true, false, false, false },
{ true, false, true, true },
// { true, false, false, false },
{ false, false, false, false } };
private JDOProvider JDO;
private EstatisticaDataProvider provider;
private PesquisasProvider pesquisasProvider;
private JComboBox estatisticaCombo;
private JCalendarPanel dataInicioPanel;
private JCalendarPanel dataFimPanel;
private JTextField anoText;
private BaseTable empresasTable;
private VectorTableModel empresasModel;
private BaseTable estabelecimentosTable;
private VectorTableModel estabelecimentosModel;
private JButton pesquisarButton;
private JButton excelButton;
private JEditorPane resultadoText;
/** Creates a new instance of EstatisticaWindow */
public EstatisticaWindow()
throws Exception
{
provider = (EstatisticaDataProvider)EstatisticaDataProvider.getProvider();
pesquisasProvider = (PesquisasProvider)PesquisasProvider.getProvider();
JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
setupComponents();
}
private void setupComponents()
{
setSize( 1000, 700 );
setTitle( "Listagens" );
JLabel estatisticaLabel = new JLabel( "Listagem" );
estatisticaCombo = new JComboBox();
for( int n = 0; n < ESTATISTICAS.length; n++ )
{
estatisticaCombo.addItem( ESTATISTICAS[ n ] );
}
estatisticaCombo.setSelectedIndex( 0 );
estatisticaCombo.addItemListener( this );
estatisticaCombo.setPreferredSize( new Dimension( 700, 20 ) );
JLabel intervalo1Label = new JLabel( "De" );
JLabel intervalo2Label = new JLabel( "a" );
dataInicioPanel = new JCalendarPanel( null );
dataInicioPanel.setPreferredSize( new Dimension( 200, 20 ) );
dataFimPanel = new JCalendarPanel( null );
dataFimPanel.setPreferredSize( new Dimension( 200, 20 ) );
JLabel anoLabel = new JLabel( "Ano" );
anoText = new JTextField();
anoText.setDocument( new YearDocument() );
anoText.setPreferredSize( new Dimension( 50, 20 ) );
new CopyPasteHandler( anoText );
empresasModel = new VectorTableModel( new String[]{ "Designa\u00e7\u00e3o Social" } );
empresasTable = new BaseTable( empresasModel );
empresasTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
empresasTable.setNonResizableNorReordable();
empresasTable.getSelectionModel().addListSelectionListener( this );
JScrollPane empresasScroll = new JScrollPane();
empresasScroll.setBorder( BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(), "Empresa" ) );
empresasScroll.setViewportView( empresasTable );
empresasScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
empresasScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
empresasScroll.getVerticalScrollBar().setBlockIncrement(20);
estabelecimentosModel = new VectorTableModel( new String[]{ "Nome" } );
estabelecimentosTable = new BaseTable( estabelecimentosModel );
estabelecimentosTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
estabelecimentosTable.setNonResizableNorReordable();
estabelecimentosTable.getSelectionModel().addListSelectionListener( this );
JScrollPane estabelecimentosScroll = new JScrollPane();
estabelecimentosScroll.setBorder( BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(), "Estabelecimento" ) );
estabelecimentosScroll.setViewportView( estabelecimentosTable );
estabelecimentosScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
estabelecimentosScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
pesquisarButton = new JButton( "Pesquisar" );
pesquisarButton.addActionListener( this );
excelButton = new JButton( "Exportar" );
excelButton.addActionListener( this );
resultadoText = new JEditorPane( "text/html", "" );
resultadoText.setEditable( false );
// resultadoText.setLineWrap( true );
// resultadoText.setWrapStyleWord( true );
new CopyPasteHandler( resultadoText );
JScrollPane resultadoScroll = new JScrollPane();
resultadoScroll.setViewportView( resultadoText );
resultadoScroll.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
resultadoScroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
JPanel pad;
GridBagLayout gridbag = new GridBagLayout();
getContentPane().setLayout( gridbag );
GridBagConstraints constraints = new GridBagConstraints();
constraints.insets = new Insets( 5, 5, 5, 5 );
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
JPanel escolhaEstatisticaPanel = new JPanel();
escolhaEstatisticaPanel.setLayout( new FlowLayout( FlowLayout.LEFT ) );
escolhaEstatisticaPanel.add( estatisticaLabel );
escolhaEstatisticaPanel.add( estatisticaCombo );
gridbag.setConstraints( escolhaEstatisticaPanel, constraints );
getContentPane().add( escolhaEstatisticaPanel );
JPanel periodoPanel = new JPanel();
periodoPanel.setLayout( new FlowLayout( FlowLayout.LEFT ) );
periodoPanel.add( intervalo1Label );
periodoPanel.add( dataInicioPanel );
periodoPanel.add( intervalo2Label );
periodoPanel.add( dataFimPanel );
gridbag.setConstraints( periodoPanel, constraints );
getContentPane().add( periodoPanel );
JPanel anoPanel = new JPanel();
anoPanel.setLayout( new FlowLayout( FlowLayout.LEFT ) );
anoPanel.add( anoLabel );
anoPanel.add( anoText );
gridbag.setConstraints( anoPanel, constraints );
getContentPane().add( anoPanel );
constraints.fill = GridBagConstraints.BOTH;
constraints.weighty = 0.2;
constraints.gridheight = 2;
constraints.weightx = 0.3;
constraints.gridwidth = 3;
gridbag.setConstraints( empresasScroll, constraints );
getContentPane().add( empresasScroll );
gridbag.setConstraints( estabelecimentosScroll, constraints );
getContentPane().add( estabelecimentosScroll );
constraints.weighty = 0;
constraints.gridheight = 1;
constraints.weightx = 0.4;
constraints.gridwidth = GridBagConstraints.REMAINDER;
pad = new JPanel();
gridbag.setConstraints( pad, constraints );
getContentPane().add( pad );
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0;
constraints.gridheight = 1;
constraints.weightx = 0;
constraints.gridwidth = 1;
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout( new GridLayout( 1, 1 ) );
buttonPanel.add( pesquisarButton );
buttonPanel.add( excelButton );
gridbag.setConstraints( buttonPanel, constraints );
getContentPane().add( buttonPanel );
constraints.weighty = 0;
constraints.gridheight = 1;
constraints.weightx = 0.4;
constraints.gridwidth = GridBagConstraints.REMAINDER;
pad = new JPanel();
gridbag.setConstraints( pad, constraints );
getContentPane().add( pad );
constraints.fill = GridBagConstraints.BOTH;
constraints.weighty = 0.8;
constraints.gridheight = GridBagConstraints.REMAINDER;
constraints.weightx = 1;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints( resultadoScroll, constraints );
getContentPane().add( resultadoScroll );
processarEscolha();
}
public void actionPerformed(java.awt.event.ActionEvent e)
{
Object source = e.getSource();
if( source.equals( pesquisarButton ) )
{
int index = estatisticaCombo.getSelectedIndex();
switch( index )
{
case LISTAGEM_GERAL_MARCACOES_PERIODO:
listagemGeralMarcacoesPeriodo();
break;
case LISTAGEM_MARCACOES_PERIODO_EMPRESA_ESTABELECIMENTO:
listagemMarcacoesPeriodoEmpresaEstabelecimento();
break;
case LISTAGEM_GLOBAL_TRABALHADORES_SEM_EXAMES:
listagemGeralTrabalhadoresSemExamesOuConsultas( true );
break;
case LISTAGEM_TRABALHADORES_SEM_EXAMES_EMPRESA_ESTABELECIMENTO:
listagemTrabalhadoresSemExamesOuConsultasEmpresaEstabelecimento( true );
break;
case LISTAGEM_GLOBAL_TRABALHADORES_COM_EXAMES_PERIODO:
listagemGeralTrabalhadoresComExamesOuConsultasPeriodo( true );
break;
case LISTAGEM_TRABALHADORES_COM_EXAMES_PERIODO_EMPRESA_ESTABELECIMENTO:
listagemGeralTrabalhadoresComExamesOuConsultasPeriodoEmpresaEstabelecimento( true );
break;
case LISTAGEM_GLOBAL_TRABALHADORES_SEM_CONSULTA:
listagemGeralTrabalhadoresSemExamesOuConsultas( false );
break;
case LISTAGEM_TRABALHADORES_SEM_CONSULTA_EMPRESA_ESTABELECIMENTO:
listagemTrabalhadoresSemExamesOuConsultasEmpresaEstabelecimento( false );
break;
case LISTAGEM_GLOBAL_TRABALHADORES_COM_CONSULTA_PERIODO:
listagemGeralTrabalhadoresComExamesOuConsultasPeriodo( false );
break;
case LISTAGEM_TRABALHADORES_COM_CONSULTA_PERIODO_EMPRESA_ESTABELECIMENTO:
listagemGeralTrabalhadoresComExamesOuConsultasPeriodoEmpresaEstabelecimento( false );
break;
case LISTAGEM_GLOBAL_TRABALHADORES_PERIODO:
listagemGeralTrabalhadoresPeriodo();
break;
case LISTAGEM_GLOBAL_HIGIENE_SEGURANCA:
listagemGlobalHigieneSeguranca();
break;
}
}
else if( source.equals( excelButton ) )
{
exportar();
}
}
private boolean close()
{
setVisible( false );
dispose();
return true;
}
public boolean closeIfPossible()
{
return close();
}
public void open()
{
empresasTable.clearSelection();
estatisticaCombo.setSelectedIndex( 0 );
try
{
IDObject empresas[] = pesquisasProvider.getAllEmpresas();
empresasModel.setValues( new Vector( Arrays.asList( empresas ) ) );
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro a carregar dados", true );
}
setVisible( true );
}
public void refresh()
{
setVisible( true );
}
public void valueChanged(javax.swing.event.ListSelectionEvent e)
{
Object source = e.getSource();
if( source.equals( empresasTable.getSelectionModel() ) )
{
estabelecimentosTable.clearSelection();
int selected = empresasTable.getSelectedRow();
if( selected == -1 )
{
return;
}
IDObject empresa = (IDObject) empresasModel.getRowAt( selected );
estabelecimentosModel.clearAll();
IDObject estabelecimentos[];
try
{
estabelecimentos = pesquisasProvider.getAllEstabelecimentosForEmpresa( empresa.getID() );
}
catch( Exception ex )
{
DialogException.showExceptionMessage( ex, "Erro a carregar os estabelecimentos", true );
return;
}
Vector v = new Vector( Arrays.asList( estabelecimentos ) );
v.add( new MappableObject( new Integer( -1 ), "TODOS" ) );
estabelecimentosModel.setValues( v );
}
}
public void itemStateChanged(java.awt.event.ItemEvent itemEvent)
{
processarEscolha();
}
protected void processarEscolha()
{
int index = estatisticaCombo.getSelectedIndex();
boolean optionLine[] = ESTATISTICAS_OPTIONS[ index ];
dataInicioPanel.setEnabled( optionLine[ OPTION_INTERVALO ] );
dataFimPanel.setEnabled( optionLine[ OPTION_INTERVALO ] );
anoText.setEnabled( optionLine[ OPTION_ANO ] );
empresasTable.setEnabled( optionLine[ OPTION_EMPRESA ] );
estabelecimentosTable.setEnabled( optionLine[ OPTION_ESTABELECIMENTO ] );
pesquisarButton.setEnabled( index != NONE );
}
protected void listagemGeralMarcacoesPeriodo()
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
if( inicio == null || fim == null )
{
JOptionPane.showMessageDialog( this, "Tem de escolher o intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
StringBuffer buffer = new StringBuffer();
int exames = provider.countExamesPeriodo( inicio, fim );
int consultas = provider.countConsultasPeriodo( inicio, fim );
int total = exames + consultas;
buffer.append( "
" );
buffer.append( "" + ESTATISTICAS[ LISTAGEM_GERAL_MARCACOES_PERIODO ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "PER\u00cdODO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + DF.format( dataInicioPanel.getDate() ) + " a "
+ DF.format( dataFimPanel.getDate() ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EXAMES:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + exames + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "CONSULTAS:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + consultas + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "TOTAL:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + ( exames + consultas ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "NOME" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTABELECIMENTO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "DATA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( " " );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
String data[][] = provider.getMarcacoesPeriodo( inicio, fim );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "" );
for( int c = 0; c < data[ l ].length; c++ )
{
buffer.append( "| " );
buffer.append( "" + data[ l ][ c ] + "" );
buffer.append( " | " );
buffer.append( " | " );
}
buffer.append( "
" );
}
buffer.append( "
" );
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemMarcacoesPeriodoEmpresaEstabelecimento()
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
int sEmpresa = empresasTable.getSelectedRow();
int sEstabelecimento = estabelecimentosTable.getSelectedRow();
if( inicio == null || fim == null || sEmpresa == -1 )
{
JOptionPane.showMessageDialog( this, "Tem de escolher Empresa e intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
StringBuffer buffer = new StringBuffer();
Integer idEmpresa = ( (IDObject)empresasModel.getRowAt( sEmpresa ) ).getID();
EmpresaData empresa = (EmpresaData)JDO.load( EmpresaData.class, idEmpresa );
String designacao = (String)empresa.get( EmpresaData.DESIGNACAO_SOCIAL );
IDObject estabelecimentos[];
if( sEstabelecimento == -1 || ( ( IDObject )estabelecimentosModel.getRowAt( sEstabelecimento ) ).getID().equals( new Integer( -1 ) ) )
{
estabelecimentos = pesquisasProvider.getAllEstabelecimentosForEmpresa( idEmpresa );
}
else
{
estabelecimentos = new IDObject[ 1 ];
estabelecimentos[ 0 ] = ( IDObject )estabelecimentosModel.getRowAt( sEstabelecimento );
}
int examesEmpresa = provider.countExamesPeriodoForEmpresa( inicio, fim, idEmpresa );
int consultasEmpresa = provider.countConsultasPeriodoForEmpresa( inicio, fim, idEmpresa );
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ LISTAGEM_MARCACOES_PERIODO_EMPRESA_ESTABELECIMENTO ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + designacao + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "PER\u00cdODO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + DF.format( dataInicioPanel.getDate() ) + " a "
+ DF.format( dataFimPanel.getDate() ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EXAMES:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + examesEmpresa + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "CONSULTAS:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + consultasEmpresa + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "TOTAL:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + ( examesEmpresa + consultasEmpresa ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
for( int e = 0; e < estabelecimentos.length; e++ )
{
EstabelecimentoData estabelecimento = (EstabelecimentoData)JDO.load( EstabelecimentoData.class, estabelecimentos[ e ].getID() );
String nome = (String)estabelecimento.get( EstabelecimentoData.NOME );
int exames = provider.countExamesPeriodoForEstabelecimento( inicio, fim, estabelecimentos[ e ].getID() );
int consultas = provider.countConsultasPeriodoForEstabelecimento( inicio, fim, estabelecimentos[ e ].getID() );
int total = exames + consultas;
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "ESTABELECIMENTO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + nome + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EXAMES:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + exames + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "CONSULTAS:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + consultas + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "TOTAL:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + ( exames + consultas ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "NOME" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTABELECIMENTO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "DATA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( " " );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
String data[][] = provider.getMarcacoesPeriodoForEstabelecimento( inicio, fim, estabelecimentos[ e ].getID() );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "" );
for( int c = 1; c < data[ l ].length; c++ )
{
buffer.append( "| " );
buffer.append( "" + data[ l ][ c ] + "" );
buffer.append( " | " );
buffer.append( " | " );
}
buffer.append( "
" );
}
buffer.append( "
" );
}
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemGeralTrabalhadoresSemExamesOuConsultas( boolean exames )
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
if( inicio == null || fim == null )
{
JOptionPane.showMessageDialog( this, "Tem de escolher o intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
int count = provider.countTrabalhadoresSemExamesOuConsultas( inicio, fim, exames );
//String data[][] = provider.getTrabalhadoresComExamesOuConsultasPeriodo( inicio, fim, exames );
Object data[][] = provider.getCountTrabalhadoresSemExamesOuConsultasPeriodoForAllEmpresas( inicio, fim, exames );
StringBuffer buffer = new StringBuffer();
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ exames ? LISTAGEM_GLOBAL_TRABALHADORES_SEM_EXAMES : LISTAGEM_GLOBAL_TRABALHADORES_SEM_CONSULTA ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "PER\u00cdODO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + DF.format( dataInicioPanel.getDate() ) + " a "
+ DF.format( dataFimPanel.getDate() ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "TOTAL:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + count + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "N\u00ba" );
buffer.append( " | " );
buffer.append( " | " );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "
" );
buffer.append( "| " );
buffer.append( "" + data[ l ][ 0 ] + "" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + data[ l ][ 1 ] + "" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
}
buffer.append( "
" );
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemTrabalhadoresSemExamesOuConsultasEmpresaEstabelecimento( boolean exames )
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
if( inicio == null || fim == null )
{
JOptionPane.showMessageDialog( this, "Tem de escolher o intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
int sEmpresa = empresasTable.getSelectedRow();
int sEstabelecimento = estabelecimentosTable.getSelectedRow();
if( sEmpresa == -1 )
{
JOptionPane.showMessageDialog( this, "Tem de escolher Empresa.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
StringBuffer buffer = new StringBuffer();
Integer idEmpresa = ( (IDObject)empresasModel.getRowAt( sEmpresa ) ).getID();
EmpresaData empresa = (EmpresaData)JDO.load( EmpresaData.class, idEmpresa );
String designacao = (String)empresa.get( EmpresaData.DESIGNACAO_SOCIAL );
IDObject estabelecimentos[];
if( sEstabelecimento == -1 || ( ( IDObject )estabelecimentosModel.getRowAt( sEstabelecimento ) ).getID().equals( new Integer( -1 ) ) )
{
estabelecimentos = pesquisasProvider.getAllEstabelecimentosForEmpresa( idEmpresa );
}
else
{
estabelecimentos = new IDObject[ 1 ];
estabelecimentos[ 0 ] = ( IDObject )estabelecimentosModel.getRowAt( sEstabelecimento );
}
int countEmpresa = provider.countTrabalhadoresSemExamesOuConsultasEmpresa( idEmpresa, inicio, fim, exames );
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ exames ? LISTAGEM_TRABALHADORES_SEM_EXAMES_EMPRESA_ESTABELECIMENTO : LISTAGEM_TRABALHADORES_SEM_CONSULTA_EMPRESA_ESTABELECIMENTO ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + designacao + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "Nº DE TRABALHADORES:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + countEmpresa + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
for( int e = 0; e < estabelecimentos.length; e++ )
{
EstabelecimentoData estabelecimento = (EstabelecimentoData)JDO.load( EstabelecimentoData.class, estabelecimentos[ e ].getID() );
String nome = (String)estabelecimento.get( EstabelecimentoData.NOME );
int countEstabelecimento = provider.countTrabalhadoresSemExamesOuConsultasEstabelecimento( estabelecimentos[ e ].getID(), inicio, fim, exames );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "ESTABELECIMENTO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + nome + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "Nº DE TRABALHADORES:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + countEstabelecimento + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "ESTABELECIMENTO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "NOME" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
String data[][] = provider.getTrabalhadoresSemExamesOuConsultasEstabelecimento( estabelecimentos[ e ].getID(), inicio, fim, exames );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "" );
for( int c = 0; c < data[ l ].length; c++ )
{
buffer.append( "| " );
buffer.append( "" + data[ l ][ c ] + "" );
buffer.append( " | " );
buffer.append( " | " );
}
buffer.append( "
" );
}
buffer.append( "
" );
}
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemGeralTrabalhadoresComExamesOuConsultasPeriodo( boolean exames )
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
if( inicio == null || fim == null )
{
JOptionPane.showMessageDialog( this, "Tem de escolher o intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
int count = provider.countTrabalhadoresComExamesOuConsultasPeriodo( inicio, fim, exames );
//String data[][] = provider.getTrabalhadoresComExamesOuConsultasPeriodo( inicio, fim, exames );
Object data[][] = provider.getCountTrabalhadoresComExamesOuConsultasPeriodoForAllEmpresas( inicio, fim, exames );
StringBuffer buffer = new StringBuffer();
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ exames ? LISTAGEM_GLOBAL_TRABALHADORES_COM_EXAMES_PERIODO : LISTAGEM_GLOBAL_TRABALHADORES_COM_CONSULTA_PERIODO ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "PER\u00cdODO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + DF.format( dataInicioPanel.getDate() ) + " a "
+ DF.format( dataFimPanel.getDate() ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "TOTAL:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + count + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "N\u00ba" );
buffer.append( " | " );
buffer.append( " | " );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "
" );
buffer.append( "| " );
buffer.append( "" + data[ l ][ 0 ] + "" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + data[ l ][ 1 ] + "" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
}
buffer.append( "
" );
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemGeralTrabalhadoresComExamesOuConsultasPeriodoEmpresaEstabelecimento( boolean exames )
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
int sEmpresa = empresasTable.getSelectedRow();
int sEstabelecimento = estabelecimentosTable.getSelectedRow();
if( inicio == null || fim == null || sEmpresa == -1 )
{
JOptionPane.showMessageDialog( this, "Tem de escolher Empresa e intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
StringBuffer buffer = new StringBuffer();
Integer idEmpresa = ( (IDObject)empresasModel.getRowAt( sEmpresa ) ).getID();
EmpresaData empresa = (EmpresaData)JDO.load( EmpresaData.class, idEmpresa );
String designacao = (String)empresa.get( EmpresaData.DESIGNACAO_SOCIAL );
IDObject estabelecimentos[];
if( sEstabelecimento == -1 || ( ( IDObject )estabelecimentosModel.getRowAt( sEstabelecimento ) ).getID().equals( new Integer( -1 ) ) )
{
estabelecimentos = pesquisasProvider.getAllEstabelecimentosForEmpresa( idEmpresa );
}
else
{
estabelecimentos = new IDObject[ 1 ];
estabelecimentos[ 0 ] = ( IDObject )estabelecimentosModel.getRowAt( sEstabelecimento );
}
int countEmpresa = provider.countTrabalhadoresComExamesOuConsultasPeriodoForEmpresa( inicio, fim, idEmpresa, exames );
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ exames ? LISTAGEM_TRABALHADORES_COM_EXAMES_PERIODO_EMPRESA_ESTABELECIMENTO : LISTAGEM_TRABALHADORES_COM_CONSULTA_PERIODO_EMPRESA_ESTABELECIMENTO ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + designacao + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "PER\u00cdODO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + DF.format( dataInicioPanel.getDate() ) + " a "
+ DF.format( dataFimPanel.getDate() ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "Nº:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + countEmpresa + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
for( int e = 0; e < estabelecimentos.length; e++ )
{
EstabelecimentoData estabelecimento = (EstabelecimentoData)JDO.load( EstabelecimentoData.class, estabelecimentos[ e ].getID() );
String nome = (String)estabelecimento.get( EstabelecimentoData.NOME );
int countEstabelecimento = provider.countTrabalhadoresComExamesOuConsultasPeriodoForEstabelecimento( inicio, fim, estabelecimentos[ e ].getID(), exames );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "ESTABELECIMENTO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + nome + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "Nº:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + countEstabelecimento + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "ESTABELECIMENTO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "NOME" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
String data[][] = provider.getTrabalhadoresComExamesOuConsultasPeriodoForEstabelecimento( inicio, fim, estabelecimentos[ e ].getID(), exames );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "" );
for( int c = 0; c < data[ l ].length; c++ )
{
buffer.append( "| " );
buffer.append( "" + data[ l ][ c ] + "" );
buffer.append( " | " );
buffer.append( " | " );
}
buffer.append( "
" );
}
buffer.append( "
" );
}
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemGeralTrabalhadoresPeriodo()
{
try
{
Date inicio = dataInicioPanel.getDate();
Date fim = dataFimPanel.getDate();
if( inicio == null || fim == null )
{
JOptionPane.showMessageDialog( this, "Tem de escolher o intervalo de datas.", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
if( inicio.after( fim ) )
{
JOptionPane.showMessageDialog( this, "A data de in\u00edcio tem de ser inferior \u00e0 de fim..", "Erro...",
JOptionPane.ERROR_MESSAGE );
resultadoText.setText( "ERRO!" );
return;
}
StringBuffer buffer = new StringBuffer();
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ LISTAGEM_GLOBAL_TRABALHADORES_PERIODO ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "PER\u00cdODO:" );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "" + DF.format( dataInicioPanel.getDate() ) + " a "
+ DF.format( dataFimPanel.getDate() ) + "" );
buffer.append( " | " );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTABELECIMENTO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "NOME" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ÚLTIMO EXAME" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTADO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ÚLTIMA CONSULTA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTADO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
String data[][] = provider.getDadosTrabalhadoresPeriodo( inicio, fim );
for( int l = 0; l < data.length; l++ )
{
buffer.append( "" );
for( int c = 0; c < data[ l ].length; c++ )
{
buffer.append( "| " );
buffer.append( "" + data[ l ][ c ] + "" );
buffer.append( " | " );
buffer.append( " | " );
}
buffer.append( "
" );
}
buffer.append( "
" );
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
protected void listagemGlobalHigieneSeguranca()
{
try
{
StringBuffer buffer = new StringBuffer();
buffer.append( "" );
buffer.append( "" + ESTATISTICAS[ LISTAGEM_GLOBAL_HIGIENE_SEGURANCA ] + "" );
buffer.append( "
" );
buffer.append( "
" );
buffer.append( "" );
buffer.append( "" );
buffer.append( "| " );
buffer.append( "EMPRESA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTABELECIMENTO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ÚLTIMA AUDITORIA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "ESTADO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "RELATÓRIO" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "" );
buffer.append( "PRÓXIMA AUDITORIA" );
buffer.append( " | " );
buffer.append( " | " );
buffer.append( "
" );
String data[][] = provider.getDadosHigieneSeguranca();
for( int l = 0; l < data.length; l++ )
{
buffer.append( "" );
for( int c = 0; c < data[ l ].length; c++ )
{
buffer.append( "| " );
buffer.append( "" + data[ l ][ c ] + "" );
buffer.append( " | " );
buffer.append( " | " );
}
buffer.append( "
" );
}
buffer.append( "
" );
resultadoText.setText( buffer.toString() );
}
catch( Exception ex )
{
resultadoText.setText( "ERRO a carregar dados!" );
ex.printStackTrace();
}
}
public void exportar()
{
FileDialog dialog = new FileDialog( this, "Ficheiro de destino", FileDialog.SAVE );
dialog.setDirectory( System.getProperty( "user.home" ) );
dialog.setVisible( true );
String fileName;
String dirName;
fileName = dialog.getFile();
dirName = dialog.getDirectory();
if( fileName != null )
{
int index = fileName.indexOf( '.' );
if( index == -1 )
{
fileName += ".html";
}
if( index == fileName.length() - 1 )
{
fileName += "html";
}
String fullName = dirName + fileName;
String text = resultadoText.getText();
String title = "S.I.P.R.P. - Sociedade Ibérica de Prevenção de Riscos Profissionais";
String style = "";
text = text.replace( "", "\n\t\t" + title + "\n" + style );
text = text.replace( "", "" );
text = text.replace( "", "
" );
// System.out.println( text );
try
{
FileWriter writer = new FileWriter( new File( fullName ) );
writer.write( text );
writer.close();
}
catch( IOException ex )
{
DialogException.showException( ex );
return;
}
}
}
}