Librairie JAVA requetage avec gestion des parentheses

chreezy-breezy -  
KX Messages postés 19031 Statut Modérateur -
Bonjour à tous,

Je viens vers vous car dans le cadre d'un stage je dois trouver une solution afin de permettre aux utilisateurs de taper des recherches en y incluant des opérateurs logiques.
Par exemple : ((toto AND tata) OR (titi AND NOT tata))
Cela me renverrait tout les résultats comprenant toto ET tata OU titi mais pas tata.
Plutot que de m'embeter à coder cette fonctionnalité, j'aimerai savoir si l'un d'entre vous connais une librairie JAVA capable de gérer ce type de recherche (gestion des parenthèses et des opérateurs logiques de base ==> AND, OR, NOT).

Merci par avance

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    En Java le mécanisme de ScriptEngine te permet d'utiliser des langages de script qui permettent de faire ça sans trop de soucis.

    Exemple en JavaScript :

    package test;
    
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    public class Test {
        public static void main(String[] args) throws ScriptException {
            ScriptEngine js = new ScriptEngineManager().getEngineByName("js");
            boolean toto = true, tata = true, titi = true;
            String script = "toto=" + toto + "; "
                          + "tata=" + tata + "; "
                          + "titi=" + titi + "; "
                          + "((toto && tata) || (titi && ! tata));";
            boolean result = (boolean) js.eval(script);
            System.out.println(result);
        }
    }
    0