/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.xslt.functions.portal;
import java.util.Date;
import net.sf.saxon.expr.XPathContext;
import net.sf.saxon.om.Item;
import net.sf.saxon.om.SequenceIterator;
import net.sf.saxon.trans.XPathException;
import net.sf.saxon.value.DateTimeValue;
import net.sf.saxon.value.SequenceType;
import com.enonic.cms.core.xslt.functions.AbstractXsltFunctionCall;
public class DateTimeFunction
extends AbstractPortalFunction
{
private final class Call
extends AbstractXsltFunctionCall
{
@Override
protected Item call( final XPathContext context, final SequenceIterator[] args )
throws XPathException
{
final String value = toSingleString( args[0] );
final Date date;
try
{
date = getPortalFunctions().dateTime( value );
}
catch ( Exception e )
{
throw new XPathException( "Cannot parse date: " + value );
}
return DateTimeValue.fromJavaDate( date );
}
}
public DateTimeFunction()
{
super( "dateTime" );
setMinimumNumberOfArguments( 1 );
setMaximumNumberOfArguments( 1 );
setResultType( SequenceType.ATOMIC_SEQUENCE );
}
@Override
protected AbstractXsltFunctionCall createCall()
{
return new Call();
}
}