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/data/Marcacao.java

353 lines
11 KiB

/*
* Marcacao.java
*
* Created on 21 de Maio de 2004, 16:59
*/
package siprp.data;
import java.text.*;
import java.util.*;
import com.evolute.utils.*;
import com.evolute.utils.jdo.*;
import com.evolute.utils.tables.*;
import siprp.*;
/**
*
* @author fpalma
*/
public abstract class Marcacao extends JDOObject
implements ColumnizedObject
//, JDOOperationHandlerInterface
{
public static final int TIPO_MARCACAO_TRABALHADOR_EXAMES = 0;
public static final int TIPO_MARCACAO_TRABALHADOR_CONSULTA = 1;
public static final int TIPO_MARCACAO_ESTABELECIMENTO = 2;
public static final int TIPO_MARCACAO_EMPRESA = 3;
public static final int ESTADO_POR_REALIZAR = 0;
public static final int ESTADO_PARCIALMENTE_REALIZADA = 1;
public static final int ESTADO_REALIZADA = 2;
public static final int ESTADO_DESMARCADA_TRABALHADOR = 3;
public static final int ESTADO_DESMARCADA_SHST = 4;
public static final int ESTADO_FALTOU = 5;
public static final String DATA = "data";
public static final String REALIZADA = "realizada";
public static final String DATA_EMAIL = "data_email";
public static final String DATA_RELATORIO = "data_relatorio";
public static final String ANTECEDENCIA_AVISO = "antecedencia_aviso";
protected static final DateFormat DATE_FORMAT = DateFormat.getDateInstance( DateFormat.SHORT );
protected static JDOProvider JDO;
public static Marcacao getMarcacao( int tipo )
{
switch( tipo )
{
case TIPO_MARCACAO_TRABALHADOR_EXAMES: case TIPO_MARCACAO_TRABALHADOR_CONSULTA:
return new MarcacaoTrabalhadorData();
case TIPO_MARCACAO_ESTABELECIMENTO:
return new MarcacaoEstabelecimentoData();
case TIPO_MARCACAO_EMPRESA:
return new MarcacaoEmpresaData();
}
return null;
}
public Object getValue( int col )
{
switch( col )
{
case 0:
Date data = (Date) get( DATA );
String dataStr = DATE_FORMAT.format( data );
return dataStr;
case 1:
String realizada = (String) get( REALIZADA );
// if( this instanceof MarcacaoEmpresaData )
// {
// return new Boolean( "y".equals( realizada ) );
// }
// else
// {
realizada = "y".equals( realizada ) ? "Sim" : "N\u00e3o";
return realizada;
// }
case 2:
if( this instanceof MarcacaoEmpresaData )
{
String textoStr = (String ) get( MarcacaoEmpresaData.TEXTO );
if( textoStr == null )
{
textoStr = "";
}
textoStr = textoStr.trim();
int index = textoStr.indexOf( "\n" );
if( index != -1 )
{
textoStr = textoStr.substring( 0, index );
}
return textoStr;
}
else
{
Date dataRelatorio = (Date) get( DATA_RELATORIO );
String dataRelatorioStr = ( dataRelatorio != null ? DATE_FORMAT.format( dataRelatorio ) : "" );
return dataRelatorioStr;
}
default:
return null;
}
}
public static void saveMarcacaoConsultaForTrabalhadorID( Integer trabalhadorID, Date date )
throws Exception
{
if( date != null )
{
date = (Date)date.clone();
}
FichaDataProvider provider = (FichaDataProvider) FichaDataProvider.getProvider();
if( trabalhadorID == null )
{
return;
}
Integer marcacaoID = provider.getMarcacaoIDByTrabalhador( trabalhadorID );
MarcacaoTrabalhadorData marcacao;
if( marcacaoID == null )
{
marcacao = null;
}
else
{
if( JDO == null )
{
JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
}
marcacao = ( MarcacaoTrabalhadorData ) JDO.load( MarcacaoTrabalhadorData.class, marcacaoID );
}
if( date == null && marcacao != null )
{
marcacao.delete();
}
else if( date != null && marcacao != null )
{
marcacao.set( Marcacao.DATA, date );
marcacao.save();
}
else if( date != null && marcacao == null )
{
marcacao = new MarcacaoTrabalhadorData();
if( JDO == null )
{
JDO = ( JDOProvider ) Singleton.getInstance( Singleton.DEFAULT_JDO_PROVIDER );
}
TrabalhadorData trab = (TrabalhadorData)JDO.load( TrabalhadorData.class, trabalhadorID );
marcacao.set( MarcacaoTrabalhadorData.TRABALHADOR, trab );
marcacao.set( MarcacaoTrabalhadorData.TIPO, new Integer( MarcacaoTrabalhadorData.TIPO_CONSULTA ) );
marcacao.set( Marcacao.DATA, date );
marcacao.set( Marcacao.REALIZADA, "n" );
marcacao.set( MarcacaoTrabalhadorData.ESTADO, new Integer( siprp.medicina.MedicinaDataProvider.ESTADO_POR_REALIZAR ) );
marcacao.set( MarcacaoTrabalhadorData.MOTIVO, new Integer( 2 ) );
marcacao.save();
}
}
//
// public boolean handle( JDOObject object, int operation, int moment )
// throws Exception
// {
// switch( operation )
// {
// case JDOOperationHandlerInterface.OP_SAVE:
// switch( moment )
// {
// case JDOOperationHandlerInterface.MOMENT_BEFORE:
// return preSave( (Marcacao) object );
//
// case JDOOperationHandlerInterface.MOMENT_AFTER:
// return postSave( (Marcacao) object );
// }
// return false;
//
// case JDOOperationHandlerInterface.OP_DELETE:
// switch( moment )
// {
// case JDOOperationHandlerInterface.MOMENT_BEFORE:
// return preDelete( (Marcacao) object );
//
// case JDOOperationHandlerInterface.MOMENT_AFTER:
// return postDelete( (Marcacao) object );
// }
// return false;
// }
// return false;
// }
//
// protected boolean preSave( Marcacao object )
// throws Exception
// {
// return false;
// }
//
// protected boolean postSave( Marcacao object )
// throws Exception
// {
// if( object instanceof MarcacaoEmpresaData )
// {
// AvisoData aviso = (AvisoData) load( AvisoData.class, new Object[]{ get( MarcacaoEmpresaData.ID ), new Integer( AvisoData.TIPO_EMPRESA ) }, new String[]{ AvisoData.EVENTO_ID, AvisoData.TIPO } );
// if( aviso == null )
// {
// aviso = new AvisoData();
// }
// aviso.set( AvisoData.TIPO, new Integer( AvisoData.TIPO_EMPRESA ) );
// EmpresaData empresa = ( EmpresaData ) object.get( MarcacaoEmpresaData.EMPRESA );
// aviso.set( AvisoData.EMPRESA, empresa );
// aviso.set( AvisoData.EVENTO_ID, object.get( MarcacaoEmpresaData.ID ) );
// Date dataEvento = (Date) object.get( DATA );
// aviso.set( AvisoData.DATA_EVENTO, dataEvento );
// aviso.set( AvisoData.DATA_AVISO, dataEvento );
// String descricao = "Tarefa ";
// aviso.set( AvisoData.DESCRICAO, descricao );
// aviso.save();
// }
// else if( object instanceof MarcacaoEstabelecimentoData )
// {
// AvisoData aviso = (AvisoData) load( AvisoData.class, new Object[]{ get( MarcacaoEstabelecimentoData.ID ), new Integer( AvisoData.TIPO_ESTABELECIMENTO ) }, new String[]{ AvisoData.EVENTO_ID, AvisoData.TIPO } );
// if( aviso == null )
// {
// aviso = new AvisoData();
// }
// aviso.set( AvisoData.TIPO, new Integer( AvisoData.TIPO_ESTABELECIMENTO ) );
// EstabelecimentoData estabelecimento = ( EstabelecimentoData ) object.get( MarcacaoEstabelecimentoData.ESTABELECIMENTO );
// aviso.set( AvisoData.ESTABELECIMENTO, estabelecimento );
// EmpresaData empresa = ( EmpresaData )estabelecimento.get( EstabelecimentoData.EMPRESA );
// aviso.set( AvisoData.EMPRESA, empresa );
// aviso.set( AvisoData.EVENTO_ID, object.get( MarcacaoEstabelecimentoData.ID ) );
// Date dataEvento = (Date) object.get( DATA );
// Date dataAviso = new Date( dataEvento.getTime() );
// Calendar cal = Calendar.getInstance();
// cal.setTime( dataAviso );
// cal.add( Calendar.DAY_OF_MONTH, -14 );
// dataAviso = cal.getTime();
// aviso.set( AvisoData.DATA_AVISO, dataAviso );
// aviso.set( AvisoData.DATA_EVENTO, dataEvento );
// String descricao = "Visita ";
// aviso.set( AvisoData.DESCRICAO, descricao );
// cal = Calendar.getInstance();
// cal.setTime( dataEvento );
// cal.set( cal.get( Calendar.YEAR ), cal.get( Calendar.MONTH ), cal.get( Calendar.DAY_OF_MONTH ), 0, 0, 0 );
// cal.set( Calendar.MILLISECOND, 0 );
// dataEvento = cal.getTime();
//
// cal = Calendar.getInstance();
// cal.set( cal.get( Calendar.YEAR ), cal.get( Calendar.MONTH ), cal.get( Calendar.DAY_OF_MONTH ), 10, 0, 0 );
// cal.set( Calendar.MILLISECOND, 0 );
// Date hoje = cal.getTime();
// if( hoje.before( dataEvento ) )
// {
// aviso.save();
// }
// }
// if( object instanceof MarcacaoTrabalhadorData )
// {
// AvisoData aviso = (AvisoData) load( AvisoData.class, new Object[]{ object.get( MarcacaoTrabalhadorData.ID ), new Integer( AvisoData.TIPO_TRABALHADOR ) }, new String[]{ AvisoData.EVENTO_ID, AvisoData.TIPO } );
// if( aviso == null )
// {
// aviso = new AvisoData();
// }
// aviso.set( AvisoData.TIPO, new Integer( AvisoData.TIPO_TRABALHADOR ) );
// TrabalhadorData trab = ( TrabalhadorData ) object.get( MarcacaoTrabalhadorData.TRABALHADOR );
// aviso.set( AvisoData.TRABALHADOR, trab );
// EstabelecimentoData estabelecimento = ( EstabelecimentoData ) trab.get( TrabalhadorData.ESTABELECIMENTO );
// aviso.set( AvisoData.ESTABELECIMENTO, estabelecimento );
// EmpresaData empresa = ( EmpresaData ) estabelecimento.get( EstabelecimentoData.EMPRESA );
// aviso.set( AvisoData.EMPRESA, empresa );
// aviso.set( AvisoData.EVENTO_ID, object.get( MarcacaoTrabalhadorData.ID ) );
// Date dataEvento = (Date) object.get( DATA );
// Date dataAviso = new Date( dataEvento.getTime() );
// Calendar cal = Calendar.getInstance();
// cal.setTime( dataAviso );
// cal.add( Calendar.DAY_OF_MONTH, -14 );
// dataAviso = cal.getTime();
// aviso.set( AvisoData.DATA_AVISO, dataAviso );
// aviso.set( AvisoData.DATA_EVENTO, dataEvento );
// String descricao = "";
// switch( ( ( Integer ) object.get( MarcacaoTrabalhadorData.TIPO ) ).intValue() )
// {
// case MarcacaoTrabalhadorData.TIPO_EXAMES:
// descricao = "Exames ";
// break;
//
// case MarcacaoTrabalhadorData.TIPO_CONSULTA:
// descricao = "Consulta ";
// break;
// }
// aviso.set( AvisoData.DESCRICAO, descricao );
// cal = Calendar.getInstance();
// cal.setTime( dataEvento );
// cal.set( cal.get( Calendar.YEAR ), cal.get( Calendar.MONTH ), cal.get( Calendar.DAY_OF_MONTH ), 0, 0, 0 );
// cal.set( Calendar.MILLISECOND, 0 );
// dataEvento = cal.getTime();
//
// cal = Calendar.getInstance();
// cal.set( cal.get( Calendar.YEAR ), cal.get( Calendar.MONTH ), cal.get( Calendar.DAY_OF_MONTH ), 10, 0, 0 );
// cal.set( Calendar.MILLISECOND, 0 );
// Date hoje = cal.getTime();
// if( hoje.before( dataEvento ) )
// {
// aviso.save();
// }
// }
// else
// {
// return false;
// }
// return true;
// }
//
// protected boolean preDelete( Marcacao object )
// throws Exception
// {
// return false;
// }
//
// protected boolean postDelete( Marcacao object )
// throws Exception
// {
// Integer tipo;
// if( object instanceof MarcacaoEmpresaData )
// {
// tipo = new Integer( AvisoData.TIPO_EMPRESA );
// }
// else if( object instanceof MarcacaoEstabelecimentoData )
// {
// tipo = new Integer( AvisoData.TIPO_ESTABELECIMENTO );
// }
// if( object instanceof MarcacaoTrabalhadorData )
// {
// tipo = new Integer( AvisoData.TIPO_TRABALHADOR );
// }
// else
// {
// return false;
// }
// AvisoData aviso = (AvisoData) load( AvisoData.class, new Object[]{ object.get( "id" ), tipo }, new String[]{ AvisoData.EVENTO_ID, AvisoData.TIPO } );
// if( aviso != null )
// {
// aviso.delete();
// }
//
// return true;
// }
}