/* * 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(); } } }