Index: lams_tool_assessment/conf/xdoclet/struts-actions.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/conf/xdoclet/struts-actions.xml,v diff -u -r1.12.6.3 -r1.12.6.4 --- lams_tool_assessment/conf/xdoclet/struts-actions.xml 16 Sep 2011 16:59:54 -0000 1.12.6.3 +++ lams_tool_assessment/conf/xdoclet/struts-actions.xml 29 Sep 2011 19:08:05 -0000 1.12.6.4 @@ -116,16 +116,6 @@ parameter="removeQuestion"> - - - - - - Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java,v diff -u -r1.11.6.3 -r1.11.6.4 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java 29 Sep 2011 13:43:36 -0000 1.11.6.3 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestion.java 29 Sep 2011 19:08:05 -0000 1.11.6.4 @@ -142,10 +142,6 @@ obj.units = set; } - // clone AssessmentUser as well - if (this.createBy != null) { - ((AssessmentQuestion) obj).setCreateBy((AssessmentUser) this.createBy.clone()); - } } catch (CloneNotSupportedException e) { log.error("When clone " + AssessmentQuestion.class + " failed"); } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java,v diff -u -r1.1 -r1.1.8.1 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java 25 Feb 2009 22:16:33 -0000 1.1 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionOption.java 29 Sep 2011 19:08:05 -0000 1.1.8.1 @@ -68,7 +68,7 @@ return uid; } - private void setUid(Long uuid) { + public void setUid(Long uuid) { uid = uuid; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java,v diff -u -r1.4 -r1.4.8.1 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java 11 Mar 2009 16:08:56 -0000 1.4 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentUnit.java 29 Sep 2011 19:08:05 -0000 1.4.8.1 @@ -55,7 +55,7 @@ return uid; } - private void setUid(Long uuid) { + public void setUid(Long uuid) { uid = uuid; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java,v diff -u -r1.15.2.1.2.5 -r1.15.2.1.2.6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 28 Sep 2011 20:59:39 -0000 1.15.2.1.2.5 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 29 Sep 2011 19:08:05 -0000 1.15.2.1.2.6 @@ -215,7 +215,7 @@ public Assessment getAssessmentByContentId(Long contentId) { Assessment rs = assessmentDao.getByContentId(contentId); if (rs == null) { - AssessmentServiceImpl.log.error("Could not find the content by given ID:" + contentId); + AssessmentServiceImpl.log.debug("Could not find the content by given ID:" + contentId); } return rs; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java,v diff -u -r1.16.6.5 -r1.16.6.6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 28 Sep 2011 20:59:39 -0000 1.16.6.5 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/AuthoringAction.java 29 Sep 2011 19:08:05 -0000 1.16.6.6 @@ -156,12 +156,6 @@ if (param.equals("removeQuestion")) { return removeQuestion(mapping, form, request, response); } - if (param.equals("upQuestion")) { - return upQuestion(mapping, form, request, response); - } - if (param.equals("downQuestion")) { - return downQuestion(mapping, form, request, response); - } // ----------------------- Question Reference functions --------------------------- if (param.equals("addQuestionReference")) { return addQuestionReference(mapping, form, request, response); @@ -214,169 +208,6 @@ } /** - * - * - * @param mapping - * @param form - * @param request - * @param response - * @return - * @throws ServletException - */ - private ActionForward importInit(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws ServletException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); - - return mapping.findForward(AssessmentConstants.SUCCESS); - } - - private ActionForward importQuestions(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws ServletException { - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); - AssessmentForm assessmentForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); - Set oldQuestions = getQuestionList(sessionMap); - - - List ldErrorMsgs = new ArrayList(); - List toolsErrorMsgs = new ArrayList(); - try { - File designFile = null; - Map params = new HashMap(); - String filename = null; - - String uploadPath = FileUtil.createTempDirectory("_uploaded_2questions_xml"); - - DiskFileUpload fu = new DiskFileUpload(); - // maximum size that will be stored in memory - fu.setSizeThreshold(4096); - // the location for saving data that is larger than getSizeThreshold() - // fu.setRepositoryPath(uploadPath); - - List fileItems = fu.parseRequest(request); - Iterator iter = fileItems.iterator(); - while (iter.hasNext()) { - FileItem fi = (FileItem) iter.next(); - // UPLOAD_FILE is input field from HTML page - if (!fi.getFieldName().equalsIgnoreCase("UPLOAD_FILE")) - params.put(fi.getFieldName(), fi.getString()); - else { - // filename on the client - filename = FileUtil.getFileName(fi.getName()); - designFile = new File(uploadPath + filename); - fi.write(designFile); - } - } - - String filename2 = designFile.getName(); - String fileExtension = filename2 != null && filename2.length() >= 4 ? filename2 - .substring(filename2.length() - 4) : ""; - if (! fileExtension.equalsIgnoreCase(".xml")) { - throw new RuntimeException("Wrong file extension. Xml is expected"); - } - //String learningDesignPath = ZipFileUtil.expandZip(new FileInputStream(designFile), filename2); - - // import learning design - String fullFilePath = designFile.getAbsolutePath();//FileUtil.getFullPath(learningDesignPath, ExportToolContentService.LEARNING_DESIGN_FILE_NAME); - Set questions = (Set) FileUtil.getObjectFromXML(null, fullFilePath); - if (questions != null) { - oldQuestions.addAll(questions); - } - - } catch (Exception e) { - log.error("Error occured during import", e); - toolsErrorMsgs.add(e.getClass().getName() + " " + e.getMessage()); - } - - if (toolsErrorMsgs.size() > 0) { - request.setAttribute("toolsErrorMessages", toolsErrorMsgs); - } - - reinitializeAvailableQuestions(sessionMap); - - return mapping.findForward(AssessmentConstants.SUCCESS); - - } - - /** - * Export Excel format survey data. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward exportQuestions(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - - AssessmentForm assessmentForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); - Assessment assessment = assessmentForm.getAssessment(); - - String errors = null; - if (assessment != null) { - try { - Set questions = assessment.getQuestions(); - // exporting XML - XStream designXml = new XStream(); - String resultedXml = designXml.toXML(questions); - - response.setContentType("application/x-download"); - response.setHeader("Content-Disposition", "attachment;filename=" + AssessmentConstants.EXPORT_QUESTIONS_FILENAME); - log.debug("Exporting assessment questions to an xml: " + assessment.getContentId()); - - - - OutputStream out = null; - try { - out = response.getOutputStream(); - out.write(resultedXml.getBytes()); - int count = resultedXml.getBytes().length; -// -// int ch; -// while ((ch = in.read()) != -1) { -// out.write((char) ch); -// count++; -// } - log.debug("Wrote out " + count + " bytes"); - response.setContentLength(count); - out.flush(); - } catch (Exception e) { - log.error("Exception occured writing out file:" + e.getMessage()); - throw new ExportToolContentException(e); - } finally { - try { - if (out != null) { - out.close(); - } - } catch (Exception e) { - log.error("Error Closing file. File already written out - no exception being thrown.", e); - } - } - - - } catch (Exception e) { - errors = "Unable to export tool content: " + e.toString(); - log.error(errors); - } - - } - if (errors != null) { - try { - PrintWriter out = response.getWriter(); - out.write(errors); - out.flush(); - } catch (IOException e) { - } - } - return null; - } - - /** * Read assessment data from database and put them into HttpSession. It will redirect to init.do directly after this * method run successfully. * @@ -985,67 +816,7 @@ return mapping.findForward(AssessmentConstants.SUCCESS); } - /** - * Move up current question. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward upQuestion(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - return switchQuestion(mapping, request, true); - } - - /** - * Move down current question. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward downQuestion(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - return switchQuestion(mapping, request, false); - } - - private ActionForward switchQuestion(ActionMapping mapping, HttpServletRequest request, boolean up) { - // get back sessionMAP - String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - updateQuestionReferencesGrades(request, sessionMap, false); - - int questionIdx = NumberUtils.stringToInt(request.getParameter(AssessmentConstants.PARAM_QUESTION_INDEX), -1); - if (questionIdx != -1) { - SortedSet questionList = getQuestionList(sessionMap); - List rList = new ArrayList(questionList); - // get current and the target item, and switch their sequnece - AssessmentQuestion question = rList.get(questionIdx); - AssessmentQuestion repQuestion; - if (up) - repQuestion = rList.get(--questionIdx); - else - repQuestion = rList.get(++questionIdx); - int upSeqId = repQuestion.getSequenceId(); - repQuestion.setSequenceId(question.getSequenceId()); - question.setSequenceId(upSeqId); - - // put back list, it will be sorted again - questionList.clear(); - questionList.addAll(rList); - } - - reinitializeAvailableQuestions(sessionMap); - - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); - return mapping.findForward(AssessmentConstants.SUCCESS); - } - - /** + /** * Remove assessment question 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. * @@ -1138,7 +909,7 @@ } /** - * Move up current question. + * Move up current question reference. * * @param mapping * @param form @@ -1152,7 +923,7 @@ } /** - * Move down current question. + * Move down current question reference. * * @param mapping * @param form @@ -1196,6 +967,163 @@ } /** + * Initializes import questions page. + */ + private ActionForward importInit(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws ServletException { + String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); + + return mapping.findForward(AssessmentConstants.SUCCESS); + } + + /** + * Imports questions into question bank from uploaded xml file. + */ + private ActionForward importQuestions(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws ServletException { + String sessionMapID = WebUtil.readStrParam(request, AssessmentConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMapID); + AssessmentForm assessmentForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); + SortedSet oldQuestions = getQuestionList(sessionMap); + + List ldErrorMsgs = new ArrayList(); + List toolsErrorMsgs = new ArrayList(); + try { + File designFile = null; + Map params = new HashMap(); + String filename = null; + + String uploadPath = FileUtil.createTempDirectory("_uploaded_2questions_xml"); + + DiskFileUpload fu = new DiskFileUpload(); + // maximum size that will be stored in memory + fu.setSizeThreshold(4096); + // the location for saving data that is larger than getSizeThreshold() + // fu.setRepositoryPath(uploadPath); + + List fileItems = fu.parseRequest(request); + Iterator iter = fileItems.iterator(); + while (iter.hasNext()) { + FileItem fi = (FileItem) iter.next(); + // UPLOAD_FILE is input field from HTML page + if (!fi.getFieldName().equalsIgnoreCase("UPLOAD_FILE")) + params.put(fi.getFieldName(), fi.getString()); + else { + // filename on the client + filename = FileUtil.getFileName(fi.getName()); + designFile = new File(uploadPath + filename); + fi.write(designFile); + } + } + + String filename2 = designFile.getName(); + String fileExtension = filename2 != null && filename2.length() >= 4 ? filename2 + .substring(filename2.length() - 4) : ""; + if (! fileExtension.equalsIgnoreCase(".xml")) { + throw new RuntimeException("Wrong file extension. Xml is expected"); + } + //String learningDesignPath = ZipFileUtil.expandZip(new FileInputStream(designFile), filename2); + + // import learning design + String fullFilePath = designFile.getAbsolutePath();//FileUtil.getFullPath(learningDesignPath, ExportToolContentService.LEARNING_DESIGN_FILE_NAME); + List questions = (List) FileUtil.getObjectFromXML(null, fullFilePath); + if (questions != null) { + for (AssessmentQuestion question : questions) { + question.setCreateDate(new Timestamp(new Date().getTime())); + int maxSeq = 1; + if (oldQuestions != null && oldQuestions.size() > 0) { + AssessmentQuestion last = oldQuestions.last(); + maxSeq = last.getSequenceId() + 1; + } + question.setSequenceId(maxSeq); + oldQuestions.add(question); + } + } + + } catch (Exception e) { + log.error("Error occured during import", e); + toolsErrorMsgs.add(e.getClass().getName() + " " + e.getMessage()); + } + + if (toolsErrorMsgs.size() > 0) { + request.setAttribute("toolsErrorMessages", toolsErrorMsgs); + } + + reinitializeAvailableQuestions(sessionMap); + return mapping.findForward(AssessmentConstants.SUCCESS); + } + + /** + * Exports xml format questions from question bank. + */ + private ActionForward exportQuestions(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + + AssessmentForm assessmentForm = (AssessmentForm) sessionMap.get(AssessmentConstants.ATTR_ASSESSMENT_FORM); + Assessment assessment = assessmentForm.getAssessment(); + + String errors = null; + if (assessment != null) { + try { + ArrayList questionsToExport = new ArrayList(); + + for (AssessmentQuestion question : getQuestionList(sessionMap)) { + AssessmentQuestion clonedQuestion = (AssessmentQuestion) question.clone(); + clonedQuestion.setCreateBy(null); + questionsToExport.add(clonedQuestion); + } + // exporting XML + XStream designXml = new XStream(); + String resultedXml = designXml.toXML(questionsToExport); + + response.setContentType("application/x-download"); + response.setHeader("Content-Disposition", "attachment;filename=" + AssessmentConstants.EXPORT_QUESTIONS_FILENAME); + log.debug("Exporting assessment questions to an xml: " + assessment.getContentId()); + + OutputStream out = null; + try { + out = response.getOutputStream(); + out.write(resultedXml.getBytes()); + int count = resultedXml.getBytes().length; + log.debug("Wrote out " + count + " bytes"); + response.setContentLength(count); + out.flush(); + } catch (Exception e) { + log.error("Exception occured writing out file:" + e.getMessage()); + throw new ExportToolContentException(e); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (Exception e) { + log.error("Error Closing file. File already written out - no exception being thrown.", e); + } + } + + } catch (Exception e) { + errors = "Unable to export tool content: " + e.toString(); + log.error(errors); + } + + } + if (errors != null) { + try { + PrintWriter out = response.getWriter(); + out.write(errors); + out.flush(); + } catch (IOException e) { + } + } + return null; + } + + + /** * Ajax call, will add one more input line for new resource item instruction. * * @param mapping Index: lams_tool_assessment/web/pages/authoring/basic.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/authoring/basic.jsp,v diff -u -r1.6.8.4 -r1.6.8.5 --- lams_tool_assessment/web/pages/authoring/basic.jsp 28 Sep 2011 20:59:38 -0000 1.6.8.4 +++ lams_tool_assessment/web/pages/authoring/basic.jsp 29 Sep 2011 19:08:05 -0000 1.6.8.5 @@ -26,34 +26,6 @@ ); }; } - function upQuestion(idx){ - var url = ""; - $(questionListTargetDiv).load( - url, - { - questionIndex: idx, - sessionMapID: "${sessionMapID}", - referenceGrades: serializeReferenceGrades() - }, - function(){ - refreshThickbox(); - } - ); - } - function downQuestion(idx){ - var url = ""; - $(questionListTargetDiv).load( - url, - { - questionIndex: idx, - sessionMapID: "${sessionMapID}", - referenceGrades: serializeReferenceGrades() - }, - function(){ - refreshThickbox(); - } - ); - } function addQuestionReference(){ var questionTypeDropdown = document.getElementById("questionSelect"); var idx = questionTypeDropdown.value; Index: lams_tool_assessment/web/pages/authoring/parts/questionlist.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/web/pages/authoring/parts/questionlist.jsp,v diff -u -r1.4.8.2 -r1.4.8.3 --- lams_tool_assessment/web/pages/authoring/parts/questionlist.jsp 28 Sep 2011 20:59:38 -0000 1.4.8.2 +++ lams_tool_assessment/web/pages/authoring/parts/questionlist.jsp 29 Sep 2011 19:08:05 -0000 1.4.8.3 @@ -133,7 +133,7 @@ - + @@ -170,31 +170,6 @@ ${question.title} - -
- - " - onclick="upQuestion(${status.index})"> - - "> - - - - - - "> - - - " - onclick="downQuestion(${status.index})"> - - ?sessionMapID=${sessionMapID}&questionIndex=${status.index}&KeepThis=true&TB_iframe=true&height=540&width=850&modal=true