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 2012/07/29 22:00:35 UTC
svn commit: r1366929 - in /jena/trunk/jena-tdb/src:
main/java/com/hp/hpl/jena/tdb/store/DateTimeNode.java
test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java
Author: andy
Date: Sun Jul 29 20:00:35 2012
New Revision: 1366929
URL: http://svn.apache.org/viewvc?rev=1366929&view=rev
Log:
JENA-287
Handle timezones with negative offets and non-zero minutes
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DateTimeNode.java
jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java
Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DateTimeNode.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DateTimeNode.java?rev=1366929&r1=1366928&r2=1366929&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DateTimeNode.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DateTimeNode.java Sun Jul 29 20:00:35 2012
@@ -140,7 +140,7 @@ public class DateTimeNode
// T24:00:00 not accepted.
// See also TestNodeId.nodeId_date_time_7
- XMLGregorianCalendar xcal = datatypeFactory.newXMLGregorianCalendar(lex) ; ;
+ XMLGregorianCalendar xcal = datatypeFactory.newXMLGregorianCalendar(lex) ;
if ( xcal.getFractionalSecond() != null )
{
@@ -177,24 +177,12 @@ public class DateTimeNode
public static String unpackDateTime(long v)
{
- try {
- return unpack(v, true) ;
- } catch (RuntimeException ex)
- {
- System.err.printf("Failed to unpackDateTime: %08X\n",v) ;
- throw ex ;
- }
+ return unpack(v, true) ;
}
public static String unpackDate(long v)
{
- try {
- return unpack(v, false) ;
- } catch (RuntimeException ex)
- {
- System.err.printf("Failed to unpackDate: %08X\n",v) ;
- throw ex ;
- }
+ return unpack(v, false) ;
}
// Avoid calls to String.format
@@ -245,8 +233,7 @@ public class DateTimeNode
}
}
// tz in 15min units
-
-
+ // Special values.
if ( tz == TZ_Z )
{
sb.append("Z") ;
@@ -260,11 +247,19 @@ public class DateTimeNode
if ( BitsLong.isSet(v, TZ+TZ_LEN-1) )
tz = BitsInt.set(tz, TZ_LEN, 32) ;
+ if ( tz < 0 )
+ {
+ tz = -tz ;
+ sb.append('-') ;
+ }
+ else
+ sb.append('+') ;
+
int tzH = tz/4 ;
int tzM = (tz%4)*15 ;
- NumberUtils.formatSignedInt(sb, tzH, 3) ; // Sign always included.
+ NumberUtils.formatUnsignedInt(sb, tzH, 2) ;
sb.append(':') ;
- NumberUtils.formatInt(sb, tzM, 2) ;
+ NumberUtils.formatUnsignedInt(sb, tzM, 2) ;
return sb.toString();
}
}
Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java?rev=1366929&r1=1366928&r2=1366929&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java Sun Jul 29 20:00:35 2012
@@ -122,13 +122,21 @@ public class TestNodeId extends BaseTest
@Test public void nodeId_dateTime_13()
{ test("'2008-04-28T15:36:05.100'^^xsd:dateTime", "'2008-04-28T15:36:05.1'^^xsd:dateTime") ; }
- // Out of range.
- // But XMLGregorian calendar truncates.
-// @Test public void nodeId_dateTime_14()
-// { test("'2008-04-28T15:36:05.0001'^^xsd:dateTime") ; }
-//
-// @Test public void nodeId_dateTime_15()
-// { test("'2008-04-28T15:36:05.00010'^^xsd:dateTime", "'2008-04-28T15:36:05.0001'^^xsd:dateTime") ; }
+ @Test public void nodeId_dateTime_14()
+ { test("'2012-07-29T20:39:11.100+01:15'^^xsd:dateTime", "'2012-07-29T20:39:11.1+01:15'^^xsd:dateTime") ; }
+
+ @Test public void nodeId_dateTime_15()
+ { test("'2012-07-29T20:39:11.100-01:15'^^xsd:dateTime", "'2012-07-29T20:39:11.1-01:15'^^xsd:dateTime") ; }
+
+
+ @Test public void nodeId_dateTime_16()
+ { test("'2012-07-29T20:39:11.100+01:30'^^xsd:dateTime", "'2012-07-29T20:39:11.1+01:30'^^xsd:dateTime") ; }
+
+ @Test public void nodeId_dateTime_17()
+ { test("'2012-07-29T20:39:11.100-01:45'^^xsd:dateTime", "'2012-07-29T20:39:11.1-01:45'^^xsd:dateTime") ; }
+
+ @Test public void nodeId_dateTime_18()
+ { test("'2012-07-29T20:39:11.100Z'^^xsd:dateTime", "'2012-07-29T20:39:11.1Z'^^xsd:dateTime") ; }
@Test public void nodeId_date_1()
{ test("'2008-04-28Z'^^xsd:date", NodeFactory.parseNode("'2008-04-28Z'^^xsd:date")) ; }
@@ -145,6 +153,12 @@ public class TestNodeId extends BaseTest
@Test public void nodeId_date_5()
{ test("'8008-04-28'^^xsd:date", (Node)null) ; }
+ @Test public void nodeId_date_6()
+ { test("'2012-07-29+06:15'^^xsd:date", "'2012-07-29+06:15'^^xsd:date") ; }
+
+ @Test public void nodeId_date_7()
+ { test("'2012-07-29-06:30'^^xsd:date", "'2012-07-29-06:30'^^xsd:date") ; }
+
@Test public void nodeId_boolean_1()
{ test("'true'^^xsd:boolean", NodeFactory.parseNode("'true'^^xsd:boolean")) ; }