Inicio > Java, Proyectos > JQL (Java Query Language)

JQL (Java Query Language)

Hace un tiempo atrás conocí YQL, un servicio de Yahoo! que permite hacer consultas tipo SQL a sus APIs o a sitios webs… Buscando algo así para Java no encontré nada parecido, por lo que empece a hacerlo yo. El resultado fueron unas cuantas lineas de código que permiten filtrar ,manipular y unificar datos de páginas Web , simplemente con una consulta tipo SQL muy similar a YQL.

Por ejemplo si quisiera filtar los datos de una página web debería usar una conexión, obtener la página , filtarla usando expresiones regulares y devolver los datos que quisiera. Con ésta librería es tan simple como crear una consulta SQL:

Ejemplo:
Acá obtengo los resultados de búsqueda de goear.com

//Creo la consulta SQL
String sql = "SELECT href,title FROM html WHERE url='http://goear.com/search.php?q=rafaga' AND xpath=\"//a[@class='b1']\"";
//Creo un objeto de la clase JQL y le paso como parametro la query sql y el tipo que quiero que devuelva (JSON)
JQL jql = new JQL(sql,JQLResultType.JSON);
//Agrego un listener para que sea lanzado cuando me devuelva los resultados
jql.addJQLResultListener(new JQLResultListener() {
	//Implemento el método jqlResult para obtener los resultados
	public void jqlResult(JQLResultEvent event) {
	    //Imprimo los resultados de mi consulta
	    System.out.println(event.getJqlResult());
	}
});
//creo un hilo y le paso como parametro el objeto JQL
Thread th = new Thread(jql);
//lanzo el hilo
th.start();

Simplemente Selecciono el href y el titulo de los links de goear donde la url de donde sacare esos datos sea la página de goear y le paso el xpath de donde están los elementos que quiero obtener. Al hacer correr ese codigo me devuelve un String con JSON listo para ser manipulado:

run:
{
        "query": {
        "count": "10",
        "created": "2010-05-23T10:19:48Z",
        "lang": "en-US",
        "diagnostics": {
                "url": {
                        "execution-time": "4072",
                        "proxy": "DEFAULT",
                        "content": "http://goear.com/search.php?q=rafaga"
                }
        },
        "results": {
                "a": [
                        {"href":"listen/c77464e/rafaga-radio-andalucia-(1)-radio-andalucia-informacion","title":"Escuchar Rafaga Radio Andalucia (1) de radio andalucia informacion"},
                        {"href":"listen/6d87274/una-rafaga-de-amor-rafaga","title":"Escuchar Una rafaga de amor de rafaga"},
                        {"href":"listen/fd1b84c/una-rafaga-de-amor-rafaga","title":"Escuchar Una Rafaga De Amor de rafaga"},
                        {"href":"listen/3b043de/jambo-jambo---rafaga-sunshine-rafaga-sunshine","title":"Escuchar JAMBO JAMBO - Rafaga Sunshine de rafaga sunshine"},
                        {"href":"listen/1dbcd0b/una-rafaga-de-amor-rafaga","title":"Escuchar una rafaga de amor de rafaga"},
                        {"href":"listen/71b1c55/una-rafaga-de-amor---calidad-media---faviomundo.pe.kz-rafaga","title":"Escuchar Una Rafaga De Amor - Calidad Media - FavioMundo.Pe.Kz de rafaga"},
                        {"href":"listen/9ff4361/una-rafaga-de-amorr-rafaga","title":"Escuchar una rafaga de amorr de rafaga"},
                        {"href":"listen/b9cdad7/rafaga-feat-korekt---sabes(((-www.robney.com.pe-)))-rafaga-feat-korekt---sabes","title":"Escuchar Rafaga Feat Korekt - Sabes((( wWw.Robney.CoM.Pe ))) de Rafaga Feat Korekt - Sabes"},
                        {"href":"listen/1286fa6/rafaga---mentirosa-(danny-romero-remix)-rafaga---mentirosa-(danny-romero-remix)","title":"Escuchar Rafaga - Mentirosa (Danny Romero Remix) de Rafaga - Mentirosa (Danny Romero Remix)"},
                        {"href":"listen/b229d9c/no-te-vallas-remix-rafaga-dj-efexts-rafaga-dj-efexts","title":"Escuchar No Te Vallas Remix Rafaga Dj Efexts de Rafaga Dj Efexts"}
                ]
        }
        }
}

La librería solo es un prototipo de lo que va a ser. La idea es poder obtener Objetos Java como Map o Document para manipularlo aun mas fácil desde Java.

Además se podrá definir el método HTTP de la consulta (GET o POST) para aumentar aun mas su funcionalidad. La idea es poder hacer la mayoría de los comando SQL que funcionen en JQL.

Bueno acá les dejo el link de la librería si quieres aportar:
http://kenai.com/projects/javaquerylanguage/

PD: El código esta muy desordenado D:

Saludos!

ACTUALIZACIÓN 01 (25/05/2010):
– Puede devolver Map y String con JSON.
– Ordenado el Código y programado Orientado a Objetos.
– Mejorado el codigo para parsear las consultas

Categorías:Java, Proyectos Etiquetas: , , , ,
  1. estebanfuentealba
    mayo 23, 2010 a las 4:45 pm

    Ni se noto que la librería es para Mp3Spider xD

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: