package br.com.citframework.util;
import java.sql.Timestamp;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* Utilit�rio para trabalhar com datas gregorianas no padr�o XML, conforme <a href="http://www.w3.org/TR/xmlschema-2/#isoformats">W3C XML Schema 1.0 Part 2, Appendix D,
* <i>ISO 8601 Date and Time Formats</i></a>
*
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 01/10/2014
*
*/
public final class UtilXMLDate {
private static final Logger LOGGER = Logger.getLogger(UtilXMLDate.class.getName());
private UtilXMLDate() {}
/**
* Converte uma data para o formato de data XML
*
* @param date
* data a ser convertida
* @return {@link XMLGregorianCalendar}
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 01/10/2014
*/
public static XMLGregorianCalendar toXMLGregorianCalendar(final Date date) {
Assert.notNull(date, "Date must not be null.");
final GregorianCalendar gCalendar = new GregorianCalendar();
gCalendar.setTime(date);
XMLGregorianCalendar xmlCalendar = null;
try {
xmlCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gCalendar);
} catch (final DatatypeConfigurationException e) {
LOGGER.log(Level.SEVERE, e.getMessage(), e);
}
return xmlCalendar;
}
/**
* Converte uma data {@link XMLGregorianCalendar} para {@link Date}
*
* @param calendar
* data XML a ser convertida
* @return {@link Date}
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 01/10/2014
*/
public static Date toDate(final XMLGregorianCalendar calendar) {
Assert.notNull(calendar, "XML Calendar must not be null.");
return calendar.toGregorianCalendar().getTime();
}
/**
* Converte uma data {@link XMLGregorianCalendar} para {@link Timestamp}
*
* @param calendar
* data XML a ser convertida
* @return {@link Timestamp}
* @author bruno.ribeiro - <a href="mailto:bruno.ribeiro@centrait.com.br">bruno.ribeiro@centrait.com.br</a>
* @since 06/10/2014
*/
public static Timestamp toTimeStamp(final XMLGregorianCalendar calendar) {
final Date date = toDate(calendar);
return new Timestamp(date.getTime());
}
}