Implemented adujst-time-to-timezone

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/739a2a39
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/739a2a39
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/739a2a39

Branch: refs/heads/master
Commit: 739a2a39d3c32c3b41a5c6f4095004492cb96d86
Parents: 5dcb82b
Author: ales004 <[email protected]>
Authored: Sat Jun 4 20:37:25 2016 +0200
Committer: ales004 <[email protected]>
Committed: Sat Jun 4 20:37:25 2016 +0200

----------------------------------------------------------------------
 .../jena/sparql/expr/nodevalue/XSDFuncOp.java   |  8 +++++--
 .../jena/sparql/function/StandardFunctions.java |  1 +
 .../apache/jena/sparql/expr/TestFunctions.java  | 22 ++++++++++++++++++++
 3 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/739a2a39/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
index f00d564..785817f 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
@@ -1556,8 +1556,8 @@ public class XSDFuncOp
         if(nv1 == null)
             return null;
 
-        if(!nv1.isDateTime() && !nv1.isDate()){
-            throw new ExprEvalException("Not a valid date or datetime:"+nv1);
+        if(!nv1.isDateTime() && !nv1.isDate() && !nv1.isTime()){
+            throw new ExprEvalException("Not a valid date, datetime or 
time:"+nv1);
         }
 
         XMLGregorianCalendar calValue = nv1.getDateTime();
@@ -1575,6 +1575,8 @@ public class XSDFuncOp
                     calValue.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
                     if(nv1.isDateTime())
                         return NodeValue.makeDateTime(calValue);
+                    else if(nv1.isTime())
+                        return 
NodeValue.makeNode(calValue.toXMLFormat(),XSDDatatype.XSDtime);
                     else
                         return NodeValue.makeDate(calValue);
                 }
@@ -1595,6 +1597,8 @@ public class XSDFuncOp
         calValue.setTimezone(tzOffset);
         if(nv1.isDateTime())
             return NodeValue.makeDateTime(calValue);
+        else if(nv1.isTime())
+            return 
NodeValue.makeNode(calValue.toXMLFormat(),XSDDatatype.XSDtime);
         else
             return NodeValue.makeDate(calValue);
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/739a2a39/jena-arq/src/main/java/org/apache/jena/sparql/function/StandardFunctions.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/function/StandardFunctions.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/function/StandardFunctions.java
index adecc95..81ed75c 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/function/StandardFunctions.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/function/StandardFunctions.java
@@ -168,6 +168,7 @@ public class StandardFunctions
 //        9.6.2 fn:adjust-date-to-timezone
         add(registry, xfn+"adjust-date-to-timezone",  
FN_AdjustDatetimeToTimezone.class) ;
 //        9.6.3 fn:adjust-time-to-timezone
+        add(registry, xfn+"adjust-time-to-timezone",  
FN_AdjustDatetimeToTimezone.class) ;
 //        9.8.1 fn:format-dateTime
 //        9.8.2 fn:format-date
 //        9.8.3 fn:format-time

http://git-wip-us.apache.org/repos/asf/jena/blob/739a2a39/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
----------------------------------------------------------------------
diff --git 
a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java 
b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
index f0f252e..1830c5e 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
@@ -396,6 +396,28 @@ public class TestFunctions
     @Test public void 
exprAdjustDateToTz_05(){test("fn:adjust-date-to-timezone('2002-03-07'^^xsd:date,'')",NodeValue.makeDate("2002-03-07"));}
 
     @Test public void 
exprAdjustDateToTz_06(){test("fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date,'')",NodeValue.makeDate("2002-03-07"));}
+
+    @Test public void exprAdjustTimeToTz_01(){
+        testEqual(
+                "fn:adjust-time-to-timezone('10:00:00'^^xsd:time)",
+                
"fn:adjust-time-to-timezone('10:00:00'^^xsd:time,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+    }
+
+    @Test public void exprAdjustTimeToTz_02(){
+        testEqual(
+                "fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time)",
+                
"fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+    }
+
+    @Test public void 
exprAdjustTimeToTz_03(){test("fn:adjust-time-to-timezone('10:00:00'^^xsd:time,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeNode("10:00:00-10:00",XSDDatatype.XSDtime));}
+
+    @Test public void 
exprAdjustTimeToTz_04(){test("fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeNode("07:00:00-10:00",XSDDatatype.XSDtime));}
+
+    @Test public void 
exprAdjustTimeToTz_05(){test("fn:adjust-time-to-timezone('10:00:00'^^xsd:time,'')",NodeValue.makeNode("10:00:00",XSDDatatype.XSDtime));}
+
+    @Test public void 
exprAdjustTimeToTz_06(){test("fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time,'')",NodeValue.makeNode("10:00:00",XSDDatatype.XSDtime));}
+
+    @Test public void 
exprAdjustTimeToTz_07(){test("fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time,'PT10H'^^xsd:dayTimeDuration)",NodeValue.makeNode("03:00:00+10:00",XSDDatatype.XSDtime));}
     //@Test public void exprStrJoin()      { test("fn:string-join('a', 'b')", 
NodeValue.makeString("ab")) ; }
     
     @Test public void exprSameTerm1()     { test("sameTerm(1,1)",           
TRUE) ; }

Reply via email to