Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -ra2ab3b882b45fe0b1fb6bc098f8cd6fbe6bf6267 -r71afc64b61ca458026fa0b666065ddf9f93b822d Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/util/DateUtil.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r71afc64b61ca458026fa0b666065ddf9f93b822d --- lams_common/src/java/org/lamsfoundation/lams/util/DateUtil.java (.../DateUtil.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/util/DateUtil.java (.../DateUtil.java) (revision 71afc64b61ca458026fa0b666065ddf9f93b822d) @@ -43,8 +43,10 @@ public class DateUtil { - public static final String FLASH_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; - /** + public static final String WDDX_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; + public static final String LAMS_FLASH_FORMAT = "dd/M/yyyy h:mm a"; + + /** * Convert your local time to Universal Time Coordinator. * TODO conversion is not working properly. The returned Date object still * contain server local timezone rather than GMT time zone. @@ -89,7 +91,6 @@ * * @param dateString the date as a string * @return converted Date - * TODO junit tests to test this code. * @throws ParseException */ public static Date convertFromString(String dateString) throws ParseException @@ -100,7 +101,7 @@ // Replace this implementation with commons.lang.time.DateUtils.parseDate() // if/when we upgrade to commons 2.1 SimpleDateFormat parser = null; - String[] parseFormats = new String[] {FLASH_FORMAT}; + String[] parseFormats = new String[] {WDDX_FORMAT}; for (int i = 0; i < parseFormats.length; i++) { if (i == 0) { parser = new SimpleDateFormat(parseFormats[0]); @@ -136,5 +137,21 @@ SimpleDateFormat parser = new SimpleDateFormat(dateFormat); return parser.parse(dateString); } + + /** + * Convert from String formatted date to a Date. Tries the following + * date format: DD/MM/YYYY hh:mm a + * + * This is the format used by Flash to send the data/time for + * scheduling a lesson. It has a matching custom date formatter in Flash + * + * @param dateString the date as a string + * @return converted Date + * @throws ParseException + */ + public static Date convertFromLAMSFlashFormat(String dateString) throws ParseException + { + return convertFromString(dateString, LAMS_FLASH_FORMAT); + } } Index: lams_common/test/java/org/lamsfoundation/lams/util/TestDateUtil.java =================================================================== diff -u -r068c279a945dcd86add86ddf7fa1648f797d079a -r71afc64b61ca458026fa0b666065ddf9f93b822d --- lams_common/test/java/org/lamsfoundation/lams/util/TestDateUtil.java (.../TestDateUtil.java) (revision 068c279a945dcd86add86ddf7fa1648f797d079a) +++ lams_common/test/java/org/lamsfoundation/lams/util/TestDateUtil.java (.../TestDateUtil.java) (revision 71afc64b61ca458026fa0b666065ddf9f93b822d) @@ -23,6 +23,7 @@ package org.lamsfoundation.lams.util; import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -75,8 +76,8 @@ public void testConvertFromUTCToLocal() { } - /* - * Test the conversion of dates given hardcoded date formats. + + /** Test the conversion of dates given hardcoded date formats. */ public void testConvertFromStringString() { @@ -115,8 +116,8 @@ assertEquals(cal.get(Calendar.SECOND),second); } - /* - * Test the conversion of dates given supplied date formats. + + /** Test the conversion of dates given supplied date formats. */ public void testConvertFromStringStringString() { Date date; @@ -131,4 +132,25 @@ } } + public void testFlashConversion() { + Date date = null; + String dateString = null; + + try { + dateString = "17/12/2006 11:13 AM"; + date = DateUtil.convertFromLAMSFlashFormat(dateString); + checkDate(date, 2006, Calendar.DECEMBER, 17, 11, 13, 0); + + dateString = "17/09/2006 11:13 AM"; + date = DateUtil.convertFromLAMSFlashFormat(dateString); + checkDate(date, 2006, Calendar.SEPTEMBER, 17, 11, 13, 0); + + dateString = "17/9/2006 02:03 PM"; + date = DateUtil.convertFromLAMSFlashFormat(dateString); + checkDate(date, 2006, Calendar.SEPTEMBER, 17, 14, 3, 0); + + } catch (ParseException e) { + fail("Parse exception thrown trying to convert "+dateString); + } + } } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -r1b4549fd971c7cb678b351e693d324a74b1ba67a -r71afc64b61ca458026fa0b666065ddf9f93b822d --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 1b4549fd971c7cb678b351e693d324a74b1ba67a) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 71afc64b61ca458026fa0b666065ddf9f93b822d) @@ -28,7 +28,6 @@ import java.io.PrintWriter; import java.text.DateFormat; import java.util.Date; -import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -43,6 +42,7 @@ import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; +import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.util.wddx.FlashMessage; @@ -72,7 +72,7 @@ */ public class MonitoringAction extends LamsDispatchAction { - + //--------------------------------------------------------------------- // Instance variables //--------------------------------------------------------------------- @@ -258,8 +258,10 @@ try { long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + String dateStr = WebUtil.readStrParam(request, MonitoringConstants.PARAM_LESSON_START_DATE); - Date startDate = DateFormat.getInstance().parse(dateStr); + Date startDate = DateUtil.convertFromLAMSFlashFormat(dateStr); + monitoringService.startLessonOnSchedule(lessonId,startDate,getUserId(request)); flashMessage = new FlashMessage("startOnScheduleLesson",Boolean.TRUE); }catch (Exception e) {