/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package db.providers; import db.entidades.Medida; import db.entidades.Risco; import db.entidades.Utilizador; import global.Global; import java.util.Date; import java.util.List; /** * * @author dneves */ public class RiscoLogic { private static RiscoLogic INSTANCE = null; private RiscoLogic() { } public static synchronized RiscoLogic getInstance() { if ( INSTANCE == null ) { INSTANCE = new RiscoLogic(); } return INSTANCE; } private boolean hasValue( Object obj ) { boolean result = false; if ( obj != null ) { if ( obj instanceof String ) { result = ! "".equals( ( ( String ) obj ).trim() ); } else if ( obj instanceof Date ) { result = true; } } return result; } public boolean isRiscoTratado( Risco r ) { boolean result = false; String responsavelExecucao = r.getResponsavel_execucao(); String por = r.getPor(); String recursosNecessarios = r.getRecursos_necessarios(); Date dataInicio = r.getData_inicio(); Date dataFim = r.getData_fim(); result = hasValue( responsavelExecucao ) && hasValue( por ) && hasValue( recursosNecessarios ) && hasValue( dataInicio ) && hasValue( dataFim ); return result; } public boolean isRiscoTratado( Risco risco, Utilizador user ) { boolean isTratado = false; if ( risco != null && user == null ) { isTratado = isRiscoTratado( risco ); } else if ( risco != null && user != null ) { int userType = user.getTipo() == null ? -1 : user.getTipo().intValue(); switch ( userType ) { case Global.RESPONSAVEL_SEGURANCA : { String resp = risco.getResponsavel_execucao(); String por = risco.getPor(); String rec = risco.getRecursos_necessarios(); Date dataInicio = risco.getData_inicio(); Date dataFim = risco.getData_fim(); isTratado = hasValue( resp ) && hasValue( por ) && hasValue( rec ) && hasValue( dataInicio ) && hasValue( dataFim ); break; } case Global.DIRECTOR_LOJA : { String parecer = risco.getParecer_dl(); isTratado = hasValue( parecer ); break; } case Global.DIRECTOR_NACIONAL_SEGURANCA : { String parecer = risco.getParecer_dns(); isTratado = hasValue( parecer ); break; } case Global.TECNICO_HS : { String verify = risco.getVerificacao_siprp(); isTratado = hasValue( verify ); List< Medida > medidas = risco.getMedidas(); for ( int i = 0; i < medidas.size() && isTratado; i++ ) { Medida m = medidas.get( i ); Integer estadoMedida = m.getValidarMedidaId(); isTratado &= estadoMedida != null; } break; } } } return isTratado; } }