Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r98064f112f0bd41d1adc890ea1c0e962d0be6cb2 -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
Binary files differ
Index: lams_central/conf/xdoclet/servlet-mappings.xml
===================================================================
diff -u -r8e8a1f2b58ed44e9480b576fbbbea82b98a028a2 -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
--- lams_central/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision 8e8a1f2b58ed44e9480b576fbbbea82b98a028a2)
+++ lams_central/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -18,4 +18,9 @@
ExportToolContent
/ExportToolContent
+
+
+
+ ImportToolContent
+ /ImportToolContent
\ No newline at end of file
Index: lams_central/conf/xdoclet/servlets.xml
===================================================================
diff -u -r8e8a1f2b58ed44e9480b576fbbbea82b98a028a2 -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
--- lams_central/conf/xdoclet/servlets.xml (.../servlets.xml) (revision 8e8a1f2b58ed44e9480b576fbbbea82b98a028a2)
+++ lams_central/conf/xdoclet/servlets.xml (.../servlets.xml) (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -89,3 +89,7 @@
ExportToolContent
org.lamsfoundation.lams.authoring.web.ExportToolContentServlet
+
+ ImportToolContent
+ org.lamsfoundation.lams.authoring.web.ImportToolContentServlet
+
Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/ImportToolContentServlet.java
===================================================================
diff -u
--- lams_central/src/java/org/lamsfoundation/lams/authoring/web/ImportToolContentServlet.java (revision 0)
+++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/ImportToolContentServlet.java (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -0,0 +1,118 @@
+/****************************************************************
+ * 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
+ * ****************************************************************
+ */
+
+/* $Id$ */
+package org.lamsfoundation.lams.authoring.web;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.fileupload.DiskFileUpload;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService;
+import org.lamsfoundation.lams.util.FileUtil;
+import org.lamsfoundation.lams.util.FileUtilException;
+import org.lamsfoundation.lams.util.zipfile.ZipFileUtil;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+/**
+ * Export tool content servlet. It needs learingDesignID as input parameter.
+ * @author Steve.Ni
+ *
+ * @version $Revision$
+ */
+public class ImportToolContentServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ public static final String EXPORT_TOOLCONTENT_SERVICE_BEAN_NAME = "exportToolContentService";
+ public static final String PARAM_LEARING_DESIGN_ID = "learningDesignID";
+
+
+ private Logger log = Logger.getLogger(ImportToolContentServlet.class);
+
+ /*
+ * @see javax.servlet.http.HttpServlet.service(HttpServletRequest, HttpServletResponse)
+ */
+ public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
+
+
+ try {
+ FileItem file = null;
+ Map params = new HashMap();
+ String filename;
+
+ String uploadPath = FileUtil.createTempDirectory("_uploaded_learningdesing");
+ String ldPath = FileUtil.getFullPath(uploadPath,"learningdesign");
+ FileUtil.createDirectory(ldPath);
+
+ 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());
+ file = fi;
+ }
+ }
+ if (file == null) {
+ log.error("Upload file is empty, import tool content failed.");
+ return;
+ }
+ // write the file
+ ZipFileUtil.expandZip(file.getInputStream(),ldPath);
+ IExportToolContentService service = getExportService();
+ service.importLearningDesign(ldPath);
+ } catch (Exception e) {
+ log.error("Unable to import tool content: " + e.toString());
+ }
+
+
+ }
+
+ //***************************************************************************************
+ // Private method
+ //***************************************************************************************
+ private IExportToolContentService getExportService(){
+ WebApplicationContext webContext = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
+ return (IExportToolContentService) webContext.getBean(EXPORT_TOOLCONTENT_SERVICE_BEAN_NAME);
+ }
+}
Index: lams_central/web/importToolContent/import.jsp
===================================================================
diff -u
--- lams_central/web/importToolContent/import.jsp (revision 0)
+++ lams_central/web/importToolContent/import.jsp (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -0,0 +1,22 @@
+<%@ taglib uri="tags-lams" prefix="lams"%>
+
+
+
+
+ Import tool content
+
+
+
+
+
+
+ Upload Learning Design
+
+
+
+
+
+
Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml
===================================================================
diff -u -rf17ef475206dfa5950b19434ec135b157201c987 -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
--- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision f17ef475206dfa5950b19434ec135b157201c987)
+++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -162,6 +162,7 @@
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
+ PROPAGATION_REQUIRED
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java
===================================================================
diff -u -r03392c988a23f5e9129967f8ae692488213632fe -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java (.../LearningDesignDTO.java) (revision 03392c988a23f5e9129967f8ae692488213632fe)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java (.../LearningDesignDTO.java) (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -196,8 +196,60 @@
this.activities = populateActivities(learningDesign);
this.transitions = populateTransitions(learningDesign);
}
-
/**
+ * Get learning design object from this dto.
+ *
+ * user
+ * getFirstActivity
+ * riginalLearningDesign
+ * setWorkspaceFolder
+ * @return
+ */
+ public LearningDesign getLearningDesign(){
+ LearningDesign ld = new LearningDesign();
+
+
+ ld.setLearningDesignId(this.learningDesignID);
+ ld.setLearningDesignUIID(this.learningDesignUIID);
+ ld.setDescription(this.description);
+ ld.setTitle(this.title);
+
+// ld.setFirstActivity(this.firstActivityUIID);
+
+ ld.setMaxID(this.maxID);
+ ld.setValidDesign(this.validDesign);
+ ld.setReadOnly(this.readOnly);
+ ld.setDateReadOnly(this.dateReadOnly);
+ ld.setOfflineInstructions(this.offlineInstructions);
+ ld.setOnlineInstructions(this.onlineInstructions);
+
+ ld.setHelpText(this.helpText);
+ ld.setCopyTypeID(this.copyTypeID );
+ ld.setCreateDateTime(this.createDateTime);
+ ld.setVersion(this.version);
+
+// ld.setOriginalLearningDesign(originalLearningDesignID);
+//
+// ld.setWorkspaceFolder(this.workspaceFolderID);
+
+ ld.setDuration(this.duration);
+ ld.setLicenseText(this.licenseText);
+
+// ld.setLicense(this.licenseID);
+
+ ld.setLessonOrgID(this.lessonOrgID);
+
+ ld.setLessonOrgName(this.lessonOrgName);
+ ld.setLessonID(this.lessonID);
+ ld.setLessonName(this.lessonName);
+ ld.setLessonStartDateTime(this.lessonStartDateTime);
+ ld.setLastModifiedDateTime(this.lastModifiedDateTime);
+// this.groupings = populateGroupings(learningDesign,activityDAO);
+// this.activities = populateActivities(learningDesign);
+// this.transitions = populateTransitions(learningDesign);
+ return ld;
+ }
+ /**
* @return Returns the copyTypeID.
*/
public Integer getCopyTypeID() {
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java
===================================================================
diff -u -r7459651abc01831e57ff669de16293c51b543dcb -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 7459651abc01831e57ff669de16293c51b543dcb)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -25,8 +25,13 @@
package org.lamsfoundation.lams.learningdesign.service;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
@@ -42,6 +47,7 @@
import org.lamsfoundation.lams.contentrepository.ItemNotFoundException;
import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException;
import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler;
+import org.lamsfoundation.lams.learningdesign.LearningDesign;
import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO;
import org.lamsfoundation.lams.learningdesign.dto.AuthoringActivityDTO;
import org.lamsfoundation.lams.learningdesign.dto.LearningDesignDTO;
@@ -303,10 +309,52 @@
}
}
+
+ /**
+ * @see org.lamsfoundation.lams.authoring.service.IExportToolContentService.registerFileHandleClass(String,String,String)
+ */
public void registerFileHandleClass(String fileNodeClassName,String fileUuidFieldName, String fileVersionFieldName){
fileHandleClassList.add(this.new FileHandleClassInfo(fileNodeClassName,fileUuidFieldName,fileVersionFieldName));
}
+ /**
+ * @throws ExportToolContentException
+ * @see org.lamsfoundation.lams.authoring.service.IExportToolContentService.importLearningDesign(String)
+ */
+ public void importLearningDesign(String learningDesignPath) throws ExportToolContentException {
+
+ try {
+ //import learning design
+ Reader ldFile = new FileReader(new File(FileUtil.getFullPath(learningDesignPath,LEARNING_DESIGN_FILE_NAME)));
+ XStream designXml = new XStream();
+ LearningDesignDTO ldDto = (LearningDesignDTO) designXml.fromXML(ldFile);
+
+ //persist learning design to database
+ ILearningDesignService service = getLearningDesignService();
+ log.debug("Learning design xml import success. Continue tool content import...");
+ //TODO
+
+ //begin tool import
+ List activities = ldDto.getActivities();
+ for(AuthoringActivityDTO activity : activities){
+ String toolPath = FileUtil.getFullPath(learningDesignPath,activity.getToolContentID().toString());
+ ToolContentManager contentManager = (ToolContentManager) findToolService(toolDAO.getToolByID(activity.getToolID()));
+ log.debug("Tool import content : " + activity.getTitle() +" by contentID :" + activity.getToolContentID());
+
+ //change xml to Tool POJO
+ XStream toolXml = new XStream();
+ Reader toolFile = new FileReader(new File(FileUtil.getFullPath(toolPath,TOOL_FILE_NAME)));;
+ Object toolPOJO = toolXml.fromXML(toolFile);
+ contentManager.importToolContent(toolPOJO);
+ }
+ } catch (FileNotFoundException e) {
+ throw new ExportToolContentException(e);
+ } catch (ToolException e) {
+ throw new ExportToolContentException(e);
+ }
+
+ }
+
//******************************************************************
// ApplicationContextAware method implementation
//******************************************************************
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/IExportToolContentService.java
===================================================================
diff -u -rf17ef475206dfa5950b19434ec135b157201c987 -raf5a6d9874421d5f5bb335259ae58b23116b0bf5
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/IExportToolContentService.java (.../IExportToolContentService.java) (revision f17ef475206dfa5950b19434ec135b157201c987)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/IExportToolContentService.java (.../IExportToolContentService.java) (revision af5a6d9874421d5f5bb335259ae58b23116b0bf5)
@@ -75,4 +75,6 @@
* @param fileVersionFieldName The POJO properties name for get fileVersion. There must be a get method to access this property.
*/
void registerFileHandleClass(String fileNodeClassName,String fileUuidFieldName, String fileVersionFieldName);
+
+ void importLearningDesign(String learningDesignPath) throws ExportToolContentException;
}