package com.ejie.m62fb.utils.sql;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import com.ejie.m62fb.spi.eu.DateFormatProvider_eu;
import com.ejie.m62fb.utils.constants.AppConstantes;

/**
 * Clase de utilidades.
 * 
XXXX
 */
public class Utilidades {

	/**
	 * Devuelve true en caso de que la cadena sea: <li><b>null</b></li><li>
	 * <b>length == 0</b></li>.<br>
	 * 
	 * @param cadena
	 *            String
	 * @return Boolean
	 */
	public static Boolean isEmpty(String cadena) {
		return cadena == null || cadena.trim().length() == 0;
	}

	/**
	 * Devuelve true en caso de que la lista sea: <li><b>null</b></li><li>
	 * <b>length == 0</b></li>.<br>
	 * 
	 * @param lista
	 *            List<?>
	 * @return Boolean
	 */
	public static Boolean isEmptyList(List<?> lista) {
		return lista == null || lista.isEmpty();
	}

	/**
	 * Parsea un String que contiene un xml a un Document
	 * 
	 * @param strXml
	 *            String
	 * @return Document
	 * @throws IOException
	 *             e
	 * @throws SAXException
	 *             e
	 * @throws ParserConfigurationException
	 *             e
	 * @throws UnsupportedEncodingException
	 *             e
	 */
	public static Document parseStringToDocument(String strXml)
			throws UnsupportedEncodingException, ParserConfigurationException,
			SAXException, IOException {
		DocumentBuilder builder = DocumentBuilderFactory.newInstance()
				.newDocumentBuilder();
		Document xmlDocument = builder.parse(new ByteArrayInputStream(strXml
				.getBytes("utf-8")));
		return xmlDocument;
	}

	public static String formatFechaReport(Date fecha, Locale locale) {
		StringBuilder fechaSb = new StringBuilder();

		String fechaStr = DateFormat.getDateInstance(DateFormat.LONG, locale)
				.format(fecha);

		if (AppConstantes.EU.equals(locale.getLanguage())) {
			fechaSb.append("Vitoria-Gasteiz, ");
			DateFormatProvider_eu  dfpEU = new DateFormatProvider_eu();
			fechaSb.append(dfpEU.getDateInstance(DateFormat.LONG, locale).format(fecha));
			fechaSb.append("n");
		} else {
			fechaSb.append("En Vitoria-Gasteiz, a ");
			fechaSb.append(fechaStr);
		}

		return fechaSb.toString();
	}
}