incremental development for NIHVIVO-1286 - formatting dateTime literals

This commit is contained in:
sjm222 2011-01-06 02:02:00 +00:00
parent d4ca37f85f
commit 48d1403b32

View file

@ -8,7 +8,9 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; 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.datatypes.xsd.XSDDateTime;
import com.hp.hpl.jena.ontology.DatatypeProperty; import com.hp.hpl.jena.ontology.DatatypeProperty;
import com.hp.hpl.jena.ontology.ObjectProperty; import com.hp.hpl.jena.ontology.ObjectProperty;
@ -117,7 +119,7 @@ public class DateTimeMigration {
if (additions.size() > 0) { if (additions.size() > 0) {
long count = additions.size() / 2; 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 { } finally {
aboxModel.leaveCriticalSection(); 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 //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 yearFormat = new SimpleDateFormat("yyyy");
DateFormat yearMonthFormat = new SimpleDateFormat("yyyy-mm"); DateFormat yearMonthFormat = new SimpleDateFormat("yyyy-MM");
DateFormat yearMonthDayFormat = new SimpleDateFormat("yyyy-mm-dd"); DateFormat yearMonthDayFormat = new SimpleDateFormat("yyyy-MM-dd");
aboxModel.enterCriticalSection(Lock.WRITE); aboxModel.enterCriticalSection(Lock.WRITE);
@ -212,13 +214,11 @@ public class DateTimeMigration {
aboxModel.enterCriticalSection(Lock.WRITE); aboxModel.enterCriticalSection(Lock.WRITE);
try { try {
StmtIterator iter = aboxModel.listStatements(stmt.getSubject(), dateTimePrecisionProp, (RDFNode) null); StmtIterator iter = aboxModel.listStatements(stmt.getSubject(), dateTimePrecisionProp, (RDFNode) null);
while (iter.hasNext()) { while (iter.hasNext()) {
Statement statement = iter.next(); Statement statement = iter.next();
precision = ((Resource)statement.getObject()).getURI(); precision = ((Resource)statement.getObject()).getURI();
} }
return precision; return precision;
@ -230,19 +230,21 @@ public class DateTimeMigration {
public static Literal getDateTimeLiteral(Date date) { 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("UTC"));
//Calendar cal = Calendar.getInstance( TimeZone.getTimeZone("GMT") ); cal.setTime(date);
cal.set(Calendar.HOUR, 0);
Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0);
cal.setTime(date); cal.set(Calendar.MINUTE, 0);
XSDDateTime dt = new XSDDateTime(cal); cal.set(Calendar.SECOND,0);
return ResourceFactory.createTypedLiteral(dt); 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) { public static String stmtString(Statement statement) {
return " subject = " + statement.getSubject().getURI() + return " subject = " + statement.getSubject().getURI() +
" property = " + statement.getPredicate().getURI() + " property = " + statement.getPredicate().getURI() +
" object = " + (statement.getObject().isLiteral() ? ((Literal)statement.getObject()).getLexicalForm() + " (Literal)" " object = " + (statement.getObject().isLiteral() ? ((Literal)statement.getObject()).getLexicalForm() + " (Literal)"
: ((Resource)statement.getObject()).getURI() + " (Resource)"); : ((Resource)statement.getObject()).getURI() + " (Resource)");
} }
} }