forked from Coded/SIPRP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
2.7 KiB
133 lines
2.7 KiB
/*
|
|
* 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;
|
|
}
|
|
}
|