Search in sources :

Example 1 with NormalizedStringSimilarity

use of info.debatty.java.stringsimilarity.interfaces.NormalizedStringSimilarity 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)

Example 2 with NormalizedStringSimilarity

use of info.debatty.java.stringsimilarity.interfaces.NormalizedStringSimilarity in project balcaovirtual by trf2-jus-br.

the class PadraoUtils method pipeline.

public static void pipeline(List<Minuta> minutas, List<Minuta> padroes) {
    NormalizedStringSimilarity metric = new SorensenDice();
    for (Minuta minuta : minutas) {
        for (Minuta padrao : padroes) {
            double coef = metric.similarity(minuta.markdownSimplificado, padrao.markdownSimplificado);
            if (coef > 0.7d) {
                if (minuta.similaridade == 0d || minuta.similaridade < coef) {
                    minuta.padrao = padrao;
                    minuta.similaridade = coef;
                }
            }
        }
    }
    for (Minuta minuta : minutas) {
        System.out.println(minuta.similaridade + " -> " + minuta.markdownSimplificado);
        minuta.calcularDiff();
        if (minuta.htmlDiff != null)
            System.out.println(minuta.markdownDiff);
    }
}
Also used : SorensenDice(info.debatty.java.stringsimilarity.SorensenDice) NormalizedStringSimilarity(info.debatty.java.stringsimilarity.interfaces.NormalizedStringSimilarity)

Aggregations

SorensenDice (info.debatty.java.stringsimilarity.SorensenDice)2 NormalizedStringSimilarity (info.debatty.java.stringsimilarity.interfaces.NormalizedStringSimilarity)2 Usuario (br.jus.trf2.balcaojus.AutenticarPost.Usuario)1 MesaDocumento (br.jus.trf2.balcaojus.IBalcaojus.MesaDocumento)1 Padrao (br.jus.trf2.balcaojus.model.Padrao)1 Minuta (br.jus.trf2.balcaojus.util.PadraoUtils.Minuta)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 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1