AuthoringAction
action.
+ *
+ * @author Marcin Cieslak
+ * @see org.lamsfoundation.lams.tool.survey.web.controller.AuthoringAction
+ */
+@Controller
+@RequestMapping("/authoringCondition")
+public class AuthoringConditionController {
+
+ @Autowired
+ @Qualifier("lasurvSurveyService")
+ private ISurveyService surveyService;
+
+ /**
+ * Display empty page for a new condition.
+ *
+ * @param surveyConditionForm
+ * @param request
+ * @return
+ */
+
+ @RequestMapping("/newConditionInit")
+ public String newConditionInit(HttpServletRequest request) {
+
+ SurveyConditionForm surveyConditionForm = new SurveyConditionForm();
+ String sessionMapId = request.getParameter(SurveyConstants.ATTR_SESSION_MAP_ID);
+ surveyConditionForm.setSessionMapID(sessionMapId);
+ populateFormWithPossibleItems(surveyConditionForm, request);
+ surveyConditionForm.setOrderId(-1);
+ request.setAttribute("surveyConditionForm", surveyConditionForm);
+ return "pages/authoring/addCondition";
+ }
+
+ /**
+ * Display edit page for an existing condition.
+ *
+ * @param SurveyConditionForm
+ * @param request
+ * @return
+ */
+ @RequestMapping("/editCondition")
+ public String editCondition(SurveyConditionForm SurveyConditionForm, HttpServletRequest request) {
+
+ String sessionMapID = SurveyConditionForm.getSessionMapID();
+ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID);
+
+ int orderId = NumberUtils.stringToInt(request.getParameter(SurveyConstants.PARAM_ORDER_ID), -1);
+ SurveyCondition condition = null;
+ if (orderId != -1) {
+ SortedSetHttpSession
+ * condition list. Notice, this save is not persist them into database, just save HttpSession
+ * temporarily. Only they will be persist when the entire authoring page is being persisted.
+ *
+ * @param mapping
+ * @param form
+ * @param request
+ * @param response
+ * @return
+ * @throws ServletException
+ */
+ @RequestMapping("/saveOrUpdateCondition")
+ public String saveOrUpdateCondition(SurveyConditionForm surveyConditionForm, Errors errors,
+ HttpServletRequest request) {
+
+// ActionErrors errors = validateSurveyCondition(conditionForm, request);
+
+ validateSurveyCondition(surveyConditionForm, request, errors);
+ if (errors.hasErrors()) {
+ populateFormWithPossibleItems(surveyConditionForm, request);
+ return "pages/authoring/addCondition";
+ }
+
+ try {
+ extractFormToSurveyCondition(request, surveyConditionForm);
+ } catch (Exception e) {
+
+ errors.reject("error.condition");
+ if (errors.hasErrors()) {
+ populateFormWithPossibleItems(surveyConditionForm, request);
+ return "pages/authoring/addCondition";
+ }
+ }
+
+ request.setAttribute(SurveyConstants.ATTR_SESSION_MAP_ID, surveyConditionForm.getSessionMapID());
+
+ return "pages/authoring/conditionList";
+ }
+
+ /**
+ * Remove condition from HttpSession list and update page display. As authoring rule, all persist only happen when
+ * user submit whole page. So this remove is just impact HttpSession values.
+ *
+ * @param mapping
+ * @param surveyConditionForm
+ * @param request
+ * @param response
+ * @return
+ */
+ @RequestMapping("/removeCondition")
+ public String removeCondition(ActionForm surveyConditionForm, HttpServletRequest request) {
+
+ // get back sessionMAP
+ String sessionMapID = WebUtil.readStrParam(request, SurveyConstants.ATTR_SESSION_MAP_ID);
+ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID);
+
+ int orderId = NumberUtils.stringToInt(request.getParameter(SurveyConstants.PARAM_ORDER_ID), -1);
+ if (orderId != -1) {
+ SortedSetjava.util.List
from HttpSession by given name.
+ *
+ * @param request
+ * @param name
+ * @return
+ */
+ private List getListFromSession(SessionMap sessionMap, String name) {
+ List list = (List) sessionMap.get(name);
+ if (list == null) {
+ list = new ArrayList();
+ sessionMap.put(name, list);
+ }
+ return list;
+ }
+
+ /**
+ * This method will populate condition information to its form for edit use.
+ *
+ * @param orderId
+ * @param condition
+ * @param form
+ * @param request
+ */
+ private void populateConditionToForm(int orderId, SurveyCondition condition, SurveyConditionForm form,
+ HttpServletRequest request) {
+ form.populateForm(condition);
+ if (orderId >= 0) {
+ form.setOrderId(orderId + 1);
+ }
+ }
+
+ /**
+ * This method will populate questions to choose to the form for edit use.
+ *
+ * @param sequenceId
+ * @param condition
+ * @param form
+ * @param request
+ */
+ private void populateFormWithPossibleItems(SurveyConditionForm conditionForm, HttpServletRequest request) {
+ // get back sessionMAP
+ String sessionMapID = conditionForm.getSessionMapID();
+ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID);
+
+ Set
|
- |
|
- |
|
- |
|
- |