You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/06/10 12:52:54 UTC
[01/11] jena git commit: First implementation of
fn:adjust-dateTime-to-timezone.
Repository: jena
Updated Branches:
refs/heads/master 7f2dfed0a -> edba13136
First implementation of fn:adjust-dateTime-to-timezone.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/da73e967
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/da73e967
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/da73e967
Branch: refs/heads/master
Commit: da73e967b19f00f4d5f8b245079b9894331715db
Parents: f2ae5db
Author: ales004 <ci...@hotmail.com>
Authored: Sun May 29 19:13:47 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Sun May 29 19:13:47 2016 +0200
----------------------------------------------------------------------
.../jena/sparql/expr/nodevalue/XSDFuncOp.java | 61 +++++++++++++++++---
.../jena/sparql/function/StandardFunctions.java | 1 +
.../library/FN_AdjustDatetimeToTimezone.java | 55 ++++++++++++++++++
.../apache/jena/sparql/expr/TestFunctions.java | 38 +++++++++++-
4 files changed, 147 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/da73e967/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 817c20f..8b31d92 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
@@ -34,10 +34,7 @@ import static org.apache.jena.sparql.expr.nodevalue.NumericType.OP_INTEGER ;
import java.math.BigDecimal ;
import java.math.BigInteger ;
import java.text.Normalizer;
-import java.util.ArrayList;
-import java.util.HashSet ;
-import java.util.List ;
-import java.util.Set ;
+import java.util.*;
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
@@ -1426,10 +1423,9 @@ public class XSDFuncOp
return NodeValue.makeString(dts.timezone) ;
}
- public static NodeValue dtGetTimezone(NodeValue nv) {
- DateTimeStruct dts = parseAnyDT(nv) ;
+ private static NodeValue fromTimezoneToDuration(DateTimeStruct dts){
if ( dts == null || dts.timezone == null )
- throw new ExprEvalException("Not a datatype with a timezone: " + nv) ;
+ return null;
if ( "".equals(dts.timezone) )
return null ;
if ( "Z".equals(dts.timezone) ) {
@@ -1460,6 +1456,13 @@ public class XSDFuncOp
return NodeValue.makeNode(sb.toString(), null, XSDDatatype.XSD + "#dayTimeDuration") ;
}
+ public static NodeValue dtGetTimezone(NodeValue nv) {
+ DateTimeStruct dts = parseAnyDT(nv) ;
+ if ( dts == null || dts.timezone == null )
+ throw new ExprEvalException("Not a datatype with a timezone: " + nv) ;
+ return fromTimezoneToDuration(dts);
+ }
+
private static void digitsTwo(String s, int idx, StringBuilder sb, char indicator) {
if ( s.charAt(idx) == '0' ) {
idx++ ;
@@ -1554,4 +1557,48 @@ public class XSDFuncOp
// dur = ...
return dur ;
}
+
+ public static NodeValue adjustDatetimeToTimezone(NodeValue nv1,NodeValue nv2){
+ if(nv1 == null)
+ return null;
+
+ if(!nv1.isDateTime() && !nv1.isDate()){
+ throw new ExprEvalException("Not a valid date or datetime:"+nv1);
+ }
+ DateTimeStruct dts = parseAnyDT(nv1);
+ NodeValue inputTimezone = fromTimezoneToDuration(dts);
+ Boolean hasTz = inputTimezone == null ? false : true;
+ XMLGregorianCalendar calValue = nv1.getDateTime();
+ int inputOffset = 0;
+ if(hasTz){
+ Duration inputDuration = inputTimezone.getDuration();
+ inputOffset = inputDuration.getSign()*(inputDuration.getMinutes() + 60*inputDuration.getHours());
+ }
+
+ int tzOffset = TimeZone.getDefault().getRawOffset() / (1000*60);
+ if(nv2 != null){
+ if(!nv2.isDuration()) {
+ String nv2StrValue = nv2.getString();
+ if(nv2StrValue.equals("")){
+ calValue.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
+ if(nv1.isDateTime())
+ return NodeValue.makeDateTime(calValue);
+ else
+ return NodeValue.makeDate(calValue);
+ }
+ throw new ExprEvalException("Not a valid duration:" + nv2);
+ }
+ Duration tzDuration = nv2.getDuration();
+ tzOffset = tzDuration.getSign()*(tzDuration.getMinutes() + 60*tzDuration.getHours());
+ }
+ String tzSign = (tzOffset-inputOffset) > 0 ? "" : "-";
+ Duration durToAdd = NodeValue.makeDuration(tzSign+"PT"+java.lang.Math.abs(tzOffset-inputOffset)+"M").getDuration();
+ if(hasTz)
+ calValue.add(durToAdd);
+ calValue.setTimezone(tzOffset);
+ if(nv1.isDateTime())
+ return NodeValue.makeDateTime(calValue);
+ else
+ return NodeValue.makeDate(calValue);
+ }
}
http://git-wip-us.apache.org/repos/asf/jena/blob/da73e967/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 9594059..e8b014d 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
@@ -164,6 +164,7 @@ public class StandardFunctions
// XQ/XP 3.
// 9.6.1 fn:adjust-dateTime-to-timezone
+ add(registry, xfn+"adjust-dateTime-to-timezone", FN_AdjustDatetimeToTimezone.class) ;
// 9.6.2 fn:adjust-date-to-timezone
// 9.6.3 fn:adjust-time-to-timezone
// 9.8.1 fn:format-dateTime
http://git-wip-us.apache.org/repos/asf/jena/blob/da73e967/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_AdjustDatetimeToTimezone.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_AdjustDatetimeToTimezone.java b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_AdjustDatetimeToTimezone.java
new file mode 100644
index 0000000..7d480dd
--- /dev/null
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_AdjustDatetimeToTimezone.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.sparql.function.library;
+
+import org.apache.jena.atlas.lib.Lib;
+import org.apache.jena.query.QueryBuildException;
+import org.apache.jena.sparql.expr.ExprEvalException;
+import org.apache.jena.sparql.expr.ExprList;
+import org.apache.jena.sparql.expr.NodeValue;
+import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp;
+import org.apache.jena.sparql.function.FunctionBase;
+
+import java.util.List;
+
+public class FN_AdjustDatetimeToTimezone extends FunctionBase {
+ public FN_AdjustDatetimeToTimezone(){super();}
+
+ @Override
+ public void checkBuild(String uri, ExprList args)
+ {
+ if ( args.size() != 1 && args.size() != 2 )
+ throw new QueryBuildException("Function '"+ Lib.className(this)+"' takes one or two arguments") ;
+ }
+ @Override
+ public NodeValue exec(List<NodeValue> args)
+ {
+ if ( args.size() != 1 && args.size() != 2 )
+ throw new ExprEvalException("FN_StrNormalizeUnicode: Wrong number of arguments: "+args.size()+" : [wanted 1 or 2]") ;
+
+ NodeValue v1 = args.get(0) ;
+
+ if ( args.size() == 2 )
+ {
+ NodeValue v2 = args.get(1) ;
+ return XSDFuncOp.adjustDatetimeToTimezone(v1, v2) ;
+ }
+
+ return XSDFuncOp.adjustDatetimeToTimezone(v1, null) ;
+ }
+}
http://git-wip-us.apache.org/repos/asf/jena/blob/da73e967/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 589c9c4..3864711 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
@@ -348,6 +348,35 @@ public class TestFunctions
// counter-intuitive -- would fail if float/double not translated to decimal
@Test public void exprRoundHalfEven_08() { test("fn:round-half-to-even('150.015'^^xsd:float, 2)", NodeValue.makeFloat((float)150.01)) ; }
+ private String getDynamicDurationString(){
+ int tzOffset = TimeZone.getDefault().getRawOffset() / (1000*60);
+ return "PT"+tzOffset+"M";
+ }
+
+ @Test public void exprAdjustDatetimeToTz_01(){
+ testEqual(
+ "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime)",
+ "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ }
+
+ @Test public void exprAdjustDatetimeToTz_02(){
+ testEqual(
+ "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime)",
+ "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ }
+
+ @Test public void exprAdjustDatetimeToTz_03(){test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDateTime("2002-03-07T10:00:00-10:00"));}
+
+ @Test public void exprAdjustDatetimeToTz_04(){test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDateTime("2002-03-07T07:00:00-10:00"));}
+
+ @Test public void exprAdjustDatetimeToTz_05(){test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,'PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDateTime("2002-03-08T03:00:00+10:00"));}
+
+ @Test public void exprAdjustDatetimeToTz_06(){test("fn:adjust-dateTime-to-timezone('2002-03-07T00:00:00+01:00'^^xsd:dateTime,'-PT8H'^^xsd:dayTimeDuration)",NodeValue.makeDateTime("2002-03-06T15:00:00-08:00"));}
+
+ @Test public void exprAdjustDatetimeToTz_07(){test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime,'')",NodeValue.makeDateTime("2002-03-07T10:00:00"));}
+
+ @Test public void exprAdjustDatetimeToTz_08(){test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,'')",NodeValue.makeDateTime("2002-03-07T10:00:00"));}
+
//@Test public void exprStrJoin() { test("fn:string-join('a', 'b')", NodeValue.makeString("ab")) ; }
@Test public void exprSameTerm1() { test("sameTerm(1,1)", TRUE) ; }
@@ -402,7 +431,14 @@ public class TestFunctions
NodeValue r = expr.eval(null, FunctionEnvBase.createTest()) ;
assertEquals(result, r) ;
}
-
+
+ private void testEqual(String exprStr, String exprStrExpected)
+ {
+ Expr expr = ExprUtils.parse(exprStrExpected) ;
+ NodeValue rExpected = expr.eval(null, FunctionEnvBase.createTest()) ;
+ test(exprStr,rExpected);
+ }
+
private void testEvalException(String exprStr)
{
Expr expr = ExprUtils.parse(exprStr) ;
[10/11] jena git commit: Merge commit 'refs/pull/148/head' of
github.com:apache/jena
Posted by an...@apache.org.
Merge commit 'refs/pull/148/head' of github.com:apache/jena
This closes #148.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/9dd5ac3b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/9dd5ac3b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/9dd5ac3b
Branch: refs/heads/master
Commit: 9dd5ac3b583435a1557fd195f93617e8a5abe871
Parents: 7f2dfed 5152511
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jun 10 12:58:49 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Jun 10 12:58:49 2016 +0100
----------------------------------------------------------------------
.../jena/sparql/expr/nodevalue/XSDFuncOp.java | 58 +++++++++++++-
.../jena/sparql/function/StandardFunctions.java | 3 +
.../library/FN_AdjustDatetimeToTimezone.java | 55 +++++++++++++
.../apache/jena/sparql/expr/TestFunctions.java | 82 +++++++++++++++++++-
4 files changed, 193 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
[02/11] jena git commit: Add the error conditions.
Posted by an...@apache.org.
Add the error conditions.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/807d50fe
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/807d50fe
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/807d50fe
Branch: refs/heads/master
Commit: 807d50feff9b300e81253e3306778863f78444c1
Parents: da73e96
Author: ales004 <ci...@hotmail.com>
Authored: Sun May 29 19:33:42 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Sun May 29 19:33:42 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/807d50fe/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 8b31d92..037b160 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
@@ -1590,6 +1590,11 @@ public class XSDFuncOp
}
Duration tzDuration = nv2.getDuration();
tzOffset = tzDuration.getSign()*(tzDuration.getMinutes() + 60*tzDuration.getHours());
+ if(tzDuration.getSeconds() > 0)
+ throw new ExprEvalException("The timezone duration should be an integral number of minutes");
+ int absTzOffset = java.lang.Math.abs(tzOffset);
+ if(absTzOffset > 14*60)
+ throw new ExprEvalException("The timezone should be a duration between -PT14H and PT14H.");
}
String tzSign = (tzOffset-inputOffset) > 0 ? "" : "-";
Duration durToAdd = NodeValue.makeDuration(tzSign+"PT"+java.lang.Math.abs(tzOffset-inputOffset)+"M").getDuration();
[09/11] jena git commit: Taking into account daylight savings in the
timezone by using the current date value. Using newDurationDatetime instead
of parsing the string value.
Posted by an...@apache.org.
Taking into account daylight savings in the timezone by using the current date value.
Using newDurationDatetime instead of parsing the string value.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/51525117
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/51525117
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/51525117
Branch: refs/heads/master
Commit: 51525117bc9a81aa5362340c5a9a005eef0be28d
Parents: d57d48c
Author: ales004 <ci...@hotmail.com>
Authored: Thu Jun 9 07:56:07 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Thu Jun 9 07:56:07 2016 +0200
----------------------------------------------------------------------
.../org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java | 8 +++++---
.../test/java/org/apache/jena/sparql/expr/TestFunctions.java | 7 +++++--
2 files changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/51525117/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 785817f..7b565fd 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
@@ -1567,7 +1567,7 @@ public class XSDFuncOp
inputOffset = calValue.getTimezone();
}
- int tzOffset = TimeZone.getDefault().getRawOffset() / (1000*60);
+ int tzOffset = 0;
if(nv2 != null){
if(!nv2.isDuration()) {
String nv2StrValue = nv2.getString();
@@ -1590,8 +1590,10 @@ public class XSDFuncOp
if(absTzOffset > 14*60)
throw new ExprEvalException("The timezone should be a duration between -PT14H and PT14H.");
}
- String tzSign = (tzOffset-inputOffset) > 0 ? "" : "-";
- Duration durToAdd = NodeValue.makeDuration(tzSign+"PT"+java.lang.Math.abs(tzOffset-inputOffset)+"M").getDuration();
+ else{
+ tzOffset = TimeZone.getDefault().getOffset(new Date().getTime())/(1000*60);
+ }
+ Duration durToAdd = NodeValue.xmlDatatypeFactory.newDurationDayTime((tzOffset-inputOffset) > 0,0,0,java.lang.Math.abs(tzOffset-inputOffset),0);
if(hasTz)
calValue.add(durToAdd);
calValue.setTimezone(tzOffset);
http://git-wip-us.apache.org/repos/asf/jena/blob/51525117/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 1830c5e..e7bf8a6 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
@@ -349,8 +349,11 @@ public class TestFunctions
@Test public void exprRoundHalfEven_08() { test("fn:round-half-to-even('150.015'^^xsd:float, 2)", NodeValue.makeFloat((float)150.01)) ; }
private String getDynamicDurationString(){
- int tzOffset = TimeZone.getDefault().getRawOffset() / (1000*60);
- return "PT"+tzOffset+"M";
+ int tzOffset = TimeZone.getDefault().getOffset(new Date().getTime()) / (1000*60);
+ String off = "PT"+Math.abs(tzOffset)+"M";
+ if(tzOffset < 0)
+ off = "-"+off;
+ return off;
}
@Test public void exprAdjustDatetimeToTz_01(){
[11/11] jena git commit: JENA-1192: Support for the MariaDB JDBC
driver.
Posted by an...@apache.org.
JENA-1192: Support for the MariaDB JDBC driver.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/edba1313
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/edba1313
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/edba1313
Branch: refs/heads/master
Commit: edba13136e2dd201e26e24a62e3f1b8a5c20e81e
Parents: 9dd5ac3
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Jun 10 13:44:38 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Jun 10 13:44:58 2016 +0100
----------------------------------------------------------------------
.../jena/sdb/layout2/LoaderTuplesNodes.java | 3 +-
.../apache/jena/sdb/layout2/NodeLayout2.java | 2 +-
.../main/java/org/apache/jena/sdb/sql/JDBC.java | 36 ++++++++++++++++----
.../org/apache/jena/sdb/store/DatabaseType.java | 7 ++--
.../org/apache/jena/sdb/store/StoreFactory.java | 21 +++++++++++-
.../org/apache/jena/sdb/util/StoreUtils.java | 11 +++---
6 files changed, 60 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
index 395a8ee..0fee236 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/LoaderTuplesNodes.java
@@ -285,8 +285,7 @@ public class LoaderTuplesNodes
if (currentLoader == null) { // make a new loader
try {
currentLoader =
- tupleLoaderClass.getConstructor(SDBConnection.class, TableDesc.class,
- Integer.TYPE).newInstance(connection(), tuple.table, chunkSize);
+ tupleLoaderClass.getConstructor(SDBConnection.class, TableDesc.class, Integer.TYPE).newInstance(connection(), tuple.table, chunkSize);
} catch (Exception e) {
throw new SDBException("Problem making new tupleloader", e);
}
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
index bbe174d..6fa56b6 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/layout2/NodeLayout2.java
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
public class NodeLayout2
{
- // Turn into the lexcial form
+ // Turn into the lexical form
public static String nodeToLex(Node node)
{
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java b/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
index ca55fcd..f1da4bd 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/sql/JDBC.java
@@ -40,9 +40,13 @@ public class JDBC
// The "well known" not a JDBC connection really scheme
public static final String jdbcNone = "jdbc:none" ;
+ public static final String jdbcDriverClassMySQL ;
+ public static final String jdbcDriverClassMariaDB ;
+
private static Map<DatabaseType, String> driver = new HashMap<DatabaseType, String>() ;
static {
driver.put(DatabaseType.MySQL, "com.mysql.jdbc.Driver") ;
+ driver.put(DatabaseType.MariaDB, "org.mariadb.jdbc.Driver") ;
driver.put(DatabaseType.PostgreSQL, "org.postgresql.Driver") ;
driver.put(DatabaseType.H2, "org.h2.Driver") ;
driver.put(DatabaseType.HSQLDB, "org.hsqldb.jdbcDriver") ;
@@ -52,6 +56,9 @@ public class JDBC
driver.put(DatabaseType.Oracle, "oracle.jdbc.driver.OracleDriver") ;
driver.put(DatabaseType.DB2, "com.ibm.db2.jcc.DB2Driver") ;
driver.put(DatabaseType.SAP, "com.sap.db.jdbc.Driver") ;
+
+ jdbcDriverClassMySQL = driver.get(DatabaseType.MySQL) ;
+ jdbcDriverClassMariaDB = driver.get(DatabaseType.MariaDB) ;
}
static public String getDriver(DatabaseType dbType) { return driver.get(dbType) ; }
@@ -62,6 +69,8 @@ public class JDBC
static public void loadDriverH2() { loadDriver(driver.get(DatabaseType.H2)) ; }
/** Explicitly load the MySQL driver */
static public void loadDriverMySQL() { loadDriver(driver.get(DatabaseType.MySQL)) ; }
+ /** Explicitly load the MariaDB driver */
+ static public void loadDriverMariaDB() { loadDriver(driver.get(DatabaseType.MariaDB)) ; }
/** Explicitly load the PostgreSQL driver */
static public void loadDriverPGSQL() { loadDriver(driver.get(DatabaseType.PostgreSQL)); }
/** Explicitly load the Derby driver */
@@ -99,16 +108,28 @@ public class JDBC
return DriverManager.getConnection(url, user, password) ;
}
-// static public void loadClass(String className)
-// { Loader.loadClass(className) ; }
-
static private void loadClass(String className)
{
- try { Class.forName(className); }
+ try { Class.forName(className); return ; }
catch (ClassNotFoundException ex)
- { throw new SDBNotFoundException("Class.forName("+className+")", ex) ; }
+ {
+ // Ir MySQL or MariaDB, try the other one.
+ if ( className.equals(jdbcDriverClassMySQL) || className.equals(jdbcDriverClassMariaDB) ) {
+ String classNameAlt = null ;
+ if ( className.equals(jdbcDriverClassMySQL) )
+ classNameAlt = jdbcDriverClassMariaDB ;
+ else if ( className.equals(jdbcDriverClassMariaDB) )
+ classNameAlt = jdbcDriverClassMySQL ;
+ try { Class.forName(classNameAlt) ; return ; }
+ catch (ClassNotFoundException ex2) {}
+ }
+ throw new SDBNotFoundException("Class.forName("+className+")", ex) ; }
}
+ static private void loadClass1(String className) {
+
+ }
+
public static String makeURL(String type, String host, String dbName)
{ return makeURL(type, host, dbName, null, null) ; }
@@ -125,8 +146,11 @@ public class JDBC
if ( password == null )
password = Access.getPassword() ;
- if ( type.equals("mysql") )
+ if ( type.equals("mysql") || type.equals("mariadb") )
{
+ // MariaDB responds to jdbc:mysql:...
+ // but MySQL does not respond to jdbc:mariadb:...
+ type = "mysql" ;
String s = String.format("jdbc:%s://%s/%s", type, host, dbName) ;
return s ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java b/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
index 5e3d83b..685b0ca 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/store/DatabaseType.java
@@ -35,6 +35,8 @@ public class DatabaseType extends Symbol implements Named
public static final DatabaseType H2 = new DatabaseType("H2") ;
public static final DatabaseType HSQLDB = new DatabaseType("HSQLDB") ;
public static final DatabaseType MySQL = new DatabaseType("MySQL") ;
+ // MariaDB is currently treated as MySQL - the only difference is that a different JDBC driver is loaded.
+ public static final DatabaseType MariaDB = new DatabaseType("MariaDB") ;
public static final DatabaseType PostgreSQL = new DatabaseType("PostgreSQL") ;
public static final DatabaseType SQLServer = new DatabaseType("SQLServer") ;
public static final DatabaseType Oracle = new DatabaseType("Oracle") ;
@@ -63,7 +65,6 @@ public class DatabaseType extends Symbol implements Named
static void init()
{
- // Java databases
register(Derby) ;
registerName("JavaDB", Derby) ;
@@ -78,14 +79,12 @@ public class DatabaseType extends Symbol implements Named
registerName("h2:tcp", H2) ;
registerName("h2", H2) ;
- // Open source DBs
register(MySQL) ;
- // registerName("MySQL5", HSQLDB) ; // am I right in assuming that "HSQLDB" should actually be "MySQL"
+ register(MariaDB) ;
registerName("MySQL5", MySQL) ;
register(PostgreSQL) ;
- // Commercial DBs
register(SQLServer) ;
registerName("MSSQLServer" , SQLServer) ;
registerName("MSSQLServerExpress" , SQLServer) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java b/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
index a9cb925..58f6e46 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/store/StoreFactory.java
@@ -173,6 +173,13 @@ public class StoreFactory
@Override
public Store create(SDBConnection conn, StoreDesc desc)
{ return new StoreTriplesNodesHashMySQL(conn, desc, desc.engineType) ; } }) ;
+
+ // Treat as MySQL
+ register(MariaDB, LayoutTripleNodesHash,
+ new StoreMaker() {
+ @Override
+ public Store create(SDBConnection conn, StoreDesc desc)
+ { return new StoreTriplesNodesHashMySQL(conn, desc, desc.engineType) ; } }) ;
register(PostgreSQL, LayoutTripleNodesHash,
new StoreMaker() {
@@ -232,6 +239,12 @@ public class StoreFactory
public Store create(SDBConnection conn, StoreDesc desc)
{ return new StoreTriplesNodesIndexMySQL(conn, desc, desc.engineType) ; } }) ;
+ register(MariaDB, LayoutTripleNodesIndex,
+ new StoreMaker() {
+ @Override
+ public Store create(SDBConnection conn, StoreDesc desc)
+ { return new StoreTriplesNodesIndexMySQL(conn, desc, desc.engineType) ; } }) ;
+
register(PostgreSQL, LayoutTripleNodesIndex,
new StoreMaker() {
@Override
@@ -290,6 +303,12 @@ public class StoreFactory
public Store create(SDBConnection conn, StoreDesc desc)
{ return new StoreSimpleMySQL(conn, desc, desc.engineType) ; } }) ;
+ register(MariaDB, LayoutSimple,
+ new StoreMaker() {
+ @Override
+ public Store create(SDBConnection conn, StoreDesc desc)
+ { return new StoreSimpleMySQL(conn, desc, desc.engineType) ; } }) ;
+
register(PostgreSQL, LayoutSimple,
new StoreMaker() {
@Override
@@ -323,7 +342,7 @@ public class StoreFactory
static private void checkRegistry()
{
- DatabaseType[] dbTypes = {Derby, HSQLDB, H2, MySQL, PostgreSQL, SQLServer, Oracle, SAP} ;
+ DatabaseType[] dbTypes = {Derby, HSQLDB, H2, MySQL, MariaDB, PostgreSQL, SQLServer, Oracle, SAP} ;
LayoutType[] layoutTypes = {LayoutTripleNodesHash, LayoutTripleNodesIndex, LayoutSimple} ;
Set <StoreMaker> seen = new HashSet<StoreMaker>() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/edba1313/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
----------------------------------------------------------------------
diff --git a/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java b/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
index c259279..70248ab 100644
--- a/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
+++ b/jena-sdb/src/main/java/org/apache/jena/sdb/util/StoreUtils.java
@@ -18,13 +18,9 @@
package org.apache.jena.sdb.util;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Collection;
-import java.util.HashSet;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.* ;
import org.apache.jena.graph.Node ;
import org.apache.jena.query.Dataset ;
@@ -67,7 +63,10 @@ public class StoreUtils
public static boolean isMySQL(Store store)
{
- return store.getDatabaseType().equals(DatabaseType.MySQL) ;
+ DatabaseType type = store.getDatabaseType() ;
+
+ return Objects.equals(type, DatabaseType.MySQL) ||
+ Objects.equals(type, DatabaseType.MariaDB) ;
}
public static boolean isSQLServer(Store store)
[05/11] jena git commit: Simplified the checking of the input
timezone.
Posted by an...@apache.org.
Simplified the checking of the input timezone.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/77ddf087
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/77ddf087
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/77ddf087
Branch: refs/heads/master
Commit: 77ddf08758c37efc15410e938b65e3d379f83dd8
Parents: d786344
Author: ales004 <ci...@hotmail.com>
Authored: Fri Jun 3 20:53:02 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Fri Jun 3 20:53:02 2016 +0200
----------------------------------------------------------------------
.../org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/77ddf087/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 037b160..861b388 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
@@ -1565,14 +1565,12 @@ public class XSDFuncOp
if(!nv1.isDateTime() && !nv1.isDate()){
throw new ExprEvalException("Not a valid date or datetime:"+nv1);
}
- DateTimeStruct dts = parseAnyDT(nv1);
- NodeValue inputTimezone = fromTimezoneToDuration(dts);
- Boolean hasTz = inputTimezone == null ? false : true;
+
XMLGregorianCalendar calValue = nv1.getDateTime();
+ Boolean hasTz = calValue.getTimezone() != DatatypeConstants.FIELD_UNDEFINED;
int inputOffset = 0;
if(hasTz){
- Duration inputDuration = inputTimezone.getDuration();
- inputOffset = inputDuration.getSign()*(inputDuration.getMinutes() + 60*inputDuration.getHours());
+ inputOffset = calValue.getTimezone();
}
int tzOffset = TimeZone.getDefault().getRawOffset() / (1000*60);
[08/11] jena git commit: Merge remote-tracking branch
'upstream/master'
Posted by an...@apache.org.
Merge remote-tracking branch 'upstream/master'
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d57d48cf
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d57d48cf
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d57d48cf
Branch: refs/heads/master
Commit: d57d48cfc61d1c32ddad182e1352feb404340a9d
Parents: 739a2a3 8e02240
Author: ales004 <ci...@hotmail.com>
Authored: Thu Jun 9 07:34:30 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Thu Jun 9 07:34:30 2016 +0200
----------------------------------------------------------------------
.../optimize/TransformFilterEquality.java | 3 +
.../jena/sparql/engine/main/JoinClassifier.java | 59 +++++++------
.../sparql/engine/main/LeftJoinClassifier.java | 47 ++++++-----
.../jena/sparql/engine/main/VarFinder.java | 88 +++++++++++++++++---
.../jena/sparql/sse/builders/BuilderExpr.java | 3 +-
.../jena/sparql/algebra/TestClassify.java | 23 +++--
.../jena/sparql/algebra/TestTransformQuads.java | 3 +-
.../jena/sparql/algebra/TestVarFinder.java | 49 ++++++-----
.../algebra/optimize/TestTransformFilters.java | 24 ++++++
jena-sdb/src/main/java/sdb/sdbdump.java | 6 +-
jena-sdb/src/main/java/sdb/sdbload.java | 53 ++++++++----
11 files changed, 253 insertions(+), 105 deletions(-)
----------------------------------------------------------------------
[03/11] jena git commit: Implemented adjust-date-to-timezone
Posted by an...@apache.org.
Implemented adjust-date-to-timezone
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/8de4216c
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/8de4216c
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/8de4216c
Branch: refs/heads/master
Commit: 8de4216c0cb96f098a84d765db6cf1bf3e2b3956
Parents: 807d50f
Author: ales004 <ci...@hotmail.com>
Authored: Sun May 29 23:04:25 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Sun May 29 23:04:25 2016 +0200
----------------------------------------------------------------------
.../jena/sparql/function/StandardFunctions.java | 1 +
.../apache/jena/sparql/expr/TestFunctions.java | 19 +++++++++++++++++++
2 files changed, 20 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/8de4216c/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 e8b014d..adecc95 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
@@ -166,6 +166,7 @@ public class StandardFunctions
// 9.6.1 fn:adjust-dateTime-to-timezone
add(registry, xfn+"adjust-dateTime-to-timezone", FN_AdjustDatetimeToTimezone.class) ;
// 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
// 9.8.1 fn:format-dateTime
// 9.8.2 fn:format-date
http://git-wip-us.apache.org/repos/asf/jena/blob/8de4216c/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 3864711..f0f252e 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
@@ -377,6 +377,25 @@ public class TestFunctions
@Test public void exprAdjustDatetimeToTz_08(){test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,'')",NodeValue.makeDateTime("2002-03-07T10:00:00"));}
+ @Test public void exprAdjustDateToTz_01(){
+ testEqual(
+ "fn:adjust-date-to-timezone('2002-03-07'^^xsd:date)",
+ "fn:adjust-date-to-timezone('2002-03-07'^^xsd:date,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ }
+
+ @Test public void exprAdjustDateToTz_02(){
+ testEqual(
+ "fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date)",
+ "fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ }
+
+ @Test public void exprAdjustDateToTz_03(){test("fn:adjust-date-to-timezone('2002-03-07'^^xsd:date,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDate("2002-03-07-10:00"));}
+
+ @Test public void exprAdjustDateToTz_04(){test("fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDate("2002-03-06-10:00"));}
+
+ @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 exprStrJoin() { test("fn:string-join('a', 'b')", NodeValue.makeString("ab")) ; }
@Test public void exprSameTerm1() { test("sameTerm(1,1)", TRUE) ; }
[07/11] jena git commit: Implemented adujst-time-to-timezone
Posted by an...@apache.org.
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 <ci...@hotmail.com>
Authored: Sat Jun 4 20:37:25 2016 +0200
Committer: ales004 <ci...@hotmail.com>
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) ; }
[06/11] jena git commit: Reverted changes made to the dtGetTimezone
function.
Posted by an...@apache.org.
Reverted changes made to the dtGetTimezone function.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/5dcb82b6
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/5dcb82b6
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/5dcb82b6
Branch: refs/heads/master
Commit: 5dcb82b67a20e56d1e9476e34c288b36eec69152
Parents: 77ddf08
Author: ales004 <ci...@hotmail.com>
Authored: Fri Jun 3 21:00:18 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Fri Jun 3 21:00:18 2016 +0200
----------------------------------------------------------------------
.../apache/jena/sparql/expr/nodevalue/XSDFuncOp.java | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/5dcb82b6/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 861b388..f00d564 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
@@ -1423,9 +1423,10 @@ public class XSDFuncOp
return NodeValue.makeString(dts.timezone) ;
}
- private static NodeValue fromTimezoneToDuration(DateTimeStruct dts){
+ public static NodeValue dtGetTimezone(NodeValue nv) {
+ DateTimeStruct dts = parseAnyDT(nv) ;
if ( dts == null || dts.timezone == null )
- return null;
+ throw new ExprEvalException("Not a datatype with a timezone: " + nv) ;
if ( "".equals(dts.timezone) )
return null ;
if ( "Z".equals(dts.timezone) ) {
@@ -1456,13 +1457,6 @@ public class XSDFuncOp
return NodeValue.makeNode(sb.toString(), null, XSDDatatype.XSD + "#dayTimeDuration") ;
}
- public static NodeValue dtGetTimezone(NodeValue nv) {
- DateTimeStruct dts = parseAnyDT(nv) ;
- if ( dts == null || dts.timezone == null )
- throw new ExprEvalException("Not a datatype with a timezone: " + nv) ;
- return fromTimezoneToDuration(dts);
- }
-
private static void digitsTwo(String s, int idx, StringBuilder sb, char indicator) {
if ( s.charAt(idx) == '0' ) {
idx++ ;
[04/11] jena git commit: Merge remote-tracking branch
'upstream/master'
Posted by an...@apache.org.
Merge remote-tracking branch 'upstream/master'
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d786344d
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d786344d
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d786344d
Branch: refs/heads/master
Commit: d786344dca85fcedeaa43ae7b211621fa9998afc
Parents: 8de4216 c6ad4fc
Author: ales004 <ci...@hotmail.com>
Authored: Fri Jun 3 20:43:31 2016 +0200
Committer: ales004 <ci...@hotmail.com>
Committed: Fri Jun 3 20:43:31 2016 +0200
----------------------------------------------------------------------
.../jena/sparql/algebra/table/Table1.java | 2 +-
.../jena/sparql/engine/main/JoinClassifier.java | 10 +-
.../jena/sparql/engine/main/VarFinder.java | 22 +-
.../org/apache/jena/sparql/expr/E_Call.java | 4 +-
.../org/apache/jena/sparql/expr/ExprNode.java | 1 -
.../jena/sparql/function/library/eval.java | 43 +-
.../jena/sparql/sse/writers/WriterExpr.java | 105 ++--
.../jena/sparql/sse/writers/WriterOp.java | 502 ++++++++-----------
.../jena/sparql/algebra/TestClassify.java | 7 +-
.../org/apache/jena/atlas/lib/SetUtils.java | 15 +
.../org/apache/jena/atlas/lib/TestSetUtils.java | 48 +-
jena-cmds/src/main/java/arq/qparse.java | 14 +-
12 files changed, 363 insertions(+), 410 deletions(-)
----------------------------------------------------------------------