Buenas tardes compañeros computologos.
El caso que me esta abatiendo es el siguiente, lo he publicado en el foro de java pero no obtengo ideas. tengo una pantalla donde el usuario puede colocar un texto que puede verse como el where de un sql... esta restringido a colocar = Grupo , "and" , "or" , "(" , ")" y "not"
donde Grupo: es un conjunto de ciudades.
por ejemplo:
GRUPO1 AND (GRUPO2 OR GRUPO3 AND NOT (GRUPO4 AND GRUPO5))
Se valida que tenga la estructura correcta y solo puede colocar grupos existentes en la BBDD.
utilizando logica de conjuntos, el "and" me va a funcionar como interseccion y el "or" como union. Al resolver esta ecuacion (por decirle de alguna manera), me devolvera un conjunto de ciudades donde debere ir a settear una bandera.
La cuestion ese que no se como tratar esta ecuacion para sacarle el conjunto respuesta para luego hacer el setteo de la bandera -- "update tabla set bandera='YES' where ciudad in (conjunto respuesta)" --
He pensado en hacer un interprte o un analizador sintactico, o algo por el estilo, aunq aun no se como lo haria, pero por alli creo que iria la cosa si no encuentro algo adecuado.
Me han sugerido que utilice algun parser o algo asi. he encontrado uno llamado JSqlParser, aunque leyendo la documentacion y viendo los ejemplos no le entiendo mucho y no le he encontrado al utilidad para este caso particular.
Espero sus comentarios, sugerencias e ideas.
Gracias de antemano por su ayuda.
saludos.