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.
482 lines
14 KiB
482 lines
14 KiB
/*
|
|
* LocaisRealizacaoWindow.java
|
|
*
|
|
* Created on February 22, 2007, 10:19 AM
|
|
*
|
|
* To change this template, choose Tools | Template Manager
|
|
* and open the template in the editor.
|
|
*/
|
|
|
|
package siprp.medicina.locais_realizacao;
|
|
|
|
import com.evolute.utils.data.IDObject;
|
|
import com.evolute.utils.data.MappableObject;
|
|
import com.evolute.utils.tables.BaseTable;
|
|
import com.evolute.utils.tables.ColumnizedMappable;
|
|
import com.evolute.utils.tables.VectorTableModel;
|
|
import com.evolute.utils.tracker.TrackableWindow;
|
|
import com.evolute.utils.ui.DialogException;
|
|
import com.evolute.utils.ui.calendar.JCalendarPanel;
|
|
import info.clearthought.layout.TableLayout;
|
|
import info.clearthought.layout.TableLayoutConstraints;
|
|
import java.awt.BorderLayout;
|
|
import java.awt.Color;
|
|
import java.awt.FlowLayout;
|
|
import java.awt.GridLayout;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.WindowAdapter;
|
|
import java.awt.event.WindowEvent;
|
|
import java.util.Arrays;
|
|
import java.util.Date;
|
|
import java.util.Vector;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JComboBox;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.ListSelectionModel;
|
|
import javax.swing.SwingUtilities;
|
|
import javax.swing.WindowConstants;
|
|
import javax.swing.event.ChangeEvent;
|
|
import javax.swing.event.ChangeListener;
|
|
import javax.swing.event.ListSelectionEvent;
|
|
import javax.swing.event.ListSelectionListener;
|
|
import siprp.data.Marcacao;
|
|
import siprp.medicina.prestadores.PrestadoresDataProvider;
|
|
|
|
/**
|
|
*
|
|
* @author fpalma
|
|
*/
|
|
public class LocaisRealizacaoWindow extends JFrame
|
|
implements ActionListener, TrackableWindow, ListSelectionListener
|
|
{
|
|
protected static final Integer PRESTADOR_ID_SIPRP = new Integer( -1 );
|
|
|
|
protected static final IDObject PRESTADOR_SIPRP = new MappableObject( PRESTADOR_ID_SIPRP, "SIPRP" );
|
|
|
|
protected JCalendarPanel dataPanel;
|
|
protected JButton carregarButton;
|
|
protected JButton recarregarPrestadoresButton;
|
|
protected VectorTableModel empresasModel;
|
|
protected BaseTable empresasTable;
|
|
protected VectorTableModel estabelecimentosModel;
|
|
protected BaseTable estabelecimentosTable;
|
|
protected JLabel numeroConsultasLabel;
|
|
protected JComboBox prestadoresConsultasCombo;
|
|
protected JButton enviarConsultasButton;
|
|
protected JLabel numeroECDsLabel;
|
|
protected JComboBox prestadoresECDsCombo;
|
|
protected JButton enviarECDsButton;
|
|
|
|
|
|
protected LocaisRealizacaoDataProvider provider;
|
|
protected PrestadoresDataProvider prestadoresProvider;
|
|
|
|
/**
|
|
* Creates a new instance of LocaisRealizacaoWindow
|
|
*/
|
|
public LocaisRealizacaoWindow()
|
|
throws Exception
|
|
{
|
|
provider = LocaisRealizacaoDataProvider.getProvider();
|
|
prestadoresProvider = PrestadoresDataProvider.getProvider();
|
|
setupComponents();
|
|
}
|
|
|
|
private void setupComponents()
|
|
{
|
|
setTitle( "Locais de Realiza\u00e7\u00e3o" );
|
|
setSize( 1000, 700 );
|
|
JLabel dataLabel = new JLabel( "Data" );
|
|
dataPanel = new JCalendarPanel( this );
|
|
|
|
carregarButton = new JButton( "Carregar" );
|
|
carregarButton.addActionListener( this );
|
|
recarregarPrestadoresButton = new JButton( "Recarregar Prestadores" );
|
|
recarregarPrestadoresButton.addActionListener( this );
|
|
empresasModel = new VectorTableModel( new String[]{ "empresa" } );
|
|
empresasTable = new BaseTable( empresasModel );
|
|
empresasTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
|
|
empresasTable.getSelectionModel().addListSelectionListener( this );
|
|
JScrollPane empresasScp = new JScrollPane( empresasTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
|
|
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
|
|
estabelecimentosModel = new VectorTableModel( new String[]{ "estabelecimento" } );
|
|
estabelecimentosTable = new BaseTable( estabelecimentosModel );
|
|
estabelecimentosTable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
|
|
estabelecimentosTable.getSelectionModel().addListSelectionListener( this );
|
|
JScrollPane estabelecimentosScp = new JScrollPane( estabelecimentosTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
|
|
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
|
|
JLabel consultasLabel = new JLabel( "Consultas " );
|
|
numeroConsultasLabel = new JLabel( " " );
|
|
numeroConsultasLabel.setForeground( Color.green.darker() );
|
|
prestadoresConsultasCombo = new JComboBox();
|
|
enviarConsultasButton = new JButton( "Atribuir" );
|
|
enviarConsultasButton.addActionListener( this );
|
|
JLabel ecdsLabel = new JLabel( "ECDs " );
|
|
numeroECDsLabel = new JLabel( " " );
|
|
numeroECDsLabel.setForeground( Color.green.darker() );
|
|
prestadoresECDsCombo = new JComboBox();
|
|
enviarECDsButton = new JButton( "Atribuir" );
|
|
enviarECDsButton.addActionListener( this );
|
|
dataPanel.addChangeListener( new ChangeListener(){
|
|
public void stateChanged(ChangeEvent e)
|
|
{
|
|
empresasTable.clearSelection();
|
|
Vector values = empresasModel.getValues();
|
|
values.clear();
|
|
empresasModel.setValues( values );
|
|
}
|
|
} );
|
|
|
|
getContentPane().setLayout( new BorderLayout( 5, 5 ) );
|
|
JPanel upperPanel = new JPanel();
|
|
getContentPane().add( upperPanel, BorderLayout.NORTH );
|
|
JPanel centerPanel = new JPanel();
|
|
getContentPane().add( centerPanel, BorderLayout.CENTER );
|
|
|
|
upperPanel.setLayout( new FlowLayout( FlowLayout.CENTER ) );
|
|
upperPanel.add( dataLabel );
|
|
upperPanel.add( dataPanel );
|
|
upperPanel.add( carregarButton );
|
|
upperPanel.add( recarregarPrestadoresButton );
|
|
|
|
centerPanel.setLayout( new GridLayout( 1, 3 ) );
|
|
centerPanel.add( empresasScp );
|
|
centerPanel.add( estabelecimentosScp );
|
|
JPanel detalhesPanel = new JPanel();
|
|
centerPanel.add( detalhesPanel );
|
|
|
|
double cols[] =
|
|
new double[]{ TableLayout.MINIMUM, TableLayout.PREFERRED, TableLayout.FILL, TableLayout.MINIMUM };
|
|
double rows[] =
|
|
new double[]{ TableLayout.FILL, TableLayout.MINIMUM, TableLayout.MINIMUM,
|
|
TableLayout.FILL };
|
|
TableLayout tableLayout = new TableLayout( cols,rows );
|
|
detalhesPanel.setLayout( tableLayout );
|
|
|
|
detalhesPanel.add( consultasLabel, new TableLayoutConstraints( 0, 1 ) );
|
|
detalhesPanel.add( numeroConsultasLabel, new TableLayoutConstraints( 1, 1 ) );
|
|
detalhesPanel.add( prestadoresConsultasCombo, new TableLayoutConstraints( 2, 1 ) );
|
|
detalhesPanel.add( enviarConsultasButton, new TableLayoutConstraints( 3, 1 ) );
|
|
|
|
detalhesPanel.add( ecdsLabel, new TableLayoutConstraints( 0, 2 ) );
|
|
detalhesPanel.add( numeroECDsLabel, new TableLayoutConstraints( 1, 2 ) );
|
|
detalhesPanel.add( prestadoresECDsCombo, new TableLayoutConstraints( 2, 2 ) );
|
|
detalhesPanel.add( enviarECDsButton, new TableLayoutConstraints( 3, 2 ) );
|
|
|
|
setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
|
|
addWindowListener( new WindowAdapter(){
|
|
public void windowClosing( WindowEvent e )
|
|
{
|
|
close();
|
|
}
|
|
|
|
public void windowOpened( WindowEvent e )
|
|
{
|
|
// setExtendedState( getExtendedState() | MAXIMIZED_BOTH );
|
|
}
|
|
|
|
} );
|
|
|
|
recarregarPrestadores();
|
|
}
|
|
|
|
public void refresh()
|
|
{
|
|
}
|
|
|
|
public void open()
|
|
{
|
|
setVisible( true );
|
|
}
|
|
|
|
public void close()
|
|
{
|
|
SwingUtilities.invokeLater( new Runnable() {
|
|
public void run()
|
|
{
|
|
setVisible( false );
|
|
dispose();
|
|
}
|
|
} );
|
|
}
|
|
|
|
public boolean closeIfPossible()
|
|
{
|
|
close();
|
|
return true;
|
|
}
|
|
|
|
public void actionPerformed(ActionEvent e)
|
|
{
|
|
Object source = e.getSource();
|
|
if( source.equals( carregarButton ) )
|
|
{
|
|
carregar();
|
|
}
|
|
else if( source.equals( recarregarPrestadoresButton ) )
|
|
{
|
|
recarregarPrestadores();
|
|
}
|
|
else if( source.equals( enviarConsultasButton ) )
|
|
{
|
|
enviarConsultas();
|
|
}
|
|
else if( source.equals( enviarECDsButton ) )
|
|
{
|
|
enviarECDs();
|
|
}
|
|
|
|
}
|
|
|
|
public void valueChanged(ListSelectionEvent e)
|
|
{
|
|
Object source = e.getSource();
|
|
if( e.getValueIsAdjusting() )
|
|
{
|
|
return;
|
|
}
|
|
if( source.equals( empresasTable.getSelectionModel() ) )
|
|
{
|
|
mudarEmpresa();
|
|
}
|
|
else if( source.equals( estabelecimentosTable.getSelectionModel() ) )
|
|
{
|
|
mudarEstabelecimento();
|
|
}
|
|
}
|
|
|
|
protected void carregar()
|
|
{
|
|
empresasTable.clearSelection();
|
|
Date data = dataPanel.getDate();
|
|
if( data == null )
|
|
{
|
|
empresasModel.clearAll();
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
ColumnizedMappable empresas[] = provider.getEmpresasComMarcacoes( data );
|
|
Vector values = empresasModel.getValues();
|
|
values.clear();
|
|
values.addAll( Arrays.asList( empresas ) );
|
|
empresasModel.setValues( values );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar empresas", true );
|
|
}
|
|
}
|
|
|
|
protected void mudarEmpresa()
|
|
{
|
|
estabelecimentosTable.clearSelection();
|
|
Date data = dataPanel.getDate();
|
|
int selected = empresasTable.getSelectedRow();
|
|
if( data == null || selected == -1 )
|
|
{
|
|
estabelecimentosModel.clearAll();
|
|
return;
|
|
}
|
|
Integer empresaID = ( ( ColumnizedMappable ) empresasModel.getRowAt( selected ) ).getID();
|
|
try
|
|
{
|
|
ColumnizedMappable estabelecimentos[] =
|
|
provider.getEstabelecimentosComMarcacoesByEmpresa( empresaID, data );
|
|
Vector values = estabelecimentosModel.getValues();
|
|
values.clear();
|
|
values.addAll( Arrays.asList( estabelecimentos ) );
|
|
estabelecimentosModel.setValues( values );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar estabelecimentos", true );
|
|
}
|
|
}
|
|
|
|
protected void mudarEstabelecimento()
|
|
{
|
|
Date data = dataPanel.getDate();
|
|
int selectedEstabelecimento = estabelecimentosTable.getSelectedRow();
|
|
numeroConsultasLabel.setText( " " );
|
|
numeroECDsLabel.setText( " " );
|
|
enviarConsultasButton.setEnabled( false );
|
|
enviarECDsButton.setEnabled( false );
|
|
if( data == null || selectedEstabelecimento == -1 )
|
|
{
|
|
return;
|
|
}
|
|
Integer estabelecimentoID = ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( selectedEstabelecimento ) ).getID();
|
|
try
|
|
{
|
|
int countConsultas =
|
|
provider.getNumeroMarcacoesByEstabelecimentoAndTipo( estabelecimentoID,
|
|
Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA, data );
|
|
int countECDs =
|
|
provider.getNumeroMarcacoesByEstabelecimentoAndTipo( estabelecimentoID,
|
|
Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES, data );
|
|
if( countConsultas > 0 )
|
|
{
|
|
numeroConsultasLabel.setText( "" + countConsultas );
|
|
enviarConsultasButton.setEnabled( true );
|
|
Integer[] escolhidos =
|
|
provider.getPrestadoresIDByEstabelecimentoAndTipo( estabelecimentoID,
|
|
Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA, data );
|
|
if( escolhidos.length == 1 )
|
|
{
|
|
numeroConsultasLabel.setForeground( Color.green.darker() );
|
|
}
|
|
else
|
|
{
|
|
numeroConsultasLabel.setForeground( Color.red.darker() );
|
|
}
|
|
int e;
|
|
for( e = 0; e < escolhidos.length; e++ )
|
|
{
|
|
if( escolhidos[ e ] != null )
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
if( e == escolhidos.length || escolhidos[ e ] == null )
|
|
{
|
|
prestadoresConsultasCombo.setSelectedIndex( 0 );
|
|
}
|
|
else
|
|
{
|
|
for( int p = 0; p < prestadoresConsultasCombo.getItemCount(); p++ )
|
|
{
|
|
IDObject prestador = ( IDObject ) prestadoresConsultasCombo.getItemAt( p );
|
|
if( prestador.getID().equals( escolhidos[ e ] ) )
|
|
{
|
|
prestadoresConsultasCombo.setSelectedIndex( p );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if( countECDs > 0 )
|
|
{
|
|
numeroECDsLabel.setText( "" + countECDs );
|
|
enviarECDsButton.setEnabled( true );
|
|
Integer[] escolhidos =
|
|
provider.getPrestadoresIDByEstabelecimentoAndTipo( estabelecimentoID,
|
|
Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES, data );
|
|
if( escolhidos.length == 1 )
|
|
{
|
|
numeroECDsLabel.setForeground( Color.green.darker() );
|
|
}
|
|
else
|
|
{
|
|
numeroECDsLabel.setForeground( Color.red.darker() );
|
|
}
|
|
int e;
|
|
for( e = 0; e < escolhidos.length; e++ )
|
|
{
|
|
if( escolhidos[ e ] != null )
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
if( e == escolhidos.length || escolhidos[ e ] == null )
|
|
{
|
|
prestadoresECDsCombo.setSelectedIndex( 0 );
|
|
}
|
|
else
|
|
{
|
|
for( int p = 0; p < prestadoresECDsCombo.getItemCount(); p++ )
|
|
{
|
|
IDObject prestador = ( IDObject ) prestadoresECDsCombo.getItemAt( p );
|
|
if( prestador.getID().equals( escolhidos[ e ] ) )
|
|
{
|
|
prestadoresECDsCombo.setSelectedIndex( e );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar detalhes", true );
|
|
}
|
|
}
|
|
|
|
protected void recarregarPrestadores()
|
|
{
|
|
try
|
|
{
|
|
IDObject prestadoresConsultas[] = prestadoresProvider.getPrestadoresConsultasActivos();
|
|
IDObject prestadoresECDs[] = prestadoresProvider.getPrestadoresECDsActivos();
|
|
prestadoresConsultasCombo.removeAllItems();
|
|
prestadoresConsultasCombo.addItem( PRESTADOR_SIPRP );
|
|
for( int n = 0; n < prestadoresConsultas.length; n++ )
|
|
{
|
|
prestadoresConsultasCombo.addItem( prestadoresConsultas[ n ] );
|
|
}
|
|
prestadoresECDsCombo.removeAllItems();
|
|
prestadoresECDsCombo.addItem( PRESTADOR_SIPRP );
|
|
for( int n = 0; n < prestadoresECDs.length; n++ )
|
|
{
|
|
prestadoresECDsCombo.addItem( prestadoresECDs[ n ] );
|
|
}
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a carregar prestadores", true );
|
|
}
|
|
}
|
|
|
|
protected void enviarECDs()
|
|
{
|
|
Date data = dataPanel.getDate();
|
|
int selectedEstabelecimento = estabelecimentosTable.getSelectedRow();
|
|
if( data == null || selectedEstabelecimento == -1 )
|
|
{
|
|
return;
|
|
}
|
|
Integer estabelecimentoID = ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( selectedEstabelecimento ) ).getID();
|
|
try
|
|
{
|
|
Integer prestadorID = ( ( IDObject ) prestadoresECDsCombo.getSelectedItem() ).getID();
|
|
if( PRESTADOR_ID_SIPRP.equals( prestadorID ) )
|
|
{
|
|
prestadorID = null;
|
|
}
|
|
provider.setPrestadorIDForEstabelecimentoAndTipo( estabelecimentoID,
|
|
Marcacao.TIPO_MARCACAO_TRABALHADOR_EXAMES, data, prestadorID );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a atribuir", true );
|
|
}
|
|
}
|
|
|
|
protected void enviarConsultas()
|
|
{
|
|
Date data = dataPanel.getDate();
|
|
int selectedEstabelecimento = estabelecimentosTable.getSelectedRow();
|
|
if( data == null || selectedEstabelecimento == -1 )
|
|
{
|
|
return;
|
|
}
|
|
Integer estabelecimentoID = ( ( ColumnizedMappable ) estabelecimentosModel.getRowAt( selectedEstabelecimento ) ).getID();
|
|
try
|
|
{
|
|
Integer prestadorID = ( ( IDObject ) prestadoresConsultasCombo.getSelectedItem() ).getID();
|
|
if( PRESTADOR_ID_SIPRP.equals( prestadorID ) )
|
|
{
|
|
prestadorID = null;
|
|
}
|
|
provider.setPrestadorIDForEstabelecimentoAndTipo( estabelecimentoID,
|
|
Marcacao.TIPO_MARCACAO_TRABALHADOR_CONSULTA, data, prestadorID );
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
DialogException.showExceptionMessage( ex, "Erro a atribuir", true );
|
|
}
|
|
}
|
|
}
|