package siprp.database.cayenne.objects; import java.util.HashMap; import java.util.List; import siprp.database.cayenne.objects.auto._TrabalhadoresEcds; import siprp.medicina.MedicinaConstants; import siprp.medicina.processo.ui.OrderedMap; public class TrabalhadoresEcds extends _TrabalhadoresEcds implements MedicinaConstants { private static final long serialVersionUID = 1L; public String getDataString() { return getData() == null ? "(sem data definida)" : sdf.format( getData() ); } public String getEstadoString() { return isNew() ? isNewMessage : (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 String toString() { return getDataString() + ": " + getEstadoString(); } public OrderedMap getGruposExamesForPerfil() { OrderedMap grupos = new OrderedMap(); Trabalhadores trabalhador = this.getToTrabalhadores(); 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 ) { PrtGruposProtocolo grupoEcd = ecd.getToPrtGruposProtocolo(); if( grupoEcd != null ) { String descricao = grupoEcd.getDescricao(); if( descricao != null && !grupos.containsKey( grupoEcd ) ) { grupos.putLast( grupoEcd, descricao ); Integer estado = getEstadoForGrupoEcd(grupoEcd); grupos.putLast( grupoEcd, estado != null ? MedicinaConstants.ESTADOS_EXAME_STR[estado] : " " ); } } } } } } return grupos; } private Integer getEstadoForGrupoEcd(PrtGruposProtocolo grupoEcd) { Integer estado = null; List marcacoes = getTrabalhadoresEcdsDatasArray(); if(marcacoes != null) { for(TrabalhadoresEcdsDatas marcacao : marcacoes) { List ecds = marcacao.getTrabalhadoresEcdArray(); for( TrabalhadoresEcd ecd : ecds ) { if(ecd.getToPrtTiposElementosProtocolo().getToPrtGruposProtocolo().equals( grupoEcd )) { if(new Integer(ESTADO_REALIZADO).equals(ecd.getEstado())) { return new Integer(ESTADO_REALIZADO); } else if(estado == null) { estado = ecd.getEstado(); break; } } } } } return estado == null ? ESTADO_POR_REALIZAR : estado; } }