Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions siga-cp/src/main/java/br/gov/jfrj/siga/cp/CpServico.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,18 @@ public class CpServico extends AbstractCpServico implements Selecionavel {

public static final String ACESSO_WEBSERVICE = "SPSEMPAPEL-SIGA-WS";

public static final String SIGLA_MODULO_ADICIONAL_QUALIFICACAO = "SIGA-AQ";
public static final String SIGLA_MODULO_BANCO_PERMUTAS= "SIGA-BDP";
public static final String SIGLA_MODULO_BENEFICIOS = "SIGA-BNF";
public static final String SIGLA_MODULO_CADASTRO = "SIGA-CAD";
public static final String SIGLA_MODULO_CONSULTAS = "SIGA-CST";
public static final String SIGLA_MODULO_DOCENCIA = "SIGA-DCN";
public static final String SIGLA_MODULO_LOTACAO = "SIGA-LOT";
public static final String SIGLA_MODULO_TERCEIRIZADOS = "SIGA-TERC";
public static final String SIGLA_MODULO_TREINAMENTO = "SIGA-TRN";
public static final String SIGLA_MODULO_TRANSPORTE = "SIGA-TP";
public static final String SIGLA_MODULO_WORKFLOW = "SIGA-WF";


public CpServico() {

Expand Down
44 changes: 20 additions & 24 deletions siga-cp/src/main/java/br/gov/jfrj/siga/cp/bl/CpConfiguracaoBL.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,26 @@ public class CpConfiguracaoBL {
siglasOrgaosOcultados.add(SIGLA_ORGAO_PDS);
SIGLAS_ORGAOS_OCULTADOS = Collections.unmodifiableSortedSet(siglasOrgaosAdministradores);
}



public static final SortedSet<String> MODULOS_NAO_UTILIZADOS;
static {
final SortedSet<String> siglasModulosNaoUtilizados = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_ADICIONAL_QUALIFICACAO);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_BANCO_PERMUTAS);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_BENEFICIOS);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_CADASTRO);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_CONSULTAS);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_DOCENCIA);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_LOTACAO);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_TERCEIRIZADOS);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_TREINAMENTO);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_TRANSPORTE);
siglasModulosNaoUtilizados.add(CpServico.SIGLA_MODULO_WORKFLOW);

MODULOS_NAO_UTILIZADOS = Collections.unmodifiableSortedSet(siglasModulosNaoUtilizados);
}

private final static org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(CpConfiguracaoBL.class);

