Author: andy
Date: Wed Nov 13 10:03:20 2013
New Revision: 1541445
URL: http://svn.apache.org/r1541445
Log:
Fix handling of xsd:date when doing an indeterminate comparison (one timezone,
one non-timezone).
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1541445&r1=1541444&r2=1541445&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
Wed Nov 13 10:03:20 2013
@@ -921,7 +921,7 @@ public class XSDFuncOp
if ( x == XSDDateTime.INDETERMINATE )
{
- NodeValue nv3 = fixupDateTime(nv1) ;
+ NodeValue nv3 = ( nv1.isDate()) ? fixupDate(nv1) :
fixupDateTime(nv1) ;
if ( nv3 != null )
{
XMLGregorianCalendar dt3 = nv3.getDateTime() ;
@@ -931,7 +931,7 @@ public class XSDFuncOp
return x ;
}
- nv3 = fixupDateTime(nv2) ;
+ nv3 = ( nv2.isDate()) ? fixupDate(nv2) : fixupDateTime(nv2) ;
if ( nv3 != null )
{
XMLGregorianCalendar dt3 = nv3.getDateTime() ;
@@ -944,10 +944,10 @@ public class XSDFuncOp
throw new ARQInternalErrorException("Failed to fixup dateTimes") ;
}
return x ;
-
}
// // This only differs by some "dateTime" => "date"
+// // Comparison is done on the dateTime start point of an xsd:date so this
code is not needed.
// private static int compareDateFO(NodeValue nv1, NodeValue nv2)
// {
// XMLGregorianCalendar dt1 = nv1.getDateTime() ;
@@ -981,6 +981,14 @@ public class XSDFuncOp
// return x ;
// }
+ private static NodeValue fixupDateOrDateTime(NodeValue nv) {
+ if ( nv.isDateTime() )
+ return fixupDateTime(nv);
+ if ( nv.isDate() )
+ return fixupDate(nv);
+ throw new ARQInternalErrorException("Attempt to fixupDateOrDateTime on
"+nv);
+ }
+
private static NodeValue fixupDateTime(NodeValue nv)
{
DateTimeStruct dts =
DateTimeStruct.parseDateTime(nv.asNode().getLiteralLexicalForm()) ;