¿Qué es jGit?

JGit es una implementación muy ligera en Java del sistema de control de versions Git.

Permite crear y clonar repositorios Git, crear branches, commits, tagear,…

Usarla es muy sencillo:

Añado la dependencia:

Y listo:

En este caso estoy clonando un repositorio público:

Si es un repositorio privado y tengo que estar autenticado:

Que es JsqlParser

JSqlParser (https://github.com/JSQLParser/JSqlParser) es un parseador de sentencias SQL, que permite descomponer sentencias en lenguaje SQL a un modelo de clases Java, y viceversa, construir sentencias SQL programáticamente, a desde el modelo de clases Java.

De manera que JSqlParser es muy útil cuando necesitamos, analizar, construir o preparar/modificar sentencias SQL en nuestra aplicación de forma programática.

Cubre el estándar SQL así como así como numerosas clausulas específicas de motores de bases de datos concretos como Oracle, SqlServer, MySQL o PostgreSQL. Por ejemplo, “+” de Oracle para hacer JOINS, “::” de PostgreSQL para hacer casts…

JSqlParser es un proyecto mantenido por una comunidad de usuarios en github, que constantemente incluye mejoras y resuelve bugs. Su código fuente se distribuye con licencia LGPL y Apache v2.

Para utilizar JSqlParser, podemos descargar el código fuente desde github y compilarlo con maven, o directamente añadirlo como dependencia maven a nuestro proyecto:

<dependency>
       <groupId>com.github.jsqlparser</groupId>
       <artifactId>jsqlparser</artifactId>
       <version>0.9.6</version>
</dependency>

y descargarlo desde el repositorio sonatype añadiéndolo a la sección de repositorios de nuestro proyecto (https://oss.sonatype.org/content/groups/public/)

 

Una vez incluida la librería en nuestro proyecto podemos empezar a trabajar con sentencias SQL mediante un modelo de clases Java, pudiendo:

Parsear sentencias simples:

Statement stmt = CCJSqlParserUtil.parse("SELECT * FROM tab1");

 

Parsear scripts:

Statements stmt = CCJSqlParserUtil.parseStatements("SELECT * FROM tab1; SELECT * FROM tab2");

 

Definir y parsear expresiones para utilizar en sentencias:

Expression expr = CCJSqlParserUtil.parseExpression("a*(5+mycolumn)");

 

Analizar programáticamente una sentencia parseada:


Statement statement = CCJSqlParserUtil.parse("SELECT * FROM MY_TABLE1");

Select selectStatement = (Select) statement;

TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();

List<String> tableList = tablesNamesFinder.getTableList(selectStatement);

·····················

Select select = (Select) CCJSqlParserUtil.parse("select a,b,c from test");

final AddAliasesVisitor instance = new AddAliasesVisitor();

select.getSelectBody().accept(instance);

 

Modificar programáticamente una sentencia parseada:

Select select = (Select) CCJSqlParserUtil.parse("select a from mytable");

SelectUtils.addExpression(select, new Column("b"));

 

Construir sentencias programáticamente:

Select select = SelectUtils.buildSelectFromTableAndExpressions(
new Table("mytable"), new Column("a"), new Column("b"));

 

Podemos encontrar más ejemplos de utilización en: https://github.com/JSQLParser/JSqlParser/wiki#examples

XDocReport: generando PDFs desde plantillas DOCX y ODT

XDocReport es un API Java open-source (licencia MIT) que permite generar informes en diversos formatos (PDF, XHTML) mergeando documentos/plantillas creados MS Office (docx), OpenOffice (odt) o LibreOffice (odt) con un modelo Java.

Veamos como funciona (ver link):

1. En mi plantilla creo variables (con sintaxis Velocity o FreeMarker), en este caso $name:

2. Cargo la plantilla y sobre mi contexto sustituyo mi variable para generar otro documento ODT:

3. Genero el documento en el formato adecuado, PDF en este caso:

XDoclet se integra con frameworks como Spring MVC: https://github.com/opensagres/xdocreport/wiki/XDocReportSpringMVC

Podéis descubrir un poco más sobre XDocReport aquí.

Su última versión es la 1.0.5, podéis ver usar las dependencias Maven necesarias aquí: https://github.com/opensagres/xdocreport/wiki/XDocReport105

(Seguro que a todos aquellos que habéis tenido que generar un PDF en base a una plantilla PDF en la que completar un conjunto de campos os resulta muy útil!!!

https://blog.codecentric.de/en/2010/08/pdf-generation-with-itext/)

¿Qué es HikariCP?

HikariCP es una librería Java que implementa un pool de conexiones JDBC muy ligero (70 Kb) y con “zero-overhead” (interesante esta lectura sobre algunos de sus ajustes).

En su web podéis encontrar un benchmark comparando varios pools Java:

Generando Formularios HTML desde Schemas JSON

Nunca pensé que habría tantas alternativas para generar formularios HTML desde Schemas JSON.

La primera fue la que me enseñó Jaime el otro día:

http://jeremydorn.com/json-editor/

aún con algunas limitaciones (includes,…) es bastante usable tal cual:

Pero luego vi esta: https://github.com/Textalk/angular-schema-form basada en AngularJS que tiene algo más de información además de addons que permiten renderizar campos (date-picker, color-picker y html editor) además de poder crear tus propios addons (Jaime, qué tal un DTO-picker 😀

Podéis ver un ejemplo aquí: http://textalk.github.io/angular-schema-form/examples/bootstrap-example.html

También tenemos JSON Form: http://developer.joshfire.com/doc/ref/jsonform y https://github.com/joshfire/jsonform que ofrece una gran documentación.

Otra sería esta: http://neyric.github.io/inputex/examples/json-schema.html muy sencilla de usar:

Otra muy interesante es

Alpaca (http://www.alpacajs.org) que además tiene el concepto de DataSource, soporta opciones, renderiza de diversas formas y tiene mucha documentación:

El formulario es bastante sofisticado:

¿Con cuál nos quedamos Jaime?

Charva: Toolkit Java para Terminales de Texto

CHARVAes un framework Java para presenter un interfaz de Usuario “gráfico” compuesto de menús, ventanas, diálogos, botones,… sobre un terminal ASCCI.

Ofrece un API basado en Swing lo que permite que sea muy sencillo programar en CHARVA si conocemos Swing, de hecho se puede construir en Swing con un IDE visual y luego convertirlo a CHARVA sólo cambiando los imports a "charva.awt y "charvax.swing" en lugar de los standard "java.awt" y "javax.swing”.

Así un interfaz AWT con este aspecto:

Con CHARVA se muestra así:

O en un Putty:

Aún no le veis la utilidad?…pues imaginaros un Linux sin entorno gráfico…por ejemplo una Raspberry!

Adiós YUI!!!

Leo en Genbetadev que YUI (Yahoo User Interface) cierra.

Más allá de que tenga todo el sentido en el momento actual, a mí que que lo he usado y me parecía una opción muy interesante (aunque no tan conocida como otras) me da cierta penilla. Mirad por ejemplo este post de 2010 o este otro de 2011.