Index: lams_tool_larsrc/conf/language/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/conf/language/Attic/ApplicationResources.properties,v diff -u -r1.12 -r1.13 --- lams_tool_larsrc/conf/language/ApplicationResources.properties 2 May 2006 06:34:01 -0000 1.12 +++ lams_tool_larsrc/conf/language/ApplicationResources.properties 3 May 2006 02:15:02 -0000 1.13 @@ -129,6 +129,11 @@ message.monitoring.edit.activity.not.editable=This Activity is no longer editable #------------------------------End Monitoring ----------------------------------# +export.label.resource=Resource +export.label.no.learning.object=No offline package available +export.title=Export portfolio of Shared Resource +export.init.resource=Initial Resources + ## errors errors.header= errors.footer= @@ -137,8 +142,6 @@ error.valueReqd = Value Required error.inputFileTooLarge = Input File size is too large! error.uploading = error uploading -error.mark.needNumber= Mark must be int value -error.mark.invalid.number= Mark is invalid number format error.title.empty=Title can not be blank #General Messages message.msg.maxFileSize = Max 250K Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Attic/Summary.java,v diff -u -r1.1 -r1.2 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java 1 May 2006 06:30:51 -0000 1.1 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java 3 May 2006 02:15:03 -0000 1.2 @@ -23,6 +23,9 @@ /* $Id$ */ package org.lamsfoundation.lams.tool.rsrc.dto; + +import org.lamsfoundation.lams.tool.rsrc.model.ResourceItem; + /** * List contains following element:
* @@ -51,7 +54,28 @@ private String username; private int viewNumber; + //following is used for export portfolio programs: + private String url; + private Long fileUuid; + private Long fileVersionId; + //true: initial group item, false, belong to some group. + private boolean isInitGroup; + public Summary(){} + public Summary(String sessionName, ResourceItem item,boolean isInitGroup){ + this.sessionName = sessionName; + this.itemUid = item.getUid(); + this.itemType = item.getType(); + this.itemCreateByAuthor = item.isCreateByAuthor(); + this.itemHide = item.isHide(); + this.itemTitle = item.getTitle(); + this.username = item.getCreateBy() == null?"":item.getCreateBy().getLoginName(); + this.url = item.getUrl(); + this.fileUuid = item.getFileUuid(); + this.fileVersionId = item.getFileVersionId(); + + this.isInitGroup = isInitGroup; + } public boolean isItemCreateByAuthor() { return itemCreateByAuthor; } @@ -106,6 +130,32 @@ public void setViewNumber(int viewNumber) { this.viewNumber = viewNumber; } + public Long getFileUuid() { + return fileUuid; + } + public void setFileUuid(Long fileUuid) { + this.fileUuid = fileUuid; + } + public Long getFileVersionId() { + return fileVersionId; + } + public void setFileVersionId(Long fileVersionId) { + this.fileVersionId = fileVersionId; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + + public boolean isInitGroup() { + return isInitGroup; + } + + public void setInitGroup(boolean isInitGroup) { + this.isInitGroup = isInitGroup; + } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java,v diff -u -r1.13 -r1.14 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java 1 May 2006 06:30:50 -0000 1.13 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/IResourceService.java 3 May 2006 02:15:02 -0000 1.14 @@ -33,7 +33,6 @@ import org.lamsfoundation.lams.tool.rsrc.model.ResourceItem; import org.lamsfoundation.lams.tool.rsrc.model.ResourceSession; import org.lamsfoundation.lams.tool.rsrc.model.ResourceUser; -import org.lamsfoundation.lams.usermanagement.User; /** * @author Dapeng.Ni @@ -109,7 +108,9 @@ * @param visible true, item is visible. False, item is invisible. */ void setItemVisible(Long itemUid, boolean visible); + - + public List exportBySessionId(Long sessionId); + public List exportByContentId(Long contentId); } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java,v diff -u -r1.17 -r1.18 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 1 May 2006 06:30:50 -0000 1.17 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 3 May 2006 02:15:02 -0000 1.18 @@ -294,7 +294,50 @@ return items; } - + public List exportBySessionId(Long sessionId) { + ResourceSession session = resourceSessionDao.getSessionBySessionId(sessionId); + if(session == null){ + log.error("Failed get ResourceSession by ID [" +sessionId + "]"); + return null; + } + + //add resource items from ResourceSession + List itemList = new ArrayList(); + //get this session's all resource items + Set resList =session.getResourceItems(); + for(ResourceItem item:resList){ + if(!item.isCreateByAuthor()){ + Summary sum = new Summary(session.getSessionName(),item,false); + itemList.add(sum); + } + } + + return itemList; + } + public List exportByContentId(Long contentId) { + Resource resource = resourceDao.getByContentId(contentId); + List groupList = new ArrayList(); + + //create init resource items list + List initList = new ArrayList(); + groupList.add(initList); + Set resList = resource.getResourceItems(); + for(ResourceItem item:resList){ + if(item.isCreateByAuthor()){ + Summary sum = new Summary(null,item,true); + initList.add(sum); + } + } + + //session by session + List sessionList = resourceSessionDao.getByContentId(contentId); + for(ResourceSession session:sessionList){ + List group = exportBySessionId(session.getSessionId()); + groupList.add(group); + } + + return groupList; + } public Resource getResourceBySessionId(Long sessionId){ ResourceSession session = resourceSessionDao.getSessionBySessionId(sessionId); //to skip CGLib problem @@ -409,7 +452,6 @@ resourceItemDao.saveObject(item); } - //***************************************************************************** // private methods //***************************************************************************** @@ -716,5 +758,4 @@ } - } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceProxy.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceProxy.java,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceProxy.java 3 Apr 2006 13:24:23 -0000 1.3 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceProxy.java 3 May 2006 02:15:02 -0000 1.4 @@ -45,22 +45,22 @@ public class ResourceServiceProxy { /** - * Return the mc domain service object. It will delegate to the Spring + * Return the domain service object. It will delegate to the Spring * helper method to retrieve the proper bean from Spring bean factory. * @param servletContext the servletContext for current application - * @return mcq service object. + * @return Shared resource service object. */ public static final IResourceService getResourceService(ServletContext servletContext) { return (IResourceService)getResourceDomainService(servletContext); } - public static final ToolSessionManager getMcSessionManager(ServletContext servletContext) + public static final ToolSessionManager getSessionManager(ServletContext servletContext) { return (ToolSessionManager)getResourceDomainService(servletContext); } - public static final ToolContentManager getMcContentManager(ServletContext servletContext) + public static final ToolContentManager getContentManager(ServletContext servletContext) { return (ToolContentManager)getResourceDomainService(servletContext); } Fisheye: Tag 1.3 refers to a dead (removed) revision in file `lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/Download.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java 3 May 2006 02:15:03 -0000 1.1 @@ -0,0 +1,133 @@ +/**************************************************************** + * 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: ExportServlet.java,v 1.1 2006/05/03 02:15:03 steven Exp $$ */ + +package org.lamsfoundation.lams.tool.rsrc.web.servlet; + +import java.util.List; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.rsrc.ResourceConstants; +import org.lamsfoundation.lams.tool.rsrc.dto.Summary; +import org.lamsfoundation.lams.tool.rsrc.model.Resource; +import org.lamsfoundation.lams.tool.rsrc.model.ResourceUser; +import org.lamsfoundation.lams.tool.rsrc.service.IResourceService; +import org.lamsfoundation.lams.tool.rsrc.service.ResourceApplicationException; +import org.lamsfoundation.lams.tool.rsrc.service.ResourceServiceProxy; +import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; + +/** + * Export portfolio servlet to export all shared resource into offline HTML + * package. + * + * @author Steve.Ni + * + * @version $Revision: 1.1 $ + */ +public class ExportServlet extends AbstractExportPortfolioServlet { + private static final long serialVersionUID = -4529093489007108143L; + + private static Logger logger = Logger.getLogger(ExportServlet.class); + + private final String FILENAME = "shared_resources_main.html"; + + public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) { + try { + if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) { + learner(request, response, directoryName, cookies); + } else if (StringUtils.equals(mode, ToolAccessMode.TEACHER.toString())) { + teacher(request, response, directoryName, cookies); + } + } catch (ResourceApplicationException e) { + logger.error("Cannot perform export for share resource tool."); + } + + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + + request.getContextPath(); + writeResponseToFile(basePath + "/pages/export/exportportfolio.jsp", directoryName, FILENAME, cookies); + + return FILENAME; + } + + public void learner(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) + throws ResourceApplicationException { + + IResourceService service = ResourceServiceProxy.getResourceService(getServletContext()); + + if (userID == null || toolSessionID == null) { + String error = "Tool session Id or user Id is null. Unable to continue"; + logger.error(error); + throw new ResourceApplicationException(error); + } + + ResourceUser learner = service.getUserByID(userID); + + if (learner == null) { + String error = "The user with user id " + userID + " does not exist."; + logger.error(error); + throw new ResourceApplicationException(error); + } + + Resource content = service.getResourceByContentId(toolSessionID); + + if (content == null) { + String error = "The content for this activity has not been defined yet."; + logger.error(error); + throw new ResourceApplicationException(error); + } + List group = service.exportBySessionId(toolSessionID); + request.getSession().setAttribute(ResourceConstants.ATTR_RESOURCE_ITEM_LIST, group); + } + + public void teacher(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) + throws ResourceApplicationException { + IResourceService service = ResourceServiceProxy.getResourceService(getServletContext()); + + // check if toolContentId exists in db or not + if (toolContentID == null) { + String error = "Tool Content Id is missing. Unable to continue"; + logger.error(error); + throw new ResourceApplicationException(error); + } + + Resource content = service.getResourceByContentId(toolContentID); + + if (content == null) { + String error = "Data is missing from the database. Unable to Continue"; + logger.error(error); + throw new ResourceApplicationException(error); + } + List groupList = service.exportByContentId(toolContentID); + + // put it into HTTPSession + request.getSession().setAttribute(ResourceConstants.ATTR_RESOURCE_ITEM_LIST, groupList); + } + +} Index: lams_tool_larsrc/web/WEB-INF/web.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/WEB-INF/web.xml,v diff -u -r1.7 -r1.8 --- lams_tool_larsrc/web/WEB-INF/web.xml 14 Apr 2006 06:19:40 -0000 1.7 +++ lams_tool_larsrc/web/WEB-INF/web.xml 3 May 2006 02:15:02 -0000 1.8 @@ -82,7 +82,7 @@ exportPortfolio - org.lamsfoundation.lams.tool.rsrc.web.action.ExportServlet + org.lamsfoundation.lams.tool.rsrc.web.servlet.ExportServlet Index: lams_tool_larsrc/web/pages/export/exportportfolio.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/pages/export/exportportfolio.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_larsrc/web/pages/export/exportportfolio.jsp 3 May 2006 02:15:02 -0000 1.1 @@ -0,0 +1,126 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + <fmt:message key="export.title" /> + + + + + css/aqua.css" rel="stylesheet" type="text/css"> + + + + + + + + + <%-- display group name on first row--%> + + + + + + + + + + +
+ + + + + + + + + + ${item.sessionName} + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + + + + ${item.itemTitle} + + + ${item.username} + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
Index: lams_tool_larsrc/web/pages/monitoring/summary.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/web/pages/monitoring/summary.jsp,v diff -u -r1.3 -r1.4 --- lams_tool_larsrc/web/pages/monitoring/summary.jsp 2 May 2006 04:07:37 -0000 1.3 +++ lams_tool_larsrc/web/pages/monitoring/summary.jsp 3 May 2006 02:15:02 -0000 1.4 @@ -1,7 +1,7 @@ <%@ include file="/common/taglibs.jsp"%> - + <%-- display group name on first row--%> @@ -10,6 +10,9 @@
${item.sessionName} + + +