Search in sources :

Example 1 with MesaDocumento

use of br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento in project balcaovirtual by trf2-jus-br.

the class PipelineTest method before.

@BeforeAll
public void before() {
    Gson gson = new Gson();
    InputStream isMinutas = this.getClass().getResourceAsStream("minutas.json");
    InputStreamReader rMinutas = new InputStreamReader(isMinutas);
    Mesa mMinutas = gson.fromJson(rMinutas, Mesa.class);
    minutas = new ArrayList<>();
    for (MesaDocumento doc : mMinutas.list) {
        minutas.add(new Minuta(doc));
    }
    InputStream isPadroes = this.getClass().getResourceAsStream("padroes.json");
    InputStreamReader rPadroes = new InputStreamReader(isPadroes);
    Mesa mPadroes = gson.fromJson(rPadroes, Mesa.class);
    padroes = new ArrayList<>();
    for (MesaDocumento doc : mPadroes.list) {
        padroes.add(new Minuta(doc));
    }
    PadraoUtils.pipeline(minutas, padroes);
}
Also used : MesaDocumento(br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento) Minuta(br.jus.trf2.balcaojus.util.PadraoUtils.Minuta) InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) Gson(com.google.gson.Gson) BeforeAll(org.junit.jupiter.api.BeforeAll)

Example 2 with MesaDocumento

use of br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento in project balcaovirtual by trf2-jus-br.

the class MesaIdGet method run.

