Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java,v diff -u -r1.13 -r1.14 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java 14 Nov 2008 05:29:46 -0000 1.13 +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/web/action/LearningAction.java 19 Feb 2009 14:06:49 -0000 1.14 @@ -322,26 +322,27 @@ request.setAttribute(DacoConstants.ATTR_SESSION_MAP_ID, sessionMapID); sessionMap.put(DacoConstants.ATTR_LEARNING_CURRENT_TAB, 1); - ActionErrors errors = validateRecordForm(recordForm, questionList); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - refreshQuestionSummaries(mapping, request); - request.setAttribute(DacoConstants.ATTR_DISPLAYED_RECORD_NUMBER, recordForm.getDisplayedRecordNumber()); - return mapping.findForward(DacoConstants.SUCCESS); - } - List record = null; - List> records = (List>) sessionMap.get(DacoConstants.ATTR_RECORD_LIST); + int recordCount = records.size(); int displayedRecordNumber = recordForm.getDisplayedRecordNumber(); boolean isEdit = false; - if (displayedRecordNumber <= records.size()) { + if (displayedRecordNumber <= recordCount) { record = records.get(displayedRecordNumber - 1); isEdit = true; } else { record = new LinkedList(); + recordCount++; } + ActionErrors errors = validateRecordForm(daco, recordForm, questionList, recordCount); + if (!errors.isEmpty()) { + this.addErrors(request, errors); + refreshQuestionSummaries(mapping, request); + request.setAttribute(DacoConstants.ATTR_DISPLAYED_RECORD_NUMBER, recordForm.getDisplayedRecordNumber()); + return mapping.findForward(DacoConstants.SUCCESS); + } + Iterator questionIterator = questionList.iterator(); DacoQuestion question = null; int formAnswerNumber = 0; @@ -602,13 +603,9 @@ int recordCount = ((List) sessionMap.get(DacoConstants.ATTR_RECORD_LIST)).size(); Daco daco = (Daco) sessionMap.get(DacoConstants.ATTR_DACO); Short min = daco.getMinRecords(); - Short max = daco.getMaxRecords(); if (min != null && min > 0 && recordCount < min) { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DacoConstants.ERROR_MSG_RECORD_NOTENOUGH, daco .getMinRecords())); - } else if (max != null && max > 0 && recordCount > max) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DacoConstants.ERROR_MSG_RECORD_TOOMUCH, daco - .getMaxRecords())); } return errors; } @@ -676,13 +673,21 @@ return dacoUser; } - protected ActionErrors validateRecordForm(RecordForm recordForm, Set questionList) { + protected ActionErrors validateRecordForm(Daco daco, RecordForm recordForm, Set questionList, + int recordCount) { ActionErrors errors = new ActionErrors(); + Short maxRecords = daco.getMaxRecords(); + if (maxRecords != null && maxRecords > 0 && recordCount > maxRecords) { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(DacoConstants.ERROR_MSG_RECORD_TOOMUCH, daco + .getMaxRecords())); + } + Iterator questionIterator = questionList.iterator(); DacoQuestion question = null; int answerNumber = 0; int fileNumber = 0; int questionNumber = 1; + while (questionIterator.hasNext()) { question = questionIterator.next(); switch (question.getType()) { Index: lams_tool_daco/web/pages/learning/addRecord.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_daco/web/pages/learning/addRecord.jsp,v diff -u -r1.5 -r1.6 --- lams_tool_daco/web/pages/learning/addRecord.jsp 12 Aug 2008 01:43:04 -0000 1.5 +++ lams_tool_daco/web/pages/learning/addRecord.jsp 19 Feb 2009 14:06:49 -0000 1.6 @@ -35,7 +35,21 @@

- ${displayedRecordNumber} + + ${displayedRecordNumber} + +
+ + + +
+ +
+ + + +
+