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