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) ; }
