Apache Commons Lang

0
12723

Apache Commons Lang

Introducción

Commons Lang es un proyecto de Jakarta que extiende la funcionalidad del
paquete estándar java.lang.

Nos proporciona un gran número de clases que nos hacen ahorrar tiempo en el
desarrollo de nuestros proyectos.

En este tutorial voy a comentar las clases y métodos que a mi personalmente
me han parecido más interesantes. Para obtener una referencia más completa y
detallada sobre el paquete puede dirigirse a la web del
proyecto

Un ejemplo del uso de Commons Lang

Voy a escribir un ejemplo autocomentado con estos métodos que a mi
personalmente me parecieron más útiles en el día a día del proceso de desarrollo
de software.

package com.autentia.tutoriales.commonsLang;

import java.util.ArrayList;
import java.util.GregorianCalendar;
import org.apache.commons.lang.*;
import org.apache.commons.lang.mutable.MutableInt;
import org.apache.commons.lang.time.*;

/**
 * Ejemplo del uso de la librería Commons Lang
 * @author Carlos García. Autentia.
 */
public class JakartaCommonsLangExample {

	public static void main(String[] args) {
		String[] nombres = new String[0];
		int[]	 edades	 = new int[] {29, 28};
		
		// 1) Detecta si el array está vacio. Imprimiría true
		System.out.println(ArrayUtils.isEmpty(nombres));
		
		// 2) Añade dos elementos a un array.
		nombres = (String[]) ArrayUtils.add(nombres, "Carlos");
		nombres = (String[]) ArrayUtils.add(nombres, "Gema");
		System.out.println(nombres[0]);	// Imprimirá: Carlos
		
		// 3) Detecta si el array está vacio. Imprimiría false
		System.out.println(ArrayUtils.isEmpty(nombres));
		
		// 4) Convertimos de array de tipos primitivos a array de Objetos, en este caso 
   			devolvería un Integer[] (Esta sobrecargado para todos los tipos primitivos)
		Integer[] values = ArrayUtils.toObject(edades);
		System.out.println(values[0]);	// Imprimirá: 29
		
		// 5) Creamos una copia del array
		String[] nombres2 = (String[]) ArrayUtils.clone(nombres);
		
		// 6) Crea un array a partir de los elementos de dos arrays.
		String[] p2 = (String[]) ArrayUtils.addAll(nombres, nombres2);
		System.out.println(p2[0] + " " + p2[1] + " " + p2[2] + " " + p2[3]); 
		// Carlos, Gema, Carlos, Gema
	
		// 7) Vemos si un array tiene un elemento. Imprimiría: false
		System.out.println( ArrayUtils.contains( p2, "Jaime") ); 
		
		// 8) Buscamos la primera aparición de un elemento. Imprimiría: 1
		System.out.println( ArrayUtils.indexOf( p2, "Gema") ); 		
	
		// 8) Buscamos la última aparición de un elemento. Imprimiría: 3
		System.out.println( ArrayUtils.lastIndexOf( p2, "Gema") ); 	
		
		// 9: Abreviamos una cadena. Imprimiría: En un l...
		System.out.println(StringUtils.abbreviate("En un lugar de la mancha", 10));

		// 10: Elimina los saltos de linea (\r o \n o \r\n) que haya al final de una cadena.
		System.out.println(StringUtils.chomp("Linea1\n"));

		// 11: Imprimiría "A    "
		System.out.println(StringUtils.rightPad("A", 5)); 
        
		// 12: Crea un String con todos los elementos de un Array: Carlos*Gema*Carlos*Gema
		System.out.println(StringUtils.join(p2, '*'));
		
		// 13: Métodos para codificación de caracteres. Imprimiría true
		System.out.println(CharEncoding.isSupported("utf8"));
		
		GregorianCalendar c1 = new GregorianCalendar(13, 12, 1976);
		GregorianCalendar c2 = new GregorianCalendar(14, 12, 1976);
		
		// 14: Mira si dos Calendar son iguales sin comparar la hora. Imprimirá: false
		System.out.println(DateUtils.isSameDay(c1, c2));

		// 15: Convertimos milisegundos a Horas, minutos, segundos: Imprimiría: 1 0 1
		System.out.println(DurationFormatUtils.formatDuration(3601000, "H m s"));
		
		// 16: Wrappers que pueden ser modificados para los tipos primitivos.
		MutableInt n1 = new MutableInt(55);
		n1.setValue(4);
		System.out.println(n1);	// Imprimiría: 4
		
		// 17: Creamos un Integer a partir de representación en base 16.
		Integer n2 = org.apache.commons.lang.math.NumberUtils.createInteger("0xA");
		System.out.println(n2.intValue());
		
		// 18: Validación de un parámetro. Si es menor se generará una 
			java.lang.IllegalArgumentException 
			//con el mensaje: "El parámetro debe ser positivo: <elValorDeLaVariable>"
		int	i = 10;
		Validate.isTrue(i < 0, "El parámetro debe ser positivo: ", i);
		
		// 19: Validación de un parámetro. Si es null se generará una 
			java.lang.IllegalArgumentException
		String name = null;
		Validate.notNull(name, "No ha especificado el parámetro nombre");


		// 20: Validamos que todos los elementos de una colección sean de tipo String 
		ArrayList names = new ArrayList();
		names.add("1");
		names.add(new Integer(22));
		Validate.allElementsOfType(names, String.class, "Datos incorrectos");
		
		// 21: Validamos que la colección (o un array) no sea null ni tenga elementos que sean null. 
			// Generará un IllegalArgumentException en caso de que los tenga 
		Validate.noNullElements(names, "La colección no puede tener elementos null");
		
		
		// 22: Capitaliza una cadena. Imprimiría: Autentia Real Business Solutions. 
		System.out.println(WordUtils.capitalize("autentia real business solutions"));
		
		// 23: Escapa una cadena para poder ser usada en cadenas XML: 
			// Imprimiría <datos>edad > 10 && tipo=niño</datos>
		String xml = StringEscapeUtils.escapeXml("edad > 10 && tipo=niño");
		System.out.println("<datos>" + xml + "</datos>");

		// 24: Desescapa una cadena desde formato xml. Imprimiría: edad > 10 && tipo=niño
		System.out.println(StringEscapeUtils.unescapeXml(xml));		
	}
}

Conclusiones

Como veis este tutorial no tiene una elevada complejidad ni explica
tecnologías complejas, pero creo que este API es interesante y puede ahorrar
tiempo en el desarrollo de cualquier proyecto.

No obstante, en Autentia,
empresa en la cual trabajo nos preocupamos por estar informado sobre los nuevos
APIs y tecnologías disponibles en el mercado y somos partidarios de la
compartición del conocimiento asi que aquí teneis un poquito más de nuestra
aportación a nuestros lectores.

Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

cgpcosmad@gmail.com

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad