From 48d1403b32edc3601564a1b4d1c90157795787b6 Mon Sep 17 00:00:00 2001 From: sjm222 Date: Thu, 6 Jan 2011 02:02:00 +0000 Subject: [PATCH] incremental development for NIHVIVO-1286 - formatting dateTime literals --- .../ontology/update/DateTimeMigration.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java index 1fe7b699d..1636b058f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/DateTimeMigration.java @@ -8,7 +8,9 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import java.util.TimeZone; +import com.hp.hpl.jena.datatypes.xsd.XSDDatatype; import com.hp.hpl.jena.datatypes.xsd.XSDDateTime; import com.hp.hpl.jena.ontology.DatatypeProperty; import com.hp.hpl.jena.ontology.ObjectProperty; @@ -117,7 +119,7 @@ public class DateTimeMigration { if (additions.size() > 0) { long count = additions.size() / 2; - logger.log(count + "Academic Term and/or Year assertion" + ((count > 1) ? "s" : "") + " were updated to use dateTimeInterval instead"); + logger.log(count + " hasTimeInterval predicate" + ((count > 1) ? "s were" : " was") + " updated to use dateTimeInterval instead"); } } finally { aboxModel.leaveCriticalSection(); @@ -132,8 +134,8 @@ public class DateTimeMigration { //TODO: look into java locale note: not handling timezones - they are not expected to be in the 1.1.1 data DateFormat yearFormat = new SimpleDateFormat("yyyy"); - DateFormat yearMonthFormat = new SimpleDateFormat("yyyy-mm"); - DateFormat yearMonthDayFormat = new SimpleDateFormat("yyyy-mm-dd"); + DateFormat yearMonthFormat = new SimpleDateFormat("yyyy-MM"); + DateFormat yearMonthDayFormat = new SimpleDateFormat("yyyy-MM-dd"); aboxModel.enterCriticalSection(Lock.WRITE); @@ -212,13 +214,11 @@ public class DateTimeMigration { aboxModel.enterCriticalSection(Lock.WRITE); try { - - StmtIterator iter = aboxModel.listStatements(stmt.getSubject(), dateTimePrecisionProp, (RDFNode) null); while (iter.hasNext()) { - Statement statement = iter.next(); - precision = ((Resource)statement.getObject()).getURI(); + Statement statement = iter.next(); + precision = ((Resource)statement.getObject()).getURI(); } return precision; @@ -230,19 +230,21 @@ public class DateTimeMigration { public static Literal getDateTimeLiteral(Date date) { - // Note this loses time zone info, don't know how get parser to extract that - //Calendar cal = Calendar.getInstance( TimeZone.getTimeZone("GMT") ); - - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - XSDDateTime dt = new XSDDateTime(cal); - return ResourceFactory.createTypedLiteral(dt); + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + cal.setTime(date); + cal.set(Calendar.HOUR, 0); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND,0); + XSDDateTime dt = new XSDDateTime(cal); + String dateString = dt.toString().substring(0, dt.toString().length()-1); + return ResourceFactory.createTypedLiteral(dateString, XSDDatatype.XSDdateTime); } public static String stmtString(Statement statement) { return " subject = " + statement.getSubject().getURI() + " property = " + statement.getPredicate().getURI() + " object = " + (statement.getObject().isLiteral() ? ((Literal)statement.getObject()).getLexicalForm() + " (Literal)" - : ((Resource)statement.getObject()).getURI() + " (Resource)"); + : ((Resource)statement.getObject()).getURI() + " (Resource)"); } } \ No newline at end of file