protected Date dtUltimaAtualizacaoCache = null;
Expand Down Expand Up @@ -772,29 +791,6 @@ public boolean podeUtilizarServicoPorConfiguracao(DpPessoa titular, DpLotacao lo
CpServico srvRecuperado = null;

srvRecuperado = dao().consultarCpServicoPorChave(servicoPath);
if (srvRecuperado == null) {
// Constroi uma linha completa, tipo full path
for (String s : servicoPath.split(";")) {
String[] asParts = s.split(":"); // Separa a sigla da
// descrição
String sSigla = asParts[0];
srv = new CpServico();
srv.setSiglaServico(srvPai != null ? srvPai.getSigla() + "-" + sSigla : sSigla);
srv.setCpServicoPai(srvPai);
srvRecuperado = dao().consultarPorSigla(srv);
if (srvRecuperado == null) {
CpTipoServico tpsrv = dao().consultar(CpTipoServico.TIPO_CONFIG_SISTEMA, CpTipoServico.class, false);
String sDesc = (asParts.length > 1 ? asParts[1] : "");
srv.setDscServico(sDesc);
srv.setCpServicoPai(srvPai);
srv.setCpTipoServico(tpsrv);
ContextoPersistencia.begin();
dao().acrescentarServico(srv);
ContextoPersistencia.commit();
}
srvPai = srvRecuperado;
}
}
Comment on lines -775 to -797
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@caiosantos-codata não faço idéia se dá pra a gente remover isso. Eu sei que tem inclusive uma tabela no banco que usa essa forma de construir serviços: XXX;YYY;ZZZ etc... Qual a motivação pra isso? Como a gente garante que isso não vai causar problemas? Pode dar mais detalhes?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@michelrisucci-codata, sua preocupação faz sentido.

esse trecho é reponsável por recuperar serviços que não estão no cache, que é inicializado no método consultarCpServicoPorChave.O cache, por sua vez, é obtido a partir da tabela CpServico.

Entendi que isso foi uma forma de 'contornar' os serviços listados no banco. Naveguei no histórico de commits e não achei uma razao para isso.

Não há garantia total que não causará problemas. Porém, o risco é limitado já que a ideia é ocultar serviço que não são utilizados.

ficou mais claro?

return Cp.getInstance().getConf().podePorConfiguracao(titular, lotaTitular, srvRecuperado,
CpTipoConfiguracao.TIPO_CONFIG_UTILIZAR_SERVICO);
} catch (Exception e) {
Expand Down
25 changes: 24 additions & 1 deletion siga-cp/src/main/java/br/gov/jfrj/siga/dp/dao/CpDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@
import br.gov.jfrj.siga.cp.CpToken;
import br.gov.jfrj.siga.cp.CpUnidadeMedida;
import br.gov.jfrj.siga.cp.QCpIdentidade;
import br.gov.jfrj.siga.cp.QCpServico;
import br.gov.jfrj.siga.cp.bl.Cp;
import br.gov.jfrj.siga.cp.bl.CpConfiguracaoBL;
import br.gov.jfrj.siga.cp.bl.SituacaoFuncionalEnum;
Expand Down Expand Up @@ -160,6 +161,7 @@ public class CpDao extends ModeloDao {
private static final QDpFuncaoConfianca qDpFuncaoConfianca = QDpFuncaoConfianca.dpFuncaoConfianca;
private static final QDpCargo qDpCargo = QDpCargo.dpCargo;
private static final QDpLotacao qDpLotacao = QDpLotacao.dpLotacao;
private static final QCpServico qCpServico = QCpServico.cpServico;

protected final SigaDialect dialeto = SigaDialect.fromSystemProperty();

Expand Down Expand Up @@ -250,7 +252,7 @@ public CpOrgao consultarPorSigla(final CpOrgao o) {
public void inicializarCacheDeServicos() {
synchronized (CpDao.class) {
cacheServicos = new TreeMap<>();
List<CpServico> l = listarTodos(CpServico.class, "siglaServico");
List<CpServico> l = listarServicosAtivos();
for (CpServico s : l) {
cacheServicos.put(s.getSigla(), s);
}
Expand Down Expand Up @@ -2454,6 +2456,27 @@ public List<CpServico> listarServicosPorPai(CpServico servicoPai) {
q.where(cb().equal(c.get("cpServicoPai"), servicoPai));
return em().createQuery(q).getResultList();
}

public List<CpServico> listarServicos(com.querydsl.core.types.Predicate... predicate) {
final JPAQuery<CpServico> query = new JPAQueryFactory(em())
.select(qCpServico)
.from(qCpServico);

if (predicate != null) {
query.where(predicate);
}

return query.setHint(QueryHints.CACHEABLE, true)
.setHint(QueryHints.CACHE_REGION, CACHE_QUERY_HOURS)
.orderBy(qCpServico.siglaServico.asc())
.fetch();
}

public List<CpServico> listarServicosAtivos() throws AplicacaoException {
final QCpServico qCpServico = QCpServico.cpServico;
return this.listarServicos(
qCpServico.siglaServico.notIn(CpConfiguracaoBL.MODULOS_NAO_UTILIZADOS));
}

@SuppressWarnings("unchecked")
public List<CpTipoGrupo> listarTiposGrupo() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ private void listar(int idAbrangencia
List<CpServico> l = null;

if (servicoPai == null) {
l = dao().listarServicos();
l = dao().listarServicosAtivos();
} else {
l = new ArrayList<CpServico>();
// CpServico cpServicoPai = dao().consultarCpServicoPorChave(servicoPai);
Expand Down