1. Changes to fix the bug in display of years attached to publications. (see NIHVIVO-1794) It was caused due to change in Date/Time format representation in the backend.

2. Added code so new date/time formatters can be added with ease.
This commit is contained in:
cdtank 2011-01-27 18:21:02 +00:00
parent c2176664ac
commit b65c2bccbe
3 changed files with 48 additions and 5 deletions

View file

@ -2,7 +2,12 @@
package edu.cornell.mannlib.vitro.webapp.visualization.constants;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
/**
* This contains the constants related to all the value objects.
@ -24,5 +29,15 @@ public class VOConstants {
public static final int MINIMUM_PUBLICATION_YEAR = 1800;
public static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR);
@SuppressWarnings("serial")
public static final List<DateTimeFormatter> POSSIBLE_DATE_TIME_FORMATTERS = new ArrayList<DateTimeFormatter>() {{
add(ISODateTimeFormat.dateTimeNoMillis());
add(ISODateTimeFormat.dateHourMinuteSecond());
add(ISODateTimeFormat.dateTimeParser());
}};
}

View file

@ -10,6 +10,7 @@ import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
/**
* @author cdtank
@ -112,12 +113,11 @@ public class BiboDocument extends Individual {
if (publicationDate != null) {
DateTimeFormatter dateTimeFormat = ISODateTimeFormat.dateHourMinuteSecond();
DateTime validParsedDateTimeObject = UtilityFunctions.getValidParsedDateTimeObject(publicationDate);
try {
DateTime dateTime = dateTimeFormat.parseDateTime(publicationDate);
return String.valueOf(dateTime.getYear());
} catch (Exception e) {
if (validParsedDateTimeObject != null) {
return String.valueOf(validParsedDateTimeObject.getYear());
} else {
return publicationYear != null ? publicationYear : VOConstants.DEFAULT_PUBLICATION_YEAR;
}

View file

@ -3,8 +3,10 @@
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
@ -16,6 +18,9 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
@ -23,6 +28,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
@ -254,4 +260,26 @@ public class UtilityFunctions {
}
public static DateTime getValidParsedDateTimeObject(String unparsedDateTime) {
for (DateTimeFormatter currentFormatter : VOConstants.POSSIBLE_DATE_TIME_FORMATTERS) {
try {
DateTime dateTime = currentFormatter.parseDateTime(unparsedDateTime);
return dateTime;
} catch (Exception e2) {
/*
* The current date-time formatter did not pass the muster.
* */
}
}
/*
* This means that none of the date time formatters worked.
* */
return null;
}
}