Hay varias porciones de código y tareas que debemos repetir en varios programas Java, sin importar de qué se traten funcionalmente. Muchas veces el JDK nos es de ayuda, pero otras tantas veces necesitamos métodos "utilitarios" que no están por ningún lado en el JDK... y en consecuencia terminamos programando estas funciones "a mano" para cada proyecto.
Aquí es donde aparece Apache Commons Lang para ayudarnos con una gran cantidad de clases utilitarias.
Introducción a Apache Commons Lang
Apache Commons Lang, un compendio de clases utilitarias con montones de métodos para manipular a las clases estándar de Java. Este componente brinda muchas utilidades para el API de java.lang, especialmente métodos de manipulación para String, números, reflexión de objetos, creación y serialización. También brinda algunas mejoras básicas para java.util.Date y un conjunto de utilidades para construir métodos básicos, como el hashCode, toString y equals.
A continuación vamos a ver algunos ejemplos básicos de Apache Commons Lang.
StringUtils: manipulando a String
La clase org.apache.commons.lang.StringUtils tiene operaciones sobre String que son seguros de usar con un null. Entre los métodos más importantes de esta clase se pueden nombrar:
- isEmpty / isBlank - comprueba si un String contiene texto.
- trim / strip - quita los espacios al principio y final de un texto.
- equals - compara dos String, y se puede usar con null.
- replace / overlay - busca una cadena dentro de un String y lo reemplaza con otro.
- countMatches - cuenta la cantidad de ocurrencias de un String dentro de otro.
- abbreviate - abrevia la longitud de un String usando puntos suspensivos.
Ejemplos
//imprime "Habia una..." System.out.println(StringUtils.abbreviate("Habia una vez", 8)); //imprime "Chau mundo, Chau mundo" System.out.println(StringUtils.replace("Hola mundo, Hola mundo", "Hola", "Chau")); //imprime "- hola -" System.out.println("-" + StringUtils.center("hola", 20) + "-");
Otra clase utilitaria para manipular String pero a nivel de "palabra" es org.apache.commons.lang.WordUtils.
ArrayUtils: manipulando a arrays
La clase org.apache.commons.lang.ArrayUtils tiene operaciones sobre arrays, arrays de primitivos (como int[]) y arrays de wrappers de primitivos (como Integer[]).
Los métodos de esta clase permiten agregar y quitar elementos de un array, buscar y compararlos.
Ejemplos
String[] nombres = new String[0]; int[] edades = new int[] {29, 28, 20}; //imprime "true" System.out.println(ArrayUtils.isEmpty(nombres)); //agrega elementos a un array nombres = (String[]) ArrayUtils.add(nombres, "Zim"); nombres = (String[]) ArrayUtils.add(nombres, "GIR"); //imprime "2" System.out.println(nombres.length); //convierte un array primitivo en su equivalente en objetos Integer[] edadesInteger = ArrayUtils.toObject(edades); //imprime "3" System.out.println(edadesInteger.length); //clona un array Integer[] otrasEdades = (Integer[]) ArrayUtils.clone(edadesInteger); //agrega los elementos de un array a otro Integer[] todasEdades = (Integer[]) ArrayUtils.addAll(otrasEdades, edadesInteger); //imprime "6" System.out.println(todasEdades.length); //imprime "true" System.out.println(ArrayUtils.contains(nombres, "GIR")); //imprime "1" System.out.println(ArrayUtils.indexOf(nombres, "GIR"));
Validate: realizando validaciones
La clase org.apache.commons.lang.Validate asiste la validación de argumentos. En caso de que una validación falle, tira una IllegalArgumentException (con un posible mensaje personalizado).
Ejemplo
//valida si el primitivo "param" es mayor a cero Validate.isTrue(param > 0, "El parametro tiene que ser menor a cero") //valida si un array o Collection son vacios Validate.notEmpty(parametros); //valida si un array o Collection contiene elementos nulos Validate.noNullElements(parametros, "Todos los parametros son obligatorios")
StringEscapeUtils: escapando caracteres especiales
La clase org.apache.commons.lang.StringEscapeUtils se encarga de escapar y des-escapar caracteres especiales de un String para Java, JavaScript, HTML, XML y SQL. Algunos de sus métodos:
- escapeJava - escapa un String usando las reglas de Java. Por ejemplo, un tab se convierte en \\t, y las comillas dobles en \\"
- escapeHtml - escapa un String usando entidades de HTML. Por ejemplo, el String computación se convierte en computación
- escapeXml - escapa un String usando entidades de XML.
Ejemplo
//imprime "<planeta>Júpiter</planeta>" String xml = "<planeta>Júpiter</planeta>"; System.out.println(StringEscapeUtils.escapeXml(xml));
Conclusión
Las utilidades de Apache Commons Lang resuelven muchos problemas que se repiten en diversos programas Java, y nos permiten ahorrar tiempo y esfuerzo en crear código que termina siendo repetitivo.
En este artículo vimos algunas de todas las utilidades de Apache Commons Lang, en particular las que se incluyen en el paquete org.apache.commons.lang. En próximos artículos vamos a repasar a otras de las utilidades que nos brinda esta librería.