Index: lams_central/src/java/org/lamsfoundation/lams/web/HomeController.java =================================================================== diff -u -r65aec4aac4e80981cd4f91951cae556642027139 -r1df79e8f3202227e5d076d5823aa74c58c48504c --- lams_central/src/java/org/lamsfoundation/lams/web/HomeController.java (.../HomeController.java) (revision 65aec4aac4e80981cd4f91951cae556642027139) +++ lams_central/src/java/org/lamsfoundation/lams/web/HomeController.java (.../HomeController.java) (revision 1df79e8f3202227e5d076d5823aa74c58c48504c) @@ -195,8 +195,7 @@ serverURLContextPath = serverURLContextPath.startsWith("/") ? serverURLContextPath : "/" + serverURLContextPath; serverURLContextPath += serverURLContextPath.endsWith("/") ? "" : "/"; - applicationcontext.getServletContext().getContext(serverURLContextPath + "learning") - .getRequestDispatcher("/welcome.jsp?lessonID=" + lessonId).forward(req, res); + res.sendRedirect(serverURLContextPath + "learning/welcome.jsp?lessonID=" + lessonId); return null; } catch (Exception e) { Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/NodeFactory.java =================================================================== diff -u -r783f965b1bb2251474d01f32a53e4ccb28d5473b -r1df79e8f3202227e5d076d5823aa74c58c48504c --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/NodeFactory.java (.../NodeFactory.java) (revision 783f965b1bb2251474d01f32a53e4ccb28d5473b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/NodeFactory.java (.../NodeFactory.java) (revision 1df79e8f3202227e5d076d5823aa74c58c48504c) @@ -21,7 +21,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.contentrepository.service; import java.io.InputStream; @@ -37,11 +36,11 @@ import org.lamsfoundation.lams.contentrepository.IValue; import org.lamsfoundation.lams.contentrepository.NodeType; import org.lamsfoundation.lams.contentrepository.PropertyName; -import org.lamsfoundation.lams.contentrepository.dao.INodeDAO; import org.lamsfoundation.lams.contentrepository.exception.FileException; import org.lamsfoundation.lams.contentrepository.exception.InvalidParameterException; import org.lamsfoundation.lams.contentrepository.exception.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.exception.ValueFormatException; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; @@ -60,15 +59,11 @@ protected Logger log = Logger.getLogger(NodeFactory.class); private BeanFactory beanFactory = null; - private INodeDAO nodeDAO = null; + private IUserManagementService userManagementService = null; - public NodeFactory() { - super(); - } - /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#createFileNode(org.lamsfoundation.lams. * contentrepository.CrWorkspace, org.lamsfoundation.lams.contentrepository.service.SimpleVersionedNode, * java.lang.String, java.io.InputStream, java.lang.String, java.lang.String, java.lang.String) @@ -87,7 +82,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#createPackageNode(org.lamsfoundation.lams. * contentrepository.CrWorkspace, java.lang.String, java.lang.String) */ @@ -104,7 +99,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#createDataNode(org.lamsfoundation.lams. * contentrepository.CrWorkspace, org.lamsfoundation.lams.contentrepository.service.SimpleVersionedNode, * java.lang.String) @@ -144,7 +139,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.contentrepository.service.INodeFactory#getNode(org.lamsfoundation.lams.contentrepository. * CrNode, java.lang.Long) @@ -159,7 +154,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#getNode(java.lang.Long, java.lang.Long, * java.lang.Long) */ @@ -176,7 +171,7 @@ CrNode node = null; - node = (CrNode) nodeDAO.find(CrNode.class, uuid); + node = (CrNode) getUserManagementService().findById(CrNode.class, uuid); if (node == null) { throw new ItemNotFoundException("Node " + uuid + " not found."); @@ -194,7 +189,7 @@ /* * (non-Javadoc) - * + * * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#getNode(java.lang.Long, java.lang.Long, * java.lang.Long, java.lang.String) */ @@ -220,7 +215,7 @@ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.contentrepository.service.INodeFactory#copy(org.lamsfoundation.lams.contentrepository. * service.SimpleVersionedNode) @@ -235,7 +230,7 @@ /** * Private method to handle the recursive copy. The parent node is needed to set up the * node -> parent link in the CrNode object. - * + * * @param originalNode * @param parentNode * @return new Node @@ -268,7 +263,7 @@ } } - // copy any attached file. don't actually copy the file - set up + // copy any attached file. don't actually copy the file - set up // and input stream and the file will be copied when the node is saved. // this is likely to recopy the Filename and Mimetype properties. if (originalNode.isNodeType(NodeType.FILENODE)) { @@ -298,31 +293,10 @@ * ********************************************************** */ - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#getNodeDAO() - */ - @Override - public INodeDAO getNodeDAO() { - return nodeDAO; - } - - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.contentrepository.service.INodeFactory#setNodeDAO(org.lamsfoundation.lams. - * contentrepository.dao.INodeDAO) - */ - @Override - public void setNodeDAO(INodeDAO nodeDAO) { - this.nodeDAO = nodeDAO; - } - /* **** Method for BeanFactoryAware interface *****************/ /* * (non-Javadoc) - * + * * @see * org.lamsfoundation.lams.contentrepository.service.INodeFactory#setBeanFactory(org.springframework.beans.factory. * BeanFactory) @@ -332,4 +306,12 @@ this.beanFactory = beanFactory; } -} + public IUserManagementService getUserManagementService() { + // this can not be done by injection as bean factory is not fully initialised when it happens and we get an exception on start up + if (userManagementService == null) { + userManagementService = beanFactory.getBean("userManagementService", IUserManagementService.class); + } + return userManagementService; + } + +} \ No newline at end of file Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java =================================================================== diff -u -r9592b43376eddffe01711a9c27329414b68b1e97 -r1df79e8f3202227e5d076d5823aa74c58c48504c --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 9592b43376eddffe01711a9c27329414b68b1e97) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 1df79e8f3202227e5d076d5823aa74c58c48504c) @@ -54,14 +54,13 @@ import org.lamsfoundation.lams.contentrepository.NodeType; import org.lamsfoundation.lams.contentrepository.PropertyName; import org.lamsfoundation.lams.contentrepository.PropertyType; -import org.lamsfoundation.lams.contentrepository.dao.IFileDAO; -import org.lamsfoundation.lams.contentrepository.dao.INodeDAO; import org.lamsfoundation.lams.contentrepository.exception.FileException; import org.lamsfoundation.lams.contentrepository.exception.InvalidParameterException; import org.lamsfoundation.lams.contentrepository.exception.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.exception.RepositoryRuntimeException; import org.lamsfoundation.lams.contentrepository.exception.ValidationException; import org.lamsfoundation.lams.contentrepository.exception.ValueFormatException; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.FileUtil; /** @@ -106,10 +105,11 @@ private ITicket ticket = null; // transient data - using for grouping nodes in a session /* Spring configured varibles */ - private INodeDAO nodeDAO = null; - private IFileDAO fileDAO = null; - private INodeFactory nodeFactory = null; + private IRepositoryService repositoryService; + private IUserManagementService userManagementService; + private INodeFactory nodeFactory; + // TODO This is a case for AOP! /** * Check that all the necessary objects exists - node, nodeVersion, nodeDAO and fileDAO @@ -125,13 +125,10 @@ throw new RepositoryRuntimeException("Node details missing (nodeVersion=null). " + specialisedMessage); } - if (nodeDAO == null) { - throw new RepositoryRuntimeException("Node details missing (nodeDAO=null). " + specialisedMessage); + if (repositoryService == null) { + throw new RepositoryRuntimeException( + "Node details missing (repositoryService=null). " + specialisedMessage); } - - if (fileDAO == null) { - throw new RepositoryRuntimeException("Node details missing (fileDAO=null). " + specialisedMessage); - } } /** Add a child to the node. To be used by SimpleVersionedNode and the NodeFactory only */ @@ -391,7 +388,7 @@ if (isNodeType(NodeType.FILENODE)) { - return fileDAO.getFile(node.getNodeId(), nodeVersion.getVersionId()); + return repositoryService.daoGetFile(node.getNodeId(), nodeVersion.getVersionId()); } else if (isNodeType(NodeType.PACKAGENODE)) { @@ -525,7 +522,7 @@ // if it is a new node or a new version then it must have a file, otherwise check on disk. // version id will always be set. uuid isn't set until the record is written to the db, // but don't want to rely on that if we can help it in case it changes in future. - if (newIStream == null && (uuid == null || !fileDAO.fileExists(uuid, versionId))) { + if (newIStream == null && (uuid == null || !repositoryService.daoFileExists(uuid, versionId))) { errors = errors + "\nNode is a file node but the file is missing. "; } } catch (FileException fe) { @@ -621,7 +618,7 @@ SimpleVersionedNode element = (SimpleVersionedNode) writtenIter.next(); int delStatus = -1; try { - delStatus = fileDAO.delete(element.getUUID(), element.getVersion()); + delStatus = repositoryService.daoDelete(element.getUUID(), element.getVersion()); } catch (Exception e2) { // things are getting bad - throwing exceptions on the delete! } @@ -666,7 +663,7 @@ // nodeDAO to take care of insert or update (uses saveOrUpdate) // the nodeVersion and nodeVersionProperty collections cascade // updates and deletes, so we can just save the node! - nodeDAO.saveOrUpdate(node); + userManagementService.save(node); // child nodes are done manually as the set is lazy loaded // and can't work out how to do that properly using the DAO template! @@ -675,7 +672,7 @@ Iterator iter = childNodes.iterator(); while (iter.hasNext()) { SimpleVersionedNode node = (SimpleVersionedNode) iter.next(); - nodeDAO.saveOrUpdate(node.getNode()); + userManagementService.save(node.getNode()); } } @@ -689,7 +686,7 @@ private void writeFile() throws FileException { String filePath = null; if (newIStream != null) { - filePath = fileDAO.writeFile(node.getNodeId(), nodeVersion.getVersionId(), newIStream); + filePath = repositoryService.daoWriteFile(node.getNodeId(), nodeVersion.getVersionId(), newIStream); } setFilePath(filePath); } @@ -723,7 +720,7 @@ log.debug("getNode for path " + relPath + " start."); } - CrNode childNode = nodeDAO.findChildNode(nodeVersion, relPath); + CrNode childNode = repositoryService.daoFindChildNode(nodeVersion, relPath); if (childNode != null) { return nodeFactory.getNode(childNode, null); @@ -740,7 +737,7 @@ */ @Override public Set getChildNodes() { - List childCrNodes = nodeDAO.findChildNodes(nodeVersion); + List childCrNodes = repositoryService.daoFindChildNodes(nodeVersion); Set childNodes = new HashSet(); if (childCrNodes != null) { @@ -791,7 +788,7 @@ */ @Override public boolean hasNodes() { - List childNodes = nodeDAO.findChildNodes(nodeVersion); + List childNodes = repositoryService.daoFindChildNodes(nodeVersion); return (childNodes != null && childNodes.size() > 0); } @@ -845,9 +842,9 @@ while (iter.hasNext()) { NodeKey nk = (NodeKey) iter.next(); try { - int delStatus = fileDAO.delete(nk.getUuid(), nk.getVersion()); + int delStatus = repositoryService.daoDelete(nk.getUuid(), nk.getVersion()); if (delStatus == -1) { - failedList.add(fileDAO.getFilePath(nk.getUuid(), nk.getVersion())); + failedList.add(repositoryService.daoGetFilePath(nk.getUuid(), nk.getVersion())); } } catch (FileException e) { log.error("FileException occured while deleting files for " + nodeDescription, e); @@ -898,7 +895,7 @@ // if this was the last version for the node, delete the node if (node.getCrNodeVersions() == null || node.getCrNodeVersions().size() == 0) { - nodeDAO.delete(node); + userManagementService.delete(node); } } @@ -1080,45 +1077,19 @@ * ********************************************************** */ - /** - * @return Returns the nodeDAO. - */ - public INodeDAO getNodeDAO() { - return nodeDAO; + public void setRepositoryService(IRepositoryService repositoryService) { + this.repositoryService = repositoryService; } - /** - * @param nodeDAO - * The nodeDAO to set. - */ - public void setNodeDAO(INodeDAO nodeDAO) { - this.nodeDAO = nodeDAO; + public void setNodeFactory(INodeFactory nodeFactory) { + this.nodeFactory = nodeFactory; } - /** - * @return Returns the fileDAO. - */ - public IFileDAO getFileDAO() { - return fileDAO; + public void setUserManagementService(IUserManagementService userManagementService) { + this.userManagementService = userManagementService; } /** - * @param fileDAO - * The fileDAO to set. - */ - public void setFileDAO(IFileDAO fileDAO) { - this.fileDAO = fileDAO; - } - - public INodeFactory getNodeFactory() { - return nodeFactory; - } - - public void setNodeFactory(INodeFactory nodeFactory) { - this.nodeFactory = nodeFactory; - } - - /** * Clean up any resources that will not be cleaned up by the garbage * collector after this object is destroyed. At present, all it does is * close the filestream if needed @@ -1133,5 +1104,4 @@ log.debug("Unable to close stream - was it already closed perhaps?", e); } } - -} +} \ No newline at end of file