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; package edu.cornell.mannlib.vitro.webapp.visualization.constants;
import java.util.ArrayList;
import java.util.Calendar; 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. * This contains the constants related to all the value objects.
@ -23,6 +28,16 @@ public class VOConstants {
public static final int NUM_CHARS_IN_YEAR_FORMAT = 4; public static final int NUM_CHARS_IN_YEAR_FORMAT = 4;
public static final int MINIMUM_PUBLICATION_YEAR = 1800; public static final int MINIMUM_PUBLICATION_YEAR = 1800;
public static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR); 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 org.joda.time.format.ISODateTimeFormat;
import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions;
/** /**
* @author cdtank * @author cdtank
@ -112,12 +113,11 @@ public class BiboDocument extends Individual {
if (publicationDate != null) { if (publicationDate != null) {
DateTimeFormatter dateTimeFormat = ISODateTimeFormat.dateHourMinuteSecond(); DateTime validParsedDateTimeObject = UtilityFunctions.getValidParsedDateTimeObject(publicationDate);
try { if (validParsedDateTimeObject != null) {
DateTime dateTime = dateTimeFormat.parseDateTime(publicationDate); return String.valueOf(validParsedDateTimeObject.getYear());
return String.valueOf(dateTime.getYear()); } else {
} catch (Exception e) {
return publicationYear != null ? publicationYear : VOConstants.DEFAULT_PUBLICATION_YEAR; return publicationYear != null ? publicationYear : VOConstants.DEFAULT_PUBLICATION_YEAR;
} }

View file

@ -3,8 +3,10 @@
package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils; package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeMap; import java.util.TreeMap;
@ -16,6 +18,9 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log; 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.beans.Portal;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers; 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.ResponseValues;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; 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.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.constants.VisConstants;
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument;
import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData;
@ -253,5 +259,27 @@ public class UtilityFunctions {
return yearToGrantCount; return yearToGrantCount;
} }
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;
}
} }