Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/SpreadsheetConstants.java =================================================================== diff -u -re1a335ed6fa2072efc12776a3573856a386938dc -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/SpreadsheetConstants.java (.../SpreadsheetConstants.java) (revision e1a335ed6fa2072efc12776a3573856a386938dc) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/SpreadsheetConstants.java (.../SpreadsheetConstants.java) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -97,4 +97,6 @@ public static final int SORT_BY_USERNAME_DESC = 3; public static final int SORT_BY_MARKED_ASC = 4; public static final int SORT_BY_MARKED_DESC = 5; + + public static final int MARK_NUM_DEC_PLACES = 2; } Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/dbupdates/patch20151123.sql =================================================================== diff -u --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/dbupdates/patch20151123.sql (revision 0) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/dbupdates/patch20151123.sql (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -0,0 +1,14 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +----------------------Put all sql statements below here------------------------- + +-- LDEV-3612 Marks should accept decimal +ALTER IGNORE TABLE tl_lasprd10_spreadsheet_mark CHANGE COLUMN marks marks FLOAT NULL DEFAULT NULL; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/model/SpreadsheetMark.java =================================================================== diff -u -ra7fed1be51941ace379dbb695d52bd08a315dae6 -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/model/SpreadsheetMark.java (.../SpreadsheetMark.java) (revision a7fed1be51941ace379dbb695d52bd08a315dae6) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/model/SpreadsheetMark.java (.../SpreadsheetMark.java) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -45,7 +45,7 @@ /** identifier field */ private Long uid; - private String marks; + private Float marks; private String comments; private Date dateMarksReleased; @@ -54,7 +54,7 @@ } /** full constructor */ - public SpreadsheetMark(String comments, String marks, Date dateMarksReleased) { + public SpreadsheetMark(String comments, Float marks, Date dateMarksReleased) { this.comments = comments; this.marks = marks; this.dateMarksReleased = dateMarksReleased; @@ -74,11 +74,11 @@ /** * @hibernate.property column="marks" */ - public String getMarks() { + public Float getMarks() { return this.marks; } - public void setMarks(String marks) { + public void setMarks(Float marks) { this.marks = marks; } @@ -148,5 +148,6 @@ .append(getDateMarksReleased()) .toHashCode(); } + } \ No newline at end of file Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java =================================================================== diff -u -rbe07c35c372d904a65581d98660e73f3b13b69db -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java (.../LearningAction.java) (revision be07c35c372d904a65581d98660e73f3b13b69db) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/LearningAction.java (.../LearningAction.java) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -328,8 +328,8 @@ // get the existing reflection entry ISpreadsheetService submitFilesService = getSpreadsheetService(); - SessionMap map = (SessionMap)request.getSession().getAttribute(sessionMapID); - Long toolSessionID = (Long)map.get(AttributeNames.PARAM_TOOL_SESSION_ID); + SessionMap sessionMap = (SessionMap)request.getSession().getAttribute(sessionMapID); + Long toolSessionID = (Long)sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); NotebookEntry entry = submitFilesService.getEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, SpreadsheetConstants.TOOL_SIGNATURE, user.getUserID()); if (entry != null) { Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/MonitoringAction.java =================================================================== diff -u -r216fed3c7edfdf10855196a0e9450c68f6ed4485 -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 216fed3c7edfdf10855196a0e9450c68f6ed4485) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -72,6 +72,7 @@ import org.lamsfoundation.lams.tool.spreadsheet.service.ISpreadsheetService; import org.lamsfoundation.lams.tool.spreadsheet.web.form.MarkForm; import org.lamsfoundation.lams.util.DateUtil; +import org.lamsfoundation.lams.util.NumberUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; @@ -182,7 +183,8 @@ if ( user.getUserModifiedSpreadsheet() != null ) { responseRow.put("userModifiedSpreadsheet", "true"); if ( user.getUserModifiedSpreadsheet().getMark() != null ) { - responseRow.put("mark", user.getUserModifiedSpreadsheet().getMark().getMarks()); + responseRow.put("mark", NumberUtil.formatLocalisedNumber(user.getUserModifiedSpreadsheet().getMark().getMarks(), + request.getLocale(), SpreadsheetConstants.MARK_NUM_DEC_PLACES) ); } } @@ -326,15 +328,8 @@ cell = row.createCell(count++); if (mark.getMarks() != null) { - String marks = ""; - try { - NumberFormat format = NumberFormat.getInstance(); - format.setMaximumFractionDigits(1); - marks = format.format(NumberUtils.createFloat(mark.getMarks())); - } - catch (Exception e) { - } - cell.setCellValue(marks); + cell.setCellValue(NumberUtil.formatLocalisedNumber(mark.getMarks(), request.getLocale(), + SpreadsheetConstants.MARK_NUM_DEC_PLACES)); } else { cell.setCellValue(""); @@ -394,7 +389,8 @@ markForm.setUserUid(user.getUid()); if (user.getUserModifiedSpreadsheet().getMark() != null) { SpreadsheetMark mark = user.getUserModifiedSpreadsheet().getMark(); - markForm.setMarks(mark.getMarks()); + markForm.setMarks(NumberUtil.formatLocalisedNumber(mark.getMarks(), request.getLocale(), + SpreadsheetConstants.MARK_NUM_DEC_PLACES)); markForm.setComments(mark.getComments()); } @@ -404,12 +400,34 @@ public ActionForward saveMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MarkForm markForm = (MarkForm) form; - ActionErrors errors = validateSpreadsheetMark(markForm); + Float markFloat = null; + String markComment = null; + + // get the mark details, validating as we go. + ActionErrors errors = new ActionErrors(); + String markStr = markForm.getMarks(); + if (StringUtils.isBlank(markStr)) { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(SpreadsheetConstants.ERROR_MSG_MARKS_BLANK)); + } else { + try { + markFloat = NumberUtil.getLocalisedFloat(markStr, request.getLocale()); + } + catch (Exception e) { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(SpreadsheetConstants.ERROR_MSG_MARKS_INVALID_NUMBER)); + } + } + + markComment = markForm.getComments(); + if (StringUtils.isBlank(markComment)) { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(SpreadsheetConstants.ERROR_MSG_COMMENTS_BLANK)); + } + if (!errors.isEmpty()) { this.addErrors(request, errors); return mapping.findForward("editMark"); } + // passed validation so proceed to save Long userUid = markForm.getUserUid(); SpreadsheetUser user = getSpreadsheetService().getUser(userUid); if (user != null && user.getUserModifiedSpreadsheet() != null) { @@ -422,13 +440,15 @@ else { //edit mark = user.getUserModifiedSpreadsheet().getMark(); } - mark.setMarks(markForm.getMarks()); - mark.setComments(markForm.getComments()); + mark.setMarks(markFloat); + mark.setComments(markComment); + getSpreadsheetService().saveOrUpdateUserModifiedSpreadsheet(user.getUserModifiedSpreadsheet()); } - request.setAttribute("mark",markForm.getMarks()); + request.setAttribute("mark",NumberUtil.formatLocalisedNumber(markFloat, request.getLocale(), + SpreadsheetConstants.MARK_NUM_DEC_PLACES)); // reduce it to the standard number of decimal places for redisplay request.setAttribute("userUid",userUid); //set session map ID so that itemlist.jsp can get sessionMAP @@ -458,30 +478,4 @@ return (ISpreadsheetService) wac.getBean(SpreadsheetConstants.RESOURCE_SERVICE); } - /** - * Vaidate UserModifiedSpreadsheet mark - * @param itemForm - * @return - */ - private ActionErrors validateSpreadsheetMark(MarkForm markForm) { - ActionErrors errors = new ActionErrors(); - - String mark = markForm.getMarks(); - if (StringUtils.isBlank(mark)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(SpreadsheetConstants.ERROR_MSG_MARKS_BLANK)); - } - - try { - Long.parseLong(mark); - } - catch (Exception e) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(SpreadsheetConstants.ERROR_MSG_MARKS_INVALID_NUMBER)); - } - - if (StringUtils.isBlank(markForm.getComments())) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(SpreadsheetConstants.ERROR_MSG_COMMENTS_BLANK)); - } - - return errors; - } } Index: lams_tool_spreadsheet/web/pages/export/exportportfolio.jsp =================================================================== diff -u -rd21e7fac21ab19cb876cdf2673297d3204614828 -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision d21e7fac21ab19cb876cdf2673297d3204614828) +++ lams_tool_spreadsheet/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -1,4 +1,5 @@ <%@ include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants"%> Index: lams_tool_spreadsheet/web/pages/export/summarylist.jsp =================================================================== diff -u -rd21e7fac21ab19cb876cdf2673297d3204614828 -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/web/pages/export/summarylist.jsp (.../summarylist.jsp) (revision d21e7fac21ab19cb876cdf2673297d3204614828) +++ lams_tool_spreadsheet/web/pages/export/summarylist.jsp (.../summarylist.jsp) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -59,7 +59,7 @@ - + Index: lams_tool_spreadsheet/web/pages/learning/learning.jsp =================================================================== diff -u -r0c976abe0d0dd1b01584c706b0f667b2366a9615 -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/web/pages/learning/learning.jsp (.../learning.jsp) (revision 0c976abe0d0dd1b01584c706b0f667b2366a9615) +++ lams_tool_spreadsheet/web/pages/learning/learning.jsp (.../learning.jsp) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -1,6 +1,7 @@ <%@ include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants"%> @@ -19,7 +20,6 @@ <c:set var="toolSessionID" value="${sessionMap.toolSessionID}" /> <c:set var="spreadsheet" value="${sessionMap.spreadsheet}" /> <c:set var="finishedLock" value="${sessionMap.finishedLock}" /> - <c:set var="user" value="${sessionMap.user}" /> <script type="text/javascript"> <!-- @@ -110,7 +110,7 @@ <fmt:message key="label.learning.not.available" /> </c:when> <c:otherwise> - <c:out value="${mark.marks}" escapeXml="false" /> + <fmt:formatNumber type="number" maxFractionDigits="<%= SpreadsheetConstants.MARK_NUM_DEC_PLACES %>" value="${mark.marks}"/> </c:otherwise> </c:choose> </td> Index: lams_tool_spreadsheet/web/pages/monitoring/parts/viewallmarks.jsp =================================================================== diff -u -r969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d -rf5e874d7fa041f79705ddc6a1799d2188ae24bc9 --- lams_tool_spreadsheet/web/pages/monitoring/parts/viewallmarks.jsp (.../viewallmarks.jsp) (revision 969c6dbe2dfdd2f86096a05d3c59b8ab5f0ef21d) +++ lams_tool_spreadsheet/web/pages/monitoring/parts/viewallmarks.jsp (.../viewallmarks.jsp) (revision f5e874d7fa041f79705ddc6a1799d2188ae24bc9) @@ -2,6 +2,8 @@ "http://www.w3.org/TR/html4/strict.dtd"> <%@include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.spreadsheet.SpreadsheetConstants"%> + <lams:html> <lams:head> <title><fmt:message key="activity.title" /> @@ -60,7 +62,7 @@ - +