Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java
===================================================================
diff -u -r7a1c6972ff38760192dbdaac41ed8e5e99105247 -r08afbd42add64dcb44f8accb9595bd125bd9ebae
--- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision 7a1c6972ff38760192dbdaac41ed8e5e99105247)
+++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae)
@@ -28,6 +28,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -67,6 +68,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;
@@ -107,7 +109,7 @@
* ToolContentManager and ToolSessionManager.
*/
-public class ChatService implements ToolSessionManager, ToolContentManager,
+public class ChatService implements ToolSessionManager, ToolContentManager, ToolContentImport102Manager,
IChatService {
static Logger logger = Logger.getLogger(ChatService.class.getName());
@@ -1083,4 +1085,53 @@
return list.get(0);
}
}
+
+ /* ===============Methods implemented from ToolContentImport102Manager =============== */
+
+
+ /**
+ * Import the data for a 1.0.2 Chat
+ */
+ public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues)
+ {
+ Date now = new Date();
+ Chat toolContentObj = new Chat();
+ toolContentObj.setContentInUse(Boolean.FALSE);
+ toolContentObj.setCreateBy(newUserId != null ? new Long(newUserId.longValue()) : null);
+ toolContentObj.setCreateDate(now);
+ toolContentObj.setDefineLater(Boolean.FALSE);
+ toolContentObj.setFilterKeywords(null);
+ toolContentObj.setFilteringEnabled(null);
+ toolContentObj.setInstructions((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY));
+ toolContentObj.setLockOnFinished(Boolean.FALSE);
+ toolContentObj.setOfflineInstructions(null);
+ toolContentObj.setOnlineInstructions(null);
+ toolContentObj.setReflectInstructions(null);
+ toolContentObj.setReflectOnActivity(Boolean.FALSE);
+ toolContentObj.setRunOffline(Boolean.FALSE);
+ toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE));
+ toolContentObj.setToolContentId(toolContentId);
+ toolContentObj.setUpdateDate(now);
+ // leave as empty, no need to set them to anything.
+ //setChatAttachments(Set chatAttachments);
+ //setChatSessions(Set chatSessions);
+ chatDAO.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 {
+
+ Chat chat = getChatByContentId(toolContentId);
+ if ( chat == null ) {
+ throw new DataMissingException("Unable to set reflective data titled "+title
+ +" on activity toolContentId "+toolContentId
+ +" as the tool content does not exist.");
+ }
+
+ chat.setReflectOnActivity(Boolean.TRUE);
+ chat.setReflectInstructions(description);
+ }
+
+ //=========================================================================================
}
Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java
===================================================================
diff -u -r7a1c6972ff38760192dbdaac41ed8e5e99105247 -r08afbd42add64dcb44f8accb9595bd125bd9ebae
--- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 7a1c6972ff38760192dbdaac41ed8e5e99105247)
+++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae)
@@ -30,14 +30,16 @@
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Vector;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
-import org.apache.poi.hpsf.SummaryInformation;
import org.apache.struts.upload.FormFile;
import org.lamsfoundation.lams.contentrepository.AccessDeniedException;
import org.lamsfoundation.lams.contentrepository.ICredentials;
@@ -55,6 +57,7 @@
import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException;
import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService;
import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException;
+import org.lamsfoundation.lams.tool.ToolContentImport102Manager;
import org.lamsfoundation.lams.tool.ToolContentManager;
import org.lamsfoundation.lams.tool.ToolSessionExportOutputData;
import org.lamsfoundation.lams.tool.ToolSessionManager;
@@ -76,6 +79,7 @@
import org.lamsfoundation.lams.tool.rsrc.model.Resource;
import org.lamsfoundation.lams.tool.rsrc.model.ResourceAttachment;
import org.lamsfoundation.lams.tool.rsrc.model.ResourceItem;
+import org.lamsfoundation.lams.tool.rsrc.model.ResourceItemInstruction;
import org.lamsfoundation.lams.tool.rsrc.model.ResourceItemVisitLog;
import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession;
import org.lamsfoundation.lams.tool.rsrc.model.ResourceUser;
@@ -86,6 +90,8 @@
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.lamsfoundation.lams.util.MessageService;
import org.lamsfoundation.lams.util.audit.IAuditService;
+import org.lamsfoundation.lams.util.wddx.WDDXProcessor;
+import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException;
import org.lamsfoundation.lams.util.zipfile.ZipFileUtil;
import org.lamsfoundation.lams.util.zipfile.ZipFileUtilException;
@@ -916,8 +922,137 @@
resourceSessionDao.deleteBySessionId(toolSessionId);
}
+ /* ===============Methods implemented from ToolContentImport102Manager =============== */
+
- public IExportToolContentService getExportContentService() {
+ /**
+ * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard
+ */
+ public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues)
+ {
+ Date now = new Date();
+ Resource toolContentObj = new Resource();
+
+ try {
+ toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE));
+ toolContentObj.setContentId(toolContentId);
+ toolContentObj.setContentInUse(Boolean.FALSE);
+ toolContentObj.setCreated(now);
+ toolContentObj.setDefineLater(Boolean.FALSE);
+ toolContentObj.setInstructions((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY));
+ toolContentObj.setOfflineInstructions(null);
+ toolContentObj.setOnlineInstructions(null);
+ toolContentObj.setRunOffline(Boolean.FALSE);
+ toolContentObj.setUpdated(now);
+
+ toolContentObj.setRunAuto(Boolean.FALSE);
+ Boolean bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_URL_RUNTIME_LEARNER_SUBMIT_FILE);
+ toolContentObj.setAllowAddFiles(bool != null ? bool : Boolean.TRUE);
+ bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_URL_RUNTIME_LEARNER_SUBMIT_URL);
+ toolContentObj.setAllowAddUrls(bool != null ? bool : Boolean.TRUE);
+ Integer minToComplete = WDDXProcessor.convertToInteger(importValues, ToolContentImport102Manager.CONTENT_URL_MIN_NUMBER_COMPLETE);
+ toolContentObj.setMiniViewResourceNumber(minToComplete != null ? minToComplete.intValue() : 0);
+ bool = WDDXProcessor.convertToBoolean(importValues, ToolContentImport102Manager.CONTENT_URL_RUNTIME_LEARNER_SUBMIT_URL);
+ toolContentObj.setLockWhenFinished(Boolean.FALSE);
+ toolContentObj.setRunAuto(Boolean.FALSE);
+
+ // leave as empty, no need to set them to anything.
+ //toolContentObj.setAttachments(attachments);
+
+/* unused entries from 1.0.2
+ [directoryName=] no equivalent in 2.0
+ [runtimeSubmissionStaffFile=true] no equivalent in 2.0
+ [contentShowUser=false] no equivalent in 2.0
+ [isHTML=false] no equivalent in 2.0
+ [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);
+ }
+
+ //resource Items
+ Vector urls = (Vector) importValues.get(ToolContentImport102Manager.CONTENT_URL_URLS);
+ if ( urls != null ) {
+ Iterator iter = urls.iterator();
+ while ( iter.hasNext() ) {
+ Hashtable urlMap = (Hashtable) iter.next();
+
+ ResourceItem item = new ResourceItem();
+ item.setTitle((String) urlMap.get(ToolContentImport102Manager.CONTENT_TITLE));
+ item.setCreateDate(now);
+ item.setCreateBy(user);
+ item.setCreateByAuthor(true);
+ item.setHide(false);
+
+ Vector instructions = (Vector) urlMap.get(ToolContentImport102Manager.CONTENT_URL_URL_INSTRUCTION_ARRAY);
+ if ( instructions != null && instructions.size() > 0 ) {
+ item.setItemInstructions(new HashSet());
+ Iterator insIter = instructions.iterator();
+ while (insIter.hasNext()) {
+ Hashtable instructionEntry = (Hashtable) insIter.next();
+ String instructionText = (String) instructionEntry.get(ToolContentImport102Manager.CONTENT_URL_INSTRUCTION);
+ Integer order = WDDXProcessor.convertToInteger(instructionEntry, ToolContentImport102Manager.CONTENT_URL_URL_VIEW_ORDER);
+ ResourceItemInstruction instruction = new ResourceItemInstruction();
+ instruction.setDescription(instructionText);
+ instruction.setSequenceId(order);
+ item.getItemInstructions().add(instruction);
+ }
+ }
+
+ String resourceType = (String) urlMap.get(ToolContentImport102Manager.CONTENT_URL_URL_TYPE);
+ if ( ToolContentImport102Manager.URL_RESOURCE_TYPE_URL.equals(resourceType) ) {
+ item.setType(ResourceConstants.RESOURCE_TYPE_URL);
+ item.setUrl((String) urlMap.get(ToolContentImport102Manager.CONTENT_URL_URL_URL));
+ item.setOpenUrlNewWindow(false);
+ } else if ( ToolContentImport102Manager.URL_RESOURCE_TYPE_WEBSITE.equals(resourceType) ) {
+ item.setType(ResourceConstants.RESOURCE_TYPE_WEBSITE);
+ } else if ( ToolContentImport102Manager.URL_RESOURCE_TYPE_FILE.equals(resourceType) ) {
+ item.setType(ResourceConstants.RESOURCE_TYPE_FILE);
+ } else {
+ throw new ToolException("Invalid shared resources type. Type was "+resourceType);
+ }
+
+ // TODO add the order field - no support for it in forum at present.
+ // public static final String CONTENT_URL_URL_VIEW_ORDER = "order";
+ toolContentObj.getResourceItems().add(item);
+ }
+ }
+
+ } catch (WDDXProcessorConversionException e) {
+ log.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.");
+ }
+
+ resourceDao.saveObject(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 {
+
+ Resource toolContentObj = getResourceByContentId(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 Share Resources doesn't support reflection yet!
+ // toolContentObj.setReflectOnActivity(Boolean.TRUE);
+ // toolContentObj.setReflectInstructions(description);
+ }
+
+
+ /* =================================================================================== */
+
+ public IExportToolContentService getExportContentService() {
return exportContentService;
}
Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java
===================================================================
diff -u -r5168567be6170c3fadb69a914e151bee62c8667b -r08afbd42add64dcb44f8accb9595bd125bd9ebae
--- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 5168567be6170c3fadb69a914e151bee62c8667b)
+++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae)
@@ -26,9 +26,9 @@
import java.io.InputStream;
import java.util.Date;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
@@ -58,8 +58,6 @@
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.util.wddx.WDDXProcessor;
-import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException;
import org.springframework.dao.DataAccessException;
@@ -1032,7 +1030,7 @@
/**
* Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard
*/
- public void import102ToolContent(Long toolContentId, Integer newUserId, Map importValues)
+ public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues)
{
Date now = new Date();
NoticeboardContent toolContentObj = new NoticeboardContent();
@@ -1052,7 +1050,14 @@
//toolContentObj.setNbAttachments(nbAttachments);
nbContentDAO.saveNbContent(toolContentObj);
}
-
+
+ /** Set the reflective title - does nothing as Noticeboard is not reflective */
+ public void setReflectiveData(Long toolContentId, String title, String defaultInputValues)
+ throws ToolException, DataMissingException {
+ log.error("Was asked to set reflective data "+title+" to activity toolContentId "+toolContentId
+ +". Noticeboard does not support reflection");
+ }
+
//=========================================================================================
public Long getToolDefaultContentIdBySignature(String toolSignature)
Index: lams_tool_nb/web/WEB-INF/lams.tld
===================================================================
diff -u -r9393c098e5dfd603e2d37347cd1e531a25aa424a -r08afbd42add64dcb44f8accb9595bd125bd9ebae
--- lams_tool_nb/web/WEB-INF/lams.tld (.../lams.tld) (revision 9393c098e5dfd603e2d37347cd1e531a25aa424a)
+++ lams_tool_nb/web/WEB-INF/lams.tld (.../lams.tld) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae)
@@ -311,7 +311,7 @@
/WEB-INF/tags/ExportPortOutput.tag
- DefineLater
- /WEB-INF/tags/DefineLater.tag
+ Date
+ /WEB-INF/tags/Date.tag
Index: lams_tool_nb/web/WEB-INF/tags/Date.tag
===================================================================
diff -u
--- lams_tool_nb/web/WEB-INF/tags/Date.tag (revision 0)
+++ lams_tool_nb/web/WEB-INF/tags/Date.tag (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae)
@@ -0,0 +1,37 @@
+<%
+/****************************************************************
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+ /**
+ * Author: Fiona Malikoff
+ * Description: Format a date, using the locale, based on standard parameters.
+ * Need to use long for the date otherwise the AU locale comes out as 1/2/06 and
+ * full is needed to include the timezone.
+ */
+
+ %>
+<%@ tag body-content="empty" %>
+<%@ attribute name="value" required="true" rtexprvalue="true" type="java.util.Date" %>
+<%@ taglib uri="tags-fmt" prefix="fmt" %>
+
+
Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java
===================================================================
diff -u -r7a1c6972ff38760192dbdaac41ed8e5e99105247 -r08afbd42add64dcb44f8accb9595bd125bd9ebae
--- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 7a1c6972ff38760192dbdaac41ed8e5e99105247)
+++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 08afbd42add64dcb44f8accb9595bd125bd9ebae)
@@ -30,11 +30,10 @@
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
-import java.util.HashMap;
import java.util.HashSet;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -57,10 +56,12 @@
import org.lamsfoundation.lams.contentrepository.service.IRepositoryService;
import org.lamsfoundation.lams.contentrepository.service.RepositoryProxy;
import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials;
+import org.lamsfoundation.lams.dao.IBaseDAO;
import org.lamsfoundation.lams.learning.service.ILearnerService;
import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException;
import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService;
import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException;
+import org.lamsfoundation.lams.tool.ToolContentImport102Manager;
import org.lamsfoundation.lams.tool.ToolContentManager;
import org.lamsfoundation.lams.tool.ToolSessionExportOutputData;
import org.lamsfoundation.lams.tool.ToolSessionManager;
@@ -84,7 +85,6 @@
import org.lamsfoundation.lams.tool.sbmt.util.SbmtToolContentHandler;
import org.lamsfoundation.lams.tool.service.ILamsToolService;
import org.lamsfoundation.lams.usermanagement.User;
-import org.lamsfoundation.lams.dao.IBaseDAO;
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
import org.lamsfoundation.lams.usermanagement.util.LastNameAlphabeticComparator;
import org.lamsfoundation.lams.util.DateUtil;
@@ -770,6 +770,53 @@
return learners;
}
+ /* ===============Methods implemented from ToolContentImport102Manager =============== */
+
+
+ /**
+ * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard
+ */
+ public void import102ToolContent(Long toolContentId, Integer newUserId, Hashtable importValues)
+ {
+ Date now = new Date();
+ SubmitFilesContent toolContentObj = new SubmitFilesContent();
+
+ toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE));
+ toolContentObj.setContentID(toolContentId);
+ toolContentObj.setContentInUse(Boolean.FALSE);
+ // toolContentObj.setCreated(now);
+ toolContentObj.setDefineLater(Boolean.FALSE);
+ toolContentObj.setInstruction((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY));
+ toolContentObj.setOfflineInstruction(null);
+ toolContentObj.setOnlineInstruction(null);
+ toolContentObj.setRunOffline(Boolean.FALSE);
+ // toolContentObj.setUpdated(now);
+ // 1.0.2 doesn't allow users to go back after completion, which is the equivalent of lock on finish.
+ toolContentObj.setLockOnFinished(Boolean.TRUE);
+ // toolContentObj.setCreatedBy(user);
+
+ // leave as empty, no need to set them to anything.
+ //toolContentObj.setInstructionFiles(attachments);
+
+ submitFilesContentDAO.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 {
+
+ SubmitFilesContent toolContentObj = getSubmitFilesContent(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 Share Resources doesn't support reflection yet!
+ // toolContentObj.setReflectOnActivity(Boolean.TRUE);
+ // toolContentObj.setReflectInstructions(description);
+ }
+
/***************************************************************************
* Property Injection Methods
**************************************************************************/