Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rebd388504924fe0a06bbf20a06fe0032abbf8d15 -ra2d9832a7b38e22d15bec905ca82b791253f7566 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java =================================================================== diff -u -r7090e391bfb2b94be0a2ff7ffcbfa4f3e9eb5743 -ra2d9832a7b38e22d15bec905ca82b791253f7566 --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision 7090e391bfb2b94be0a2ff7ffcbfa4f3e9eb5743) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision a2d9832a7b38e22d15bec905ca82b791253f7566) @@ -71,6 +71,7 @@ import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; @@ -100,8 +101,6 @@ import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -1437,9 +1436,8 @@ HttpServletResponse response) { PedagogicalPlannerAction.log.debug("Saving grouping activity"); PedagogicalPlannerGroupingForm plannerForm = (PedagogicalPlannerGroupingForm) form; - MultiValueMap errorMap = new LinkedMultiValueMap<>(); - errorMap = plannerForm.validate(); - if (errorMap.isEmpty()) { + ActionMessages errors = plannerForm.validate(); + if (errors.isEmpty()) { Grouping grouping = getAuthoringService().getGroupingById(plannerForm.getToolContentID()); if (grouping.isRandomGrouping()) { RandomGrouping randomGrouping = (RandomGrouping) grouping; @@ -1467,8 +1465,7 @@ grouping.setMaxNumberOfGroups(number); } } else { - request.setAttribute("errorMap", errorMap); - ; + saveMessages(request, errors); } return mapping.findForward(PedagogicalPlannerAction.FORWARD_GROUPING); } Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerActivityForm.java =================================================================== diff -u -r7090e391bfb2b94be0a2ff7ffcbfa4f3e9eb5743 -ra2d9832a7b38e22d15bec905ca82b791253f7566 --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerActivityForm.java (.../PedagogicalPlannerActivityForm.java) (revision 7090e391bfb2b94be0a2ff7ffcbfa4f3e9eb5743) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerActivityForm.java (.../PedagogicalPlannerActivityForm.java) (revision a2d9832a7b38e22d15bec905ca82b791253f7566) @@ -22,8 +22,11 @@ package org.lamsfoundation.lams.web.planner; +import javax.servlet.http.HttpServletRequest; + import org.apache.struts.action.ActionForm; -import org.springframework.util.LinkedMultiValueMap; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessages; /** * The base for any Pedagogical Planner Action Forms that other activities. All Java forms need to inherit from this @@ -76,21 +79,21 @@ this.callID = callID; } -// @Override -// public void reset(ActionMapping mapping, HttpServletRequest request) { -// super.reset(mapping, request); -// setValid(true); -// } + @Override + public void reset(ActionMapping mapping, HttpServletRequest request) { + super.reset(mapping, request); + setValid(true); + } /** * Validates form. Must set {@link #valid} property. Can be overriden by inheriting classes, although call to this * method is only in activities themselves (and not on a higher level like lams_central). * * @return */ - public LinkedMultiValueMap validate() { + public ActionMessages validate() { setValid(true); - return new LinkedMultiValueMap<>(); + return new ActionMessages(); } public Integer getActivityOrderNumber() { Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerGroupingForm.java =================================================================== diff -u -r7090e391bfb2b94be0a2ff7ffcbfa4f3e9eb5743 -ra2d9832a7b38e22d15bec905ca82b791253f7566 --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerGroupingForm.java (.../PedagogicalPlannerGroupingForm.java) (revision 7090e391bfb2b94be0a2ff7ffcbfa4f3e9eb5743) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerGroupingForm.java (.../PedagogicalPlannerGroupingForm.java) (revision a2d9832a7b38e22d15bec905ca82b791253f7566) @@ -29,8 +29,6 @@ import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.LearnerChoiceGrouping; import org.lamsfoundation.lams.learningdesign.RandomGrouping; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; /** * Form for grouping activities in Pedagogical Planner. @@ -103,8 +101,8 @@ * Checks if the provided group/learner number is a nonnegative integer. */ @Override - public LinkedMultiValueMap validate() { - MultiValueMap errorMap = new LinkedMultiValueMap<>(); + public ActionMessages validate() { + ActionMessages errors = new ActionMessages(); boolean valid = true; boolean numberValid = true; @@ -118,11 +116,11 @@ numberValid = false; } if (!numberValid) { - errorMap.add("GLOBAL", "error.planner.grouping.number.integer"); + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.planner.grouping.number.integer")); valid = false; } setValid(valid); - return (LinkedMultiValueMap) errorMap; + return errors; } public String getLearnersPerGroup() { Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerSpringGroupingForm.java =================================================================== diff -u --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerSpringGroupingForm.java (revision 0) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerSpringGroupingForm.java (revision a2d9832a7b38e22d15bec905ca82b791253f7566) @@ -0,0 +1,148 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.web.planner; + +import org.apache.commons.lang.StringUtils; +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.LearnerChoiceGrouping; +import org.lamsfoundation.lams.learningdesign.RandomGrouping; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +/** + * Form for grouping activities in Pedagogical Planner. + * + * @author Marcin Cieslak + * + */ +public class PedagogicalPlannerSpringGroupingForm extends PedagogicalPlannerActivitySpringForm { + private Integer groupingTypeId; + private String numberOfGroups; + private String learnersPerGroup; + private Boolean equalGroupSizes; + private Boolean viewStudentsBeforeSelection; + + public Integer getGroupingTypeId() { + return groupingTypeId; + } + + public void setGroupingTypeId(Integer groupingTypeId) { + this.groupingTypeId = groupingTypeId; + } + + public String getNumberOfGroups() { + return numberOfGroups; + } + + public void setNumberOfGroups(String numberOfGroups) { + this.numberOfGroups = numberOfGroups; + } + + /** + * Fills the form properties with existing grouping object. + * + * @param grouping + * persistent object to use + */ + public void fillForm(Grouping grouping) { + if (grouping != null) { + setGroupingTypeId(grouping.getGroupingTypeId()); + if (grouping.isRandomGrouping()) { + RandomGrouping randomGrouping = (RandomGrouping) grouping; + String number = randomGrouping.getNumberOfGroups() == null ? null + : String.valueOf(randomGrouping.getNumberOfGroups()); + setNumberOfGroups(number); + + number = randomGrouping.getLearnersPerGroup() == null ? null + : String.valueOf(randomGrouping.getLearnersPerGroup()); + setLearnersPerGroup(number); + } else if (grouping.isLearnerChoiceGrouping()) { + LearnerChoiceGrouping learnerChoiceGrouping = (LearnerChoiceGrouping) grouping; + String number = learnerChoiceGrouping.getNumberOfGroups() == null ? null + : String.valueOf(learnerChoiceGrouping.getNumberOfGroups()); + setNumberOfGroups(number); + + number = learnerChoiceGrouping.getLearnersPerGroup() == null ? null + : String.valueOf(learnerChoiceGrouping.getLearnersPerGroup()); + setLearnersPerGroup(number); + + setEqualGroupSizes(learnerChoiceGrouping.getEqualNumberOfLearnersPerGroup()); + setViewStudentsBeforeSelection(learnerChoiceGrouping.getViewStudentsBeforeSelection()); + } else { + String numberOfGroups = grouping.getMaxNumberOfGroups() == null ? null + : String.valueOf(grouping.getMaxNumberOfGroups()); + setNumberOfGroups(numberOfGroups); + } + } + } + + /** + * Checks if the provided group/learner number is a nonnegative integer. + */ + @Override + public LinkedMultiValueMap validate() { + MultiValueMap errorMap = new LinkedMultiValueMap<>(); + boolean valid = true; + boolean numberValid = true; + + String numberToParse = StringUtils.isEmpty(getNumberOfGroups()) ? getLearnersPerGroup() : getNumberOfGroups(); + try { + int number = Integer.parseInt(numberToParse); + if (number < 0) { + numberValid = false; + } + } catch (Exception e) { + numberValid = false; + } + if (!numberValid) { + errorMap.add("GLOBAL", "error.planner.grouping.number.integer"); + valid = false; + } + setValid(valid); + return (LinkedMultiValueMap) errorMap; + } + + public String getLearnersPerGroup() { + return learnersPerGroup; + } + + public void setLearnersPerGroup(String numberOfLearners) { + learnersPerGroup = numberOfLearners; + } + + public Boolean getEqualGroupSizes() { + return equalGroupSizes; + } + + public void setEqualGroupSizes(Boolean equalGroupsSizes) { + equalGroupSizes = equalGroupsSizes; + } + + public Boolean getViewStudentsBeforeSelection() { + return viewStudentsBeforeSelection; + } + + public void setViewStudentsBeforeSelection(Boolean viewStudentsBeforeSelection) { + this.viewStudentsBeforeSelection = viewStudentsBeforeSelection; + } +} \ No newline at end of file