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.
SIPRP/trunk/PlanosActuacao/src/java/db/providers/RiscoLogic.java

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;
}
}