package siprp.database.cayenne.objects; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import siprp.MedicinaConstants; import siprp.database.cayenne.objects.auto._TrabalhadoresEcdsDatas; import com.evolute.adt.OrderedMap; public class TrabalhadoresEcdsDatas extends _TrabalhadoresEcdsDatas implements MedicinaConstants { private static final long serialVersionUID = 1L; public String getDataString() { return getData() == null ? "" : DATE_FORMAT.format( getData() ); } public String getEstadoString() { return getEstado() == null || getEstado() >= ESTADOS_EXAME_STR.length ? "" : ESTADOS_EXAME_STR[getEstado()]; } public HashMap getEstados() { HashMap result = new HashMap(); for( int i = 0; i < ESTADOS_EXAME_STR.length; ++i ) { if( ESTADOS_EXAME_STR[i] != null ) { result.put( new Integer( i ), ESTADOS_EXAME_STR[i] ); } } return result; } @Override public void setData( Date date ) { if( date != null && this.getToTrabalhadoresEcds() != null && this.getEstado() != null && new Integer( ESTADO_POR_REALIZAR ).equals( this.getEstado() ) ) { this.getToTrabalhadoresEcds().setData( date ); } super.setData( date ); } @Override public String toString() { return getDataString() + ": " + getEstadoString(); } public OrderedMap getStatesForeGruposExames() { OrderedMap grupos = new OrderedMap(); List exames = this.getTrabalhadoresEcdArray(); if( exames != null ) { for( TrabalhadoresEcd exame : exames ) { String estadoString = MedicinaConstants.ESTADOS_EXAME_STR[exame.getEstado()]; PrtGruposProtocolo grupo = exame.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo(); if( !grupos.containsKey( grupo ) ) { grupos.putLast( grupo, grupo.getDescricao() ); grupos.putLast( grupo, estadoString ); } } } grupos.order(); return grupos; } private List getAllEcdForGrupoForThisMarcacao( PrtGruposProtocolo grupo ) { List result = new ArrayList(); for( TrabalhadoresEcd ecd : (List) getTrabalhadoresEcdArray() ) { if( grupo.equals( ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo() ) ) { result.add( ecd.getToPrtTiposElementosProtocolo() ); } } return result; } private List getAllEcdForGrupoAndCurrentPerfil( PrtGruposProtocolo grupo ) { Trabalhadores trabalhador = getToTrabalhadoresEcds().getToTrabalhadores(); List result = new ArrayList(); Integer perfil = trabalhador.getPerfil(); if( perfil != null ) { Empresas empresa = trabalhador.getToEstabelecimentos().getToEmpresas(); List ecdsPerfil = (List) empresa.getPrtElementosProtocoloArray(); for( PrtElementosProtocolo ecdPerfil : ecdsPerfil ) { if( perfil.equals( ecdPerfil.getNumeroPerfil() ) ) { PrtTiposElementosProtocolo ecd = ecdPerfil.getToPrtTiposElementosProtocolo(); if( ecd != null ) { if( ecd.getToPrtGruposProtocolo().equals( grupo ) && !result.contains( ecd ) ) { result.add( ecd ); } } } } } return result; } public void marcarGrupoExames( PrtGruposProtocolo grupo ) { for( PrtTiposElementosProtocolo ecd : getAllEcdForGrupoAndCurrentPerfil( grupo ) ) { TrabalhadoresEcd trabEcd = new TrabalhadoresEcd(); trabEcd.setEstado( MedicinaConstants.ESTADO_POR_REALIZAR ); trabEcd.setToPrtTiposElementosProtocolo( ecd ); trabEcd.setToTrabalhadoresEcdsDatas( this ); addToTrabalhadoresEcdArray( trabEcd ); } getToTrabalhadoresEcds().getGruposExamesForPerfil(); } public void setStateForGrupoProtocolo( PrtGruposProtocolo grupo, Integer estado ) { List group = getAllEcdForGrupoForThisMarcacao( grupo ); for(TrabalhadoresEcd ecd : (List) getTrabalhadoresEcdArray()) { if(group.contains( ecd.getToPrtTiposElementosProtocolo())) { ecd.setEstado( estado ); } } } public void setStateForGrupoProtocolo( PrtGruposProtocolo grupo, String estado ) { for( int i = 0; i < ESTADOS_EXAME_STR.length; ++i ) { String currentEstado = ESTADOS_EXAME_STR[i]; if( currentEstado != null && new Integer( i ).equals( estado ) ) { setStateForGrupoProtocolo( grupo, i ); break; } } } public void anular() { setEstadoForAllEcd( MedicinaConstants.ESTADO_ANULADO ); } public void realizar() { setEstadoForAllEcd( MedicinaConstants.ESTADO_REALIZADO ); } public void porRealizar() { setEstadoForAllEcd( MedicinaConstants.ESTADO_POR_REALIZAR ); } public void desmarcarSIPRP() { setEstadoForAllEcd( MedicinaConstants.ESTADO_DESMARCADO_EMPRESA ); } public void desmarcarTrabalhador() { setEstadoForAllEcd( MedicinaConstants.ESTADO_DESMARCADO_TRABALHADOR ); } public void faltou() { setEstadoForAllEcd( MedicinaConstants.ESTADO_FALTOU ); } public void setEstadoForAllEcd( Integer estado ) { List allEcd = (List) getTrabalhadoresEcdArray(); if(allEcd != null) { for(TrabalhadoresEcd ecd : allEcd ) { ecd.setEstado( estado ); } } super.setEstado( estado ); getToTrabalhadoresEcds().getGruposExamesForPerfil(); } @Override public void setEstado( Integer estado ){ super.setEstado( estado ); getToTrabalhadoresEcds().getGruposExamesForPerfil(); } }