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.
SIPRP/trunk/siprp/medicina/MarcacoesMedicinaHandler.java

94 lines
3.9 KiB

/*
* MarcacoesMedicinaHandler.java
*
* Created on 28 de Abril de 2006, 9:56
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package siprp.medicina;
import java.util.*;
import com.evolute.utils.*;
import com.evolute.utils.jdo.*;
import siprp.data.*;
/**
* Classe auxiliar para tratamento de marcações de Medicina.
*
* @author Frederico
*/
public class MarcacoesMedicinaHandler
{
/** Creates a new instance of MarcacoesMedicinaHandler */
public MarcacoesMedicinaHandler()
{
}
/**
* Ajusta os estado das marações corrente e seguinte para uma trabalhador.
* Este método é usado pelo sistema de marcaç&atild;o de fichas de aptidaão para ajustar
* as marcações existentes às escolhidas na ficha.
*
* @param trabalhadorID um inteiro que representa o trabalhador em questão
* @param motivoCorrente um inteiro que representa o motivo da marcação corrente (admissão/periódico/ocasional)
* @param dataCorrente a data que se pretende para a marcação corrente
* @param motivoSeguinte um inteiro que representa o motivo da marcação seguinte (admissão/periódico/ocasional)
* @param dataSeguinte a data que se pretende para a marcação seguinte
* @throws Exception se houver um erro na comunicação com a Base de Dados
*/
public void ajustarMarcacoes( Integer trabalhadorID, Integer motivoCorrente, Date dataCorrente,
Integer motivoSeguinte, Date dataSeguinte )
throws Exception
{
Integer idCorrente;
Integer idSeguinte;
MedicinaDataProvider provider = ( MedicinaDataProvider ) MedicinaDataProvider.getProvider();
JDOProvider JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
TrabalhadorData trabalhador = (TrabalhadorData)JDO.load( TrabalhadorData.class, trabalhadorID );
idCorrente = provider.getConsultaIDByTrabalhadorMotivoAndDate( trabalhadorID, motivoCorrente, dataCorrente );
MarcacaoTrabalhadorData consultaCorrente;
if( idCorrente == null )
{
consultaCorrente = new MarcacaoTrabalhadorData();
consultaCorrente.set( MarcacaoTrabalhadorData.TRABALHADOR, trabalhador );
consultaCorrente.set( MarcacaoTrabalhadorData.TIPO, new Integer( MarcacaoTrabalhadorData.TIPO_CONSULTA ) );
consultaCorrente.set( Marcacao.DATA, dataCorrente );
consultaCorrente.set( MarcacaoTrabalhadorData.MOTIVO, motivoCorrente );
}
else
{
consultaCorrente = ( MarcacaoTrabalhadorData ) JDO.load( MarcacaoTrabalhadorData.class, idCorrente );
}
consultaCorrente.set( Marcacao.REALIZADA, "y" );
consultaCorrente.set( MarcacaoTrabalhadorData.ESTADO, new Integer( siprp.medicina.MedicinaDataProvider.ESTADO_REALIZADO ) );
consultaCorrente.save();
idSeguinte = provider.getConsultaIDByTrabalhadorMotivoAndDate( trabalhadorID, motivoSeguinte, dataSeguinte );
if( idSeguinte == null )
{
idSeguinte = provider.getProximaConsultaIDByTrabalhadorMotivoAndDate( trabalhadorID, motivoSeguinte, dataCorrente );
MarcacaoTrabalhadorData consultaSeguinte;
if( idSeguinte == null )
{
consultaSeguinte = new MarcacaoTrabalhadorData();
consultaSeguinte.set( MarcacaoTrabalhadorData.TRABALHADOR, trabalhador );
consultaSeguinte.set( MarcacaoTrabalhadorData.TIPO, new Integer( MarcacaoTrabalhadorData.TIPO_CONSULTA ) );
consultaSeguinte.set( MarcacaoTrabalhadorData.MOTIVO, motivoSeguinte );
consultaSeguinte.set( Marcacao.REALIZADA, "y" );
consultaSeguinte.set( MarcacaoTrabalhadorData.ESTADO, new Integer( siprp.medicina.MedicinaDataProvider.ESTADO_POR_REALIZAR ) );
}
else
{
consultaSeguinte = ( MarcacaoTrabalhadorData ) JDO.load( MarcacaoTrabalhadorData.class, idSeguinte );
}
consultaSeguinte.set( Marcacao.DATA, dataSeguinte );
consultaSeguinte.save();
}
}
}