package siprp.database.cayenne.providers; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.cayenne.DataObjectUtils; import org.apache.cayenne.PersistenceState; import org.apache.cayenne.exp.ExpressionFactory; import org.apache.cayenne.query.SelectQuery; import siprp.database.cayenne.objects.BaseObject; import siprp.database.cayenne.objects.Empresas; import siprp.database.cayenne.objects.Exames; import siprp.database.cayenne.objects.LembretesTipos; import siprp.database.cayenne.objects.Prestadores; import siprp.database.cayenne.objects.PrtGruposProtocolo; import siprp.database.cayenne.objects.Trabalhadores; import siprp.database.cayenne.objects.TrabalhadoresConsultasDatas; import siprp.database.cayenne.objects.TrabalhadoresEcd; import siprp.database.cayenne.objects.TrabalhadoresEcdsDatas; import siprp.database.cayenne.objects.TrabalhadoresProcesso; import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.ProcessoConstants; public class MedicinaDAO extends MainDAO implements MedicinaConstants { // private static final String defaultPrestadorName = "SIPRP"; private Prestadores defaultPrestador = Prestadores.prestadorNulo; public Trabalhadores getTrabalhadorByID( Integer id ) { return (Trabalhadores) DataObjectUtils.objectForPK( context, Trabalhadores.class, id ); } public TrabalhadoresConsultasDatas getConsultaMarcacaoByID( Integer id ) { return (TrabalhadoresConsultasDatas) DataObjectUtils.objectForPK( context, TrabalhadoresConsultasDatas.class, id ); } public TrabalhadoresEcdsDatas getExameMarcacaoByID( Integer id ) { return (TrabalhadoresEcdsDatas) DataObjectUtils.objectForPK( context, TrabalhadoresEcdsDatas.class, id ); } public Exames getExameForExameID( Integer currentFichaExameID ) { return (Exames) DataObjectUtils.objectForPK( context, Exames.class, currentFichaExameID ); } public LembretesTipos getTipoLembretesCustomizavel( ) { return (LembretesTipos) DataObjectUtils.objectForPK( context, LembretesTipos.class, 1 ); } public List getAllEmpresas() { SelectQuery query = new SelectQuery( Empresas.class ); query.andQualifier( ExpressionFactory.noMatchExp( Empresas.INACTIVO_PROPERTY, "y" ) ); query.addOrdering( Empresas.DESIGNACAO_SOCIAL_PLAIN_PROPERTY, true ); List allEmpresas = context.performQuery( query ); return allEmpresas; } public List getAllPrestadores() { SelectQuery query = new SelectQuery( Prestadores.class ); query.andQualifier( ExpressionFactory.matchExp( Prestadores.ACTIVO_PROPERTY, "y" ) ); query.addOrdering( Prestadores.NOME_PROPERTY, true ); List allPrestadores = context.performQuery( query ); return allPrestadores; } public List getAllPrtGruposProtocolo() { SelectQuery query = new SelectQuery( PrtGruposProtocolo.class ); query.addOrdering( PrtGruposProtocolo.DESCRICAO_PLAIN_PROPERTY, true ); List allPrtGruposProtocolo= context.performQuery( query ); return allPrtGruposProtocolo; } public BaseObject saveObject( BaseObject object ) { if( object != null ) { if( object.getPersistenceState() == PersistenceState.NEW ) { context.registerNewObject( object ); } context.commitChanges(); } return object; } public void deleteObject( BaseObject object ) { if( object != null ) { context.deleteObject( object ); context.commitChanges(); } } public void rollback() { context.rollbackChanges(); context.unregisterObjects( context.uncommittedObjects() ); context.deleteObjects( context.newObjects() ); } public void fecharProcesso( TrabalhadoresProcesso currentProcesso ) { currentProcesso.setEstado( ProcessoConstants.PROCESSO_FECHADO_CODE ); context.commitChanges(); } public Prestadores getDefaultPrestador() { return defaultPrestador; } public Collection getPendingExamesForAnalisador( Prestadores currentAnalisador ) { Map resultMap = new HashMap(); SelectQuery query = new SelectQuery( TrabalhadoresEcd.class, ExpressionFactory.matchExp(TrabalhadoresEcd.DATA_RECEPCAO_PROPERTY, null )); List all = context.performQuery( query ); for( TrabalhadoresEcd ecd : all ) { TrabalhadoresEcdsDatas data = ecd.getToTrabalhadoresEcdsDatas(); if(new Integer(MedicinaConstants.ESTADO_REALIZADO).equals( data.getEstado())) { if(currentAnalisador.equals( ecd.getToAnalisador() )) { resultMap.put( ecd ,ecd ); }else if( Prestadores.prestadorNulo.equals( currentAnalisador ) && ecd.getToAnalisador() == null ) { resultMap.put( ecd, ecd ); } } } return resultMap.values(); } }