@Override
public void run(Request req, Response resp, BalcaojusContext ctx) throws Exception {
    Usuario u = BalcaojusServlet.getPrincipal();
    if (!u.isInterno())
        throw new Exception("Mesas só podem ser acessadas por usuários internos");
    resp.list = new ArrayList<>();
    resp.status = new ArrayList<>();
    Map<String, SwaggerCallParameters> mapp = new HashMap<>();
    for (String system : Utils.getSystems()) {
        if (!u.usuarios.containsKey(system) || !"int".equals(u.usuarios.get(system).origem) || !system.contains(".eproc"))
            continue;
        IUsuarioUsernameLocalIdMesaId2DocumentosGet.Request q = new IUsuarioUsernameLocalIdMesaId2DocumentosGet.Request();
        q.username = u.usuario;
        mapp.put(system, new SwaggerCallParameters(system + " - listar minutas", Utils.getApiPassword(system), "GET", Utils.getApiUrl(system) + "/usuario/" + u.usuario + "/local/null/mesa/null/documentos", q, IUsuarioUsernameLocalIdMesaId2DocumentosGet.Response.class));
    }
    SwaggerMultipleCallResult mcr = null;
    mcr = SwaggerCall.callMultiple(mapp, 15000);
    resp.status = Utils.getStatus(mcr);
    for (String system : mcr.responses.keySet()) {
        IUsuarioUsernameLocalIdMesaId2DocumentosGet.Response r = (IUsuarioUsernameLocalIdMesaId2DocumentosGet.Response) mcr.responses.get(system);
        for (ISistemaProcessual.MesaDocumento a : r.list) {
            IBalcaojus.MesaDocumento i = new MesaDocumento();
            i.dataDeInclusao = a.dataDeInclusao;
            i.id = a.id;
            i.numeroDoProcesso = a.numeroDoProcesso;
            i.autor = Texto.maiusculasEMinusculas(a.autor);
            i.reu = Texto.maiusculasEMinusculas(a.reu);
            i.numeroDoDocumento = a.numeroDoDocumento;
            i.descricao = a.descricao;
            i.status = a.status;
            i.descricaoDoStatus = a.descricaoDoStatus;
            i.tipoDoDocumento = Texto.maiusculasEMinusculas(a.tipoDoDocumento);
            i.identificadorDoUsuarioQueIncluiu = a.identificadorDoUsuarioQueIncluiu;
            i.nomeDoUsuarioQueIncluiu = a.nomeDoUsuarioQueIncluiu;
            i.siglaDaUnidade = a.siglaDaUnidade;
            i.conteudo = a.conteudo;
            i.sistema = system;
            if (a.lembretes != null) {
                i.lembretes = new ArrayList<>();
                for (ISistemaProcessual.Lembrete j : a.lembretes) {
                    IBalcaojus.Lembrete lembrete = new IBalcaojus.Lembrete();
                    lembrete.id = j.id;
                    lembrete.dataDeInclusao = j.dataDeInclusao;
                    lembrete.conteudo = j.conteudo;
                    lembrete.identificadorDoUsuario = j.identificadorDoUsuario;
                    lembrete.nomeDoUsuario = j.nomeDoUsuario;
                    i.lembretes.add(lembrete);
                }
            }
            resp.list.add(i);
        }
    }
    // Pipeline para minuta-padrão
    if (resp.list.size() == 0)
        return;
    // Carregar padrões
    List<Minuta> padroes = new ArrayList<>();
    try (Dao dao = new Dao()) {
        List<Padrao> l = dao.obtemPadroes(u.usuario);
        for (Padrao i : l) {
            padroes.add(new Minuta(i.getPadrId().toString(), i.getPadrTxConteudo()));
        }
    }
    if (padroes.size() == 0)
        return;
    // Carregar Minutas
    List<Minuta> minutas = new ArrayList<>();
    for (MesaDocumento m : resp.list) {
        if (m.conteudo == null || m.conteudo.trim().isEmpty())
            continue;
        minutas.add(new Minuta(m));
    }
    // Processar similaridade
    NormalizedStringSimilarity metric = new SorensenDice();
    for (Minuta minuta : minutas) {
        for (Minuta padrao : padroes) {
            double coef = 0d;
            if (minuta.markdown.equals(padrao.markdown))
                coef = 1d;
            else
                coef = 0.99d * metric.similarity(minuta.markdownSimplificado, padrao.markdownSimplificado);
            if (coef > 0.75d) {
                if (minuta.similaridade == 0d || minuta.similaridade < coef) {
                    minuta.padrao = padrao;
                    minuta.similaridade = coef;
                }
            }
        }
    }
    for (Minuta minuta : minutas) {
        if (minuta.padrao == null)
            continue;
        minuta.calcularDiff();
        minuta.doc.similaridade = minuta.similaridade;
        minuta.doc.diferencas = minuta.htmlDiff;
        minuta.doc.idPadrao = minuta.padrao.id;
        System.out.println(minuta.markdownDiff);
        System.out.println(minuta.similaridade + " -> " + minuta.markdownSimplificado);
    }
}
Also used : Usuario(br.jus.trf2.balcaojus.AutenticarPost.Usuario) ISistemaProcessual(br.jus.trf2.sistemaprocessual.ISistemaProcessual) Padrao(br.jus.trf2.balcaojus.model.Padrao) HashMap(java.util.HashMap) MesaDocumento(br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento) SwaggerCallParameters(com.crivano.swaggerservlet.SwaggerCallParameters) ArrayList(java.util.ArrayList) SorensenDice(info.debatty.java.stringsimilarity.SorensenDice) NormalizedStringSimilarity(info.debatty.java.stringsimilarity.interfaces.NormalizedStringSimilarity) IUsuarioUsernameLocalIdMesaId2DocumentosGet(br.jus.trf2.sistemaprocessual.ISistemaProcessual.IUsuarioUsernameLocalIdMesaId2DocumentosGet) Minuta(br.jus.trf2.balcaojus.util.PadraoUtils.Minuta) MesaDocumento(br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento) SwaggerMultipleCallResult(com.crivano.swaggerservlet.SwaggerMultipleCallResult)

Aggregations

MesaDocumento (br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento)2 Minuta (br.jus.trf2.balcaojus.util.PadraoUtils.Minuta)2 Usuario (br.jus.trf2.balcaojus.AutenticarPost.Usuario)1 Padrao (br.jus.trf2.balcaojus.model.Padrao)1 ISistemaProcessual (br.jus.trf2.sistemaprocessual.ISistemaProcessual)1 IUsuarioUsernameLocalIdMesaId2DocumentosGet (br.jus.trf2.sistemaprocessual.ISistemaProcessual.IUsuarioUsernameLocalIdMesaId2DocumentosGet)1 SwaggerCallParameters (com.crivano.swaggerservlet.SwaggerCallParameters)1 SwaggerMultipleCallResult (com.crivano.swaggerservlet.SwaggerMultipleCallResult)1 Gson (com.google.gson.Gson)1 SorensenDice (info.debatty.java.stringsimilarity.SorensenDice)1 NormalizedStringSimilarity (info.debatty.java.stringsimilarity.interfaces.NormalizedStringSimilarity)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 BeforeAll (org.junit.jupiter.api.BeforeAll)1