Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rdefc0de4bbc95b51da70e0ae1653b57d0eaddb87 -r24ca84b9e61b98c068eaa369cb194a35e5511162 Binary files differ Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml =================================================================== diff -u -rf6f0e93d2134d055aadd9414aee1b588f0669c19 -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision f6f0e93d2134d055aadd9414aee1b588f0669c19) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -141,6 +141,8 @@ PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r9c4dff1f72cd209b32899650f177d8b2f9acd7f7 -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 9c4dff1f72cd209b32899650f177d8b2f9acd7f7) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -820,7 +820,7 @@ /** * Import the data for a 1.0.2 Forum */ - public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues) + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { Date now = new Date(); Forum toolContentObj = new Forum(); @@ -866,13 +866,13 @@ } - ForumUser forumUser = null; - if ( newUserId != null ) { - forumUser = new ForumUser(); - forumUser.setUserId(new Long(newUserId.longValue())); - createUser(forumUser); - toolContentObj.setCreatedBy(forumUser); - } + ForumUser forumUser = new ForumUser(); + forumUser.setUserId(new Long(user.getUserID().longValue())); + forumUser.setFirstName(user.getFirstName()); + forumUser.setLastName(user.getLastName()); + forumUser.setLoginName(user.getLogin()); + createUser(forumUser); + toolContentObj.setCreatedBy(forumUser); // leave as empty, no need to set them to anything. //toolContentObj.setAttachments(attachments); @@ -890,6 +890,7 @@ Message message = new Message(); message.setIsAuthored(true); message.setCreated(now); + message.setCreatedBy(forumUser); message.setUpdated(now); message.setLastReplyDate(now); message.setSubject((String)messageMap.get(ToolContentImport102Manager.CONTENT_TITLE)); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml =================================================================== diff -u -re280cd832df020c33df6730fbee453add9e6caee -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -101,6 +101,10 @@ PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException + PROPAGATION_REQUIRED,-McApplicationException + PROPAGATION_REQUIRED,-McApplicationException + PROPAGATION_REQUIRED,-McApplicationException + PROPAGATION_REQUIRED,-McApplicationException Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -r3ec9e4aa0ad9319ce9be7f6fa84d9f35165f698d -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 3ec9e4aa0ad9319ce9be7f6fa84d9f35165f698d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -23,10 +23,12 @@ package org.lamsfoundation.lams.tool.mc.service; import java.io.InputStream; import java.util.Date; +import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeSet; +import java.util.Vector; import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.AccessDeniedException; @@ -50,6 +52,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.IToolVO; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; @@ -74,7 +77,10 @@ import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.wddx.WDDXProcessor; +import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException; import org.springframework.dao.DataAccessException; /** @@ -87,7 +93,7 @@ * */ public class McServicePOJO implements - IMcService, ToolContentManager, ToolSessionManager, McAppConstants + IMcService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager, McAppConstants { static Logger logger = Logger.getLogger(McServicePOJO.class.getName()); @@ -2601,4 +2607,138 @@ this.exportContentService = exportContentService; } + /* ===============Methods implemented from ToolContentImport102Manager =============== */ + + + /** + * Import the data for a 1.0.2 Chat + */ + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) + { + Date now = new Date(); + McContent toolContentObj = new McContent(); + toolContentObj.setContentInUse(Boolean.FALSE); + toolContentObj.setCreatedBy(user.getUserID().longValue()); + toolContentObj.setCreationDate(now); + toolContentObj.setDefineLater(Boolean.FALSE); + toolContentObj.setInstructions((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY)); + toolContentObj.setOfflineInstructions(null); + toolContentObj.setOnlineInstructions(null); + // TODO add reflection + //toolContentObj.setReflectInstructions(null); + //toolContentObj.setReflectOnActivity(Boolean.FALSE); + toolContentObj.setRunOffline(Boolean.FALSE); + toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); + + toolContentObj.setContent(null); + toolContentObj.setUpdateDate(now); + toolContentObj.setMcContentId(toolContentId); + toolContentObj.setQuestionsSequenced(false); + toolContentObj.setUsernameVisible(false); + // I can't find a use for these. + toolContentObj.setUsernameVisible(false); + toolContentObj.setSynchInMonitor(false); + toolContentObj.setShowReport(false); + // not supported in 1.0.2 so set to blank. Fields are mandatory in the database + toolContentObj.setReportTitle(""); + toolContentObj.setMonitoringReportTitle(""); + toolContentObj.setEndLearningMessage(""); + + + try { + Boolean bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_Q_ALLOW_REDO); + toolContentObj.setRetries(bool!=null?bool:false); + + bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_Q_FEEDBACK); + toolContentObj.setShowFeedback(bool!=null?bool:false); + + Integer minPassMark = WDDXProcessor.convertToInteger(importValues, ToolContentImport102Manager.CONTENT_Q_MIN_PASSMARK); + toolContentObj.setPassMark(minPassMark != null ? minPassMark : new Integer(0)); + + // leave as empty, no need to set them to anything. + //setMcUploadedFiles(Set mcSessions); + //setMcSessions(Set mcSessions); + + mcContentDAO.saveMcContent(toolContentObj); + + // set up questions + Vector questions = (Vector) importValues.get(CONTENT_Q_QUESTION_INFO); + if ( questions != null ) { + + // work out what weights to give questions. 1.0.2 didn't have weights so try to make + // them all equal. But should add up 100% so may have to fudge the first one. + int numQuestions = questions.size(); + int standardPercentage = 100/numQuestions; + int firstPercentage = numQuestions > 1 ? 100 - (numQuestions - 1)* standardPercentage : 100; + boolean isFirst = true; + + Iterator iter = questions.iterator(); + while (iter.hasNext()) { + Hashtable questionMap = (Hashtable) iter.next(); + create102Question(questionMap, isFirst ? firstPercentage : standardPercentage, toolContentObj ); + isFirst = false; + } + + } + + } catch (WDDXProcessorConversionException e) { + logger.error("Unable to content for activity "+toolContentObj.getTitle()+"properly due to a WDDXProcessorConversionException.",e); + throw new ToolException("Invalid import data format for activity "+toolContentObj.getTitle()+"- WDDX caused an exception. Some data from the design will have been lost. See log for more details."); + } + + mcContentDAO.saveMcContent(toolContentObj); + } + + + private void create102Question( Hashtable questionMap, Integer weight, McContent toolContentObj) throws WDDXProcessorConversionException { + McQueContent question = new McQueContent(); + question.setDisplayOrder( WDDXProcessor.convertToInteger(questionMap, ToolContentImport102Manager.CONTENT_Q_ORDER) ); + // only one feedback field in 1.0.2, so use it for both + question.setFeedbackCorrect((String)questionMap.get(CONTENT_Q_FEEDBACK)); + question.setFeedbackIncorrect((String)questionMap.get(CONTENT_Q_FEEDBACK)); + question.setQuestion((String)questionMap.get(CONTENT_Q_QUESTION)); + question.setWeight( weight ); + + String correctAnswer = (String)questionMap.get(CONTENT_Q_ANSWER); + + Vector candidates = (Vector)questionMap.get(CONTENT_Q_CANDIDATES); + if ( candidates != null ) { + Iterator candIterator = candidates.iterator(); + while (candIterator.hasNext()) { + Hashtable candidate = (Hashtable) candIterator.next(); + String optionText = (String)candidate.get(CONTENT_Q_ANSWER); + // 1.0.2 has a display order but 2.0 doesn't ToolContentImport102Manager.CONTENT_Q_ORDER + McOptsContent options = new McOptsContent(); + options.setCorrectOption(correctAnswer != null && correctAnswer.equals(optionText)); + options.setMcQueOptionText(optionText); + options.setMcQueContent(question); + question.getMcOptionsContents().add(options); + } + } + + toolContentObj.getMcQueContents().add(question); + question.setMcContent(toolContentObj); + question.setMcContentId(toolContentObj.getUid()); + } + + /** Set the description, throws away the title value as this is not supported in 2.0 */ + public void setReflectiveData(Long toolContentId, String title, String description) + throws ToolException, DataMissingException { + + McContent toolContentObj = null; + if ( toolContentId != null ) { + toolContentObj=retrieveMc(toolContentId); + } + if ( toolContentObj == null ) { + throw new DataMissingException("Unable to set reflective data titled "+title + +" on activity toolContentId "+toolContentId + +" as the tool content does not exist."); + } + + // TODO add reflection + // qaContent.setReflectOnActivity(Boolean.TRUE); + // qaContent.setReflectInstructions(description); + } + + //========================================================================================= } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml =================================================================== diff -u -rd4c4147328837e92edb143f732923075f8ff34be -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml (.../qaApplicationContext.xml) (revision d4c4147328837e92edb143f732923075f8ff34be) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/qaApplicationContext.xml (.../qaApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -94,6 +94,10 @@ PROPAGATION_REQUIRED,-QaApplicationException PROPAGATION_REQUIRED,-QaApplicationException + PROPAGATION_REQUIRED,-QaApplicationException + PROPAGATION_REQUIRED,-QaApplicationException + PROPAGATION_REQUIRED,-QaApplicationException + PROPAGATION_REQUIRED,-QaApplicationException Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -r0fb4d41712e31bd525abb02f100373875b1c7fc6 -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 0fb4d41712e31bd525abb02f100373875b1c7fc6) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.tool.qa.service; import java.io.InputStream; import java.util.Date; +import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -49,6 +50,7 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.tool.IToolVO; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; @@ -72,8 +74,11 @@ import org.lamsfoundation.lams.tool.qa.util.QAConstants; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.audit.IAuditService; +import org.lamsfoundation.lams.util.wddx.WDDXProcessor; +import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException; import org.springframework.dao.DataAccessException; @@ -98,7 +103,8 @@ */ public class QaServicePOJO - implements IQaService, ToolContentManager, ToolSessionManager, QaAppConstants + implements IQaService, ToolContentManager, ToolSessionManager, + ToolContentImport102Manager, QaAppConstants { static Logger logger = Logger.getLogger(QaServicePOJO.class.getName()); @@ -2041,5 +2047,80 @@ this.exportContentService = exportContentService; } + /* ===============Methods implemented from ToolContentImport102Manager =============== */ + + /** + * Import the data for a 1.0.2 Chat + */ + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) + { + + + Date now = new Date(); + QaContent toolContentObj = new QaContent(); + toolContentObj.setContentLocked(Boolean.FALSE); + toolContentObj.setCreatedBy(user.getUserID().longValue()); + toolContentObj.setCreationDate(now); + toolContentObj.setDefineLater(Boolean.FALSE); + toolContentObj.setInstructions(null); + toolContentObj.setOfflineInstructions(null); + toolContentObj.setOnlineInstructions(null); + // TODO add reflection + //toolContentObj.setReflectInstructions(null); + //toolContentObj.setReflectOnActivity(Boolean.FALSE); + toolContentObj.setRunOffline(Boolean.FALSE); + toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); + toolContentObj.setQaContentId(toolContentId); + toolContentObj.setUpdateDate(now); + toolContentObj.setQuestionsSequenced(Boolean.FALSE); // there is only 1 question + toolContentObj.setContent(null); + toolContentObj.setReportTitle(null); + toolContentObj.setMonitoringReportTitle(null); + toolContentObj.setSynchInMonitor(true); // don't know what this does but the default content has false + + Boolean bool; + try { + bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_SHOW_USER); + toolContentObj.setUsernameVisible(bool!=null?bool:false); + } catch (WDDXProcessorConversionException e) { + logger.error("Unable to content for activity "+toolContentObj.getTitle()+"properly due to a WDDXProcessorConversionException.",e); + throw new ToolException("Invalid import data format for activity "+toolContentObj.getTitle()+"- WDDX caused an exception. Some data from the design will have been lost. See log for more details."); + } + + // leave as empty, no need to set them to anything. + //setQaUploadedFiles(Set qaUploadedFiles); + //setQaSessions(Set qaSessions); + + // set up question from body + QaQueContent question = new QaQueContent(); + question.setQuestion((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY)); + question.setDisplayOrder(1); + question.setQaContent(toolContentObj); + toolContentObj.getQaQueContents().add(question); + + qaDAO.saveOrUpdateQa(toolContentObj); + + } + + /** Set the description, throws away the title value as this is not supported in 2.0 */ + public void setReflectiveData(Long toolContentId, String title, String description) + throws ToolException, DataMissingException { + + QaContent qaContent = null; + if ( toolContentId != null ) { + qaContent=loadQa(toolContentId.longValue()); + } + if ( qaContent == null ) { + throw new DataMissingException("Unable to set reflective data titled "+title + +" on activity toolContentId "+toolContentId + +" as the tool content does not exist."); + } + + // TODO add reflection + // qaContent.setReflectOnActivity(Boolean.TRUE); + // qaContent.setReflectInstructions(description); + } + + //========================================================================================= } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml =================================================================== diff -u -r0c3424ef00200659464b1012d4e8a374ffaa0aae -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml (.../rsrcApplicationContext.xml) (revision 0c3424ef00200659464b1012d4e8a374ffaa0aae) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/rsrcApplicationContext.xml (.../rsrcApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -137,6 +137,8 @@ PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,+java.lang.Exception PROPAGATION_REQUIRED,+java.lang.Exception + PROPAGATION_REQUIRED,+java.lang.Exception + PROPAGATION_REQUIRED,+java.lang.Exception Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== diff -u -rc25a2c783e51d05045d1fb61981c169357cd3e98 -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision c25a2c783e51d05045d1fb61981c169357cd3e98) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -101,7 +101,7 @@ * */ public class ResourceServiceImpl implements - IResourceService,ToolContentManager, ToolSessionManager + IResourceService,ToolContentManager, ToolSessionManager, ToolContentImport102Manager { static Logger log = Logger.getLogger(ResourceServiceImpl.class.getName()); @@ -938,7 +938,7 @@ /** * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard */ - public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues) + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { Date now = new Date(); Resource toolContentObj = new Resource(); @@ -977,13 +977,13 @@ [showbuttons=false] no equivalent in 2.0 [isReusable=false] not used in 1.0.2 (would be lock when finished) */ - ResourceUser user = null; - if ( newUserId != null ) { - user = new ResourceUser(); - user.setUserId(new Long(newUserId.longValue())); - createUser(user); - toolContentObj.setCreatedBy(user); - } + ResourceUser ruser = new ResourceUser(); + ruser.setUserId(new Long(user.getUserID().longValue())); + ruser.setFirstName(user.getFirstName()); + ruser.setLastName(user.getLastName()); + ruser.setLoginName(user.getLogin()); + createUser(ruser); + toolContentObj.setCreatedBy(ruser); //resource Items Vector urls = (Vector) importValues.get(ToolContentImport102Manager.CONTENT_URL_URLS); @@ -995,7 +995,7 @@ ResourceItem item = new ResourceItem(); item.setTitle((String) urlMap.get(ToolContentImport102Manager.CONTENT_TITLE)); item.setCreateDate(now); - item.setCreateBy(user); + item.setCreateBy(ruser); item.setCreateByAuthor(true); item.setHide(false); Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/applicationContext.xml =================================================================== diff -u -re280cd832df020c33df6730fbee453add9e6caee -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/applicationContext.xml (.../applicationContext.xml) (revision e280cd832df020c33df6730fbee453add9e6caee) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/applicationContext.xml (.../applicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -52,7 +52,11 @@ PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED - + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java =================================================================== diff -u -r08afbd42add64dcb44f8accb9595bd125bd9ebae -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -58,6 +58,7 @@ import org.lamsfoundation.lams.tool.noticeboard.dao.INoticeboardSessionDAO; import org.lamsfoundation.lams.tool.noticeboard.dao.INoticeboardUserDAO; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.springframework.dao.DataAccessException; @@ -1030,13 +1031,13 @@ /** * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard */ - public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues) + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { Date now = new Date(); NoticeboardContent toolContentObj = new NoticeboardContent(); toolContentObj.setContent((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY)); toolContentObj.setContentInUse(false); - toolContentObj.setCreatorUserId(newUserId != null ? new Long(newUserId.longValue()) : null); + toolContentObj.setCreatorUserId(user.getUserID().longValue()); toolContentObj.setDateCreated(now); toolContentObj.setDateUpdated(now); toolContentObj.setDefineLater(false); Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/notebookApplicationContext.xml =================================================================== diff -u -r58cfe8c94ee9878fc43820e4f0ae4d1f8a1df35a -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/notebookApplicationContext.xml (.../notebookApplicationContext.xml) (revision 58cfe8c94ee9878fc43820e4f0ae4d1f8a1df35a) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/notebookApplicationContext.xml (.../notebookApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -55,7 +55,11 @@ PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED - + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java =================================================================== diff -u -r7a1c6972ff38760192dbdaac41ed8e5e99105247 -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision 7a1c6972ff38760192dbdaac41ed8e5e99105247) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -26,6 +26,8 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.Date; +import java.util.Hashtable; import java.util.List; import java.util.Set; @@ -50,6 +52,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; @@ -79,7 +82,7 @@ */ public class NotebookService implements ToolSessionManager, ToolContentManager, - INotebookService { + INotebookService, ToolContentImport102Manager { static Logger logger = Logger.getLogger(NotebookService.class.getName()); @@ -491,6 +494,51 @@ } } + /* ===============Methods implemented from ToolContentImport102Manager =============== */ + + + /** + * Import the data for a 1.0.2 Notebook + */ + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) + { + Date now = new Date(); + Notebook toolContentObj = new Notebook(); + toolContentObj.setContentInUse(Boolean.FALSE); + toolContentObj.setCreateBy(new Long(user.getUserID().longValue())); + toolContentObj.setCreateDate(now); + toolContentObj.setDefineLater(Boolean.FALSE); + toolContentObj.setInstructions((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY)); + toolContentObj.setLockOnFinished(Boolean.TRUE); + toolContentObj.setOfflineInstructions(null); + toolContentObj.setOnlineInstructions(null); + toolContentObj.setRunOffline(Boolean.FALSE); + toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); + toolContentObj.setToolContentId(toolContentId); + toolContentObj.setUpdateDate(now); + toolContentObj.setAllowRichEditor(Boolean.FALSE); + // leave as empty, no need to set them to anything. + //setNotebookAttachments(Set notebookAttachments); + //setNotebookSessions(Set notebookSessions); + notebookDAO.saveOrUpdate(toolContentObj); + } + + /** Set the description, throws away the title value as this is not supported in 2.0 */ + public void setReflectiveData(Long toolContentId, String title, String description) + throws ToolException, DataMissingException { + + logger.warn("Setting the reflective field on a notebook. This doesn't make sense as the notebook is for reflection and we don't reflect on reflection!"); + Notebook toolContentObj = getNotebookByContentId(toolContentId); + if ( toolContentObj == null ) { + throw new DataMissingException("Unable to set reflective data titled "+title + +" on activity toolContentId "+toolContentId + +" as the tool content does not exist."); + } + + toolContentObj.setInstructions(description); + } + + //========================================================================================= /* ********** Used by Spring to "inject" the linked objects ************* */ public INotebookAttachmentDAO getNotebookAttachmentDAO() { Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== diff -u -r08afbd42add64dcb44f8accb9595bd125bd9ebae -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -94,7 +94,7 @@ * @author Manpreet Minhas */ public class SubmitFilesService implements ToolContentManager, - ToolSessionManager, ISubmitFilesService { + ToolSessionManager, ISubmitFilesService, ToolContentImport102Manager { private static Logger log = Logger.getLogger(SubmitFilesService.class); @@ -776,7 +776,7 @@ /** * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard */ - public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues) + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { Date now = new Date(); SubmitFilesContent toolContentObj = new SubmitFilesContent(); Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml =================================================================== diff -u -r84a9dd84fe84bb855c96c96acd137b5a38c2c2cd -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml (.../submitFilesApplicationContext.xml) (revision 84a9dd84fe84bb855c96c96acd137b5a38c2c2cd) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml (.../submitFilesApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -86,6 +86,11 @@ PROPAGATION_REQUIRED PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java =================================================================== diff -u -r658c9122d9bbb47bd4c3e6a9431cf175ced2870e -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java (.../VoteServicePOJO.java) (revision 658c9122d9bbb47bd4c3e6a9431cf175ced2870e) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java (.../VoteServicePOJO.java) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -23,10 +23,12 @@ package org.lamsfoundation.lams.tool.vote.service; import java.io.InputStream; import java.util.Date; +import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeSet; +import java.util.Vector; import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.AccessDeniedException; @@ -50,6 +52,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.IToolVO; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; @@ -73,8 +76,11 @@ import org.lamsfoundation.lams.tool.vote.pojos.VoteUploadedFile; import org.lamsfoundation.lams.tool.vote.pojos.VoteUsrAttempt; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.audit.IAuditService; +import org.lamsfoundation.lams.util.wddx.WDDXProcessor; +import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException; import org.springframework.dao.DataAccessException; /** @@ -87,7 +93,7 @@ * */ public class VoteServicePOJO implements - IVoteService, ToolContentManager, ToolSessionManager, VoteAppConstants + IVoteService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager, VoteAppConstants { static Logger logger = Logger.getLogger(VoteServicePOJO.class.getName()); @@ -2616,4 +2622,87 @@ this.exportContentService = exportContentService; } + /* ===============Methods implemented from ToolContentImport102Manager =============== */ + + + /** + * Import the data for a 1.0.2 Chat + */ + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) + { + Date now = new Date(); + VoteContent toolContentObj = new VoteContent(); + toolContentObj.setContentInUse(Boolean.FALSE); + toolContentObj.setCreatedBy(user.getUserID().longValue()); + toolContentObj.setCreationDate(now); + toolContentObj.setDefineLater(Boolean.FALSE); + toolContentObj.setInstructions((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY)); + toolContentObj.setOfflineInstructions(null); + toolContentObj.setOnlineInstructions(null); + // TODO add reflection + //toolContentObj.setReflectInstructions(null); + //toolContentObj.setReflectOnActivity(Boolean.FALSE); + toolContentObj.setRunOffline(Boolean.FALSE); + toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); + + toolContentObj.setContent(null); + toolContentObj.setUpdateDate(now); + toolContentObj.setVoteContentId(toolContentId); + toolContentObj.setVoteChangable(Boolean.FALSE); + + try { + Boolean bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_VOTE_ALLOW_POLL_NOMINATIONS); + toolContentObj.setAllowText(bool!=null?bool:false); + + bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_MB_REUSABLE); + toolContentObj.setLockOnFinish(bool!=null?bool:true); + + Integer maxCount = WDDXProcessor.convertToInteger(importValues, ToolContentImport102Manager.CONTENT_VOTE_MAXCHOOSE); + toolContentObj.setMaxNominationCount(maxCount != null ? maxCount.toString() : "1"); + + } catch (WDDXProcessorConversionException e) { + logger.error("Unable to content for activity "+toolContentObj.getTitle()+"properly due to a WDDXProcessorConversionException.",e); + throw new ToolException("Invalid import data format for activity "+toolContentObj.getTitle()+"- WDDX caused an exception. Some data from the design will have been lost. See log for more details."); + } + + // leave as empty, no need to set them to anything. + //setVoteUploadedFiles(Set voteAttachments); + //setVoteSessions(Set voteSessions); + + // set up question from body + Vector nominations = (Vector) importValues.get(CONTENT_VOTE_NOMINATIONS); + if ( nominations != null ) { + Iterator iter = nominations.iterator(); + int order = 1; + while (iter.hasNext()) { + String element = (String) iter.next(); + VoteQueContent nomination = new VoteQueContent(element, toolContentObj, null); + nomination.setDisplayOrder(order++); + toolContentObj.getVoteQueContents().add(nomination); + } + } + + voteContentDAO.saveVoteContent(toolContentObj); + } + + /** Set the description, throws away the title value as this is not supported in 2.0 */ + public void setReflectiveData(Long toolContentId, String title, String description) + throws ToolException, DataMissingException { + + VoteContent toolContentObj = null; + if ( toolContentId != null ) { + toolContentObj=retrieveVote(toolContentId); + } + if ( toolContentObj == null ) { + throw new DataMissingException("Unable to set reflective data titled "+title + +" on activity toolContentId "+toolContentId + +" as the tool content does not exist."); + } + + // TODO add reflection + // qaContent.setReflectOnActivity(Boolean.TRUE); + // qaContent.setReflectInstructions(description); + } + + //========================================================================================= } Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/voteApplicationContext.xml =================================================================== diff -u -r683ee20a2363e56d2b63c07119a79f5a1aa0377f -r24ca84b9e61b98c068eaa369cb194a35e5511162 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/voteApplicationContext.xml (.../voteApplicationContext.xml) (revision 683ee20a2363e56d2b63c07119a79f5a1aa0377f) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/voteApplicationContext.xml (.../voteApplicationContext.xml) (revision 24ca84b9e61b98c068eaa369cb194a35e5511162) @@ -94,6 +94,10 @@ PROPAGATION_REQUIRED,-VoteApplicationException PROPAGATION_REQUIRED,-VoteApplicationException PROPAGATION_REQUIRED,-VoteApplicationException + PROPAGATION_REQUIRED,-VoteApplicationException + PROPAGATION_REQUIRED,-VoteApplicationException + PROPAGATION_REQUIRED,-VoteApplicationException + PROPAGATION_REQUIRED,-VoteApplicationException