Index: lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveController.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveController.java (.../PortraitSaveController.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveController.java (.../PortraitSaveController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -127,39 +127,39 @@ // upload to the content repository originalFileNode = centralToolContentHandler.uploadFile(is, fileNameWithoutExt + "_original.jpg", - "image/jpeg", true); + "image/jpeg"); is.close(); - log.debug("saved file with uuid: " + originalFileNode.getUuid() + " and portrait uuid " - + originalFileNode.getPortraitUuid() + " and version: " + originalFileNode.getVersion()); + log.debug("saved file with uuid: " + originalFileNode.getNodeId() + " and portrait uuid " + + originalFileNode.getUuid() + " and version: " + originalFileNode.getVersion()); //resize to the large size is = ResizePictureUtil.resize(file.getInputStream(), CommonConstants.PORTRAIT_LARGEST_DIMENSION_LARGE); - NodeKey node = centralToolContentHandler.updateFile(originalFileNode.getUuid(), is, + NodeKey node = centralToolContentHandler.updateFile(originalFileNode.getNodeId(), is, fileNameWithoutExt + "_large.jpg", "image/jpeg"); is.close(); - log.debug("saved file with uuid: " + node.getUuid() + " and version: " + node.getVersion()); + log.debug("saved file with uuid: " + node.getNodeId() + " and version: " + node.getVersion()); //resize to the medium size is = ResizePictureUtil.resize(file.getInputStream(), CommonConstants.PORTRAIT_LARGEST_DIMENSION_MEDIUM); - node = centralToolContentHandler.updateFile(node.getUuid(), is, fileNameWithoutExt + "_medium.jpg", + node = centralToolContentHandler.updateFile(node.getNodeId(), is, fileNameWithoutExt + "_medium.jpg", "image/jpeg"); is.close(); - log.debug("saved file with uuid: " + node.getUuid() + " and version: " + node.getVersion()); + log.debug("saved file with uuid: " + node.getNodeId() + " and version: " + node.getVersion()); //resize to the small size is = ResizePictureUtil.resize(file.getInputStream(), CommonConstants.PORTRAIT_LARGEST_DIMENSION_SMALL); - node = centralToolContentHandler.updateFile(node.getUuid(), is, fileNameWithoutExt + "_small.jpg", + node = centralToolContentHandler.updateFile(node.getNodeId(), is, fileNameWithoutExt + "_small.jpg", "image/jpeg"); is.close(); - log.debug("saved file with uuid: " + node.getUuid() + " and version: " + node.getVersion()); + log.debug("saved file with uuid: " + node.getNodeId() + " and version: " + node.getVersion()); } // delete old portrait file (we only want to keep the user's current portrait) if (user.getPortraitUuid() != null) { centralToolContentHandler.deleteFile(user.getPortraitUuid()); } - user.setPortraitUuid(UUID.fromString(originalFileNode.getPortraitUuid())); + user.setPortraitUuid(UUID.fromString(originalFileNode.getUuid())); userManagementService.saveUser(user); return "forward:/index.do?redirect=portrait"; Index: lams_common/src/java/org/lamsfoundation/lams/contentrepository/NodeKey.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_common/src/java/org/lamsfoundation/lams/contentrepository/NodeKey.java (.../NodeKey.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_common/src/java/org/lamsfoundation/lams/contentrepository/NodeKey.java (.../NodeKey.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -28,31 +28,31 @@ import org.apache.commons.lang.builder.ToStringBuilder; /** - * Represents the two part key - UUID and version. + * Represents the two part key - node ID and version. * Version may be null; * * @author Fiona Malikoff */ public class NodeKey { - private Long uuid = null; + private Long nodeId = null; private Long version = null; - private String portraitUuid; + private String uuid; /** * */ - public NodeKey(Long uuid, Long version, String portraitUuid) { - this.uuid = uuid; + public NodeKey(Long nodeId, Long version, String uuid) { + this.nodeId = nodeId; this.version = version; - this.portraitUuid = portraitUuid; + this.uuid = uuid; } /** * @return Returns the uuid. */ - public Long getUuid() { - return uuid; + public Long getNodeId() { + return nodeId; } /** @@ -62,14 +62,14 @@ return version; } - public String getPortraitUuid() { - return portraitUuid; + public String getUuid() { + return uuid; } @Override public String toString() { - return new ToStringBuilder(this).append("uuid", uuid).append("version", version) - .append("portraitUuid", portraitUuid).toString(); + return new ToStringBuilder(this).append("nodeId", nodeId).append("version", version).append("uuid", uuid) + .toString(); } @Override @@ -81,11 +81,12 @@ return false; } NodeKey castOther = (NodeKey) other; - return new EqualsBuilder().append(uuid, castOther.getUuid()).append(version, castOther.getVersion()).isEquals(); + return new EqualsBuilder().append(nodeId, castOther.getNodeId()).append(version, castOther.getVersion()) + .isEquals(); } @Override public int hashCode() { - return new HashCodeBuilder().append(uuid).append(version).toHashCode(); + return new HashCodeBuilder().append(nodeId).append(version).toHashCode(); } } Index: lams_common/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_common/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java (.../IToolContentHandler.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_common/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java (.../IToolContentHandler.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -65,14 +65,11 @@ public NodeKey uploadFile(InputStream stream, String fileName, String mimeType) throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException; - public NodeKey uploadFile(InputStream stream, String fileName, String mimeType, boolean generatePortraitUuid) - throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException; - /** * Update an existing file in the repository. This will create a new version of this file (its version number will * be equal to the current one incremented by 1). * - * @param uuid + * @param nodeId * unique id of the updated file. Mandatory * * @param stream @@ -89,7 +86,7 @@ * @throws RepositoryCheckedException * Some other error occured. */ - public NodeKey updateFile(Long uuid, InputStream stream, String fileName, String mimeType) + public NodeKey updateFile(Long nodeId, InputStream stream, String fileName, String mimeType) throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException; /** @@ -115,24 +112,24 @@ /** * Delete a file node. If the node does not exist, then nothing happens (ie ItemNotFoundException is NOT thrown). * - * @param uuid + * @param nodeId * id of the file node. Mandatory * @throws InvalidParameterException * One of the mandatory parameters is missing. * @throws RepositoryCheckedException * Some other error occured. */ - public void deleteFile(Long uuid) throws InvalidParameterException, RepositoryCheckedException; + public void deleteFile(Long nodeId) throws InvalidParameterException, RepositoryCheckedException; /** - * Delete a file node using portrait UUID + * Delete a file node using UUID */ - public void deleteFile(UUID portraitUuid) throws InvalidParameterException, RepositoryCheckedException; + public void deleteFile(UUID uuid) throws InvalidParameterException, RepositoryCheckedException; /** * Get the file, as an inputstream. * - * @param uuid + * @param nodeId * id of the file node. Mandatory * @throws FileException * An error occured writing the input stream to disk. @@ -141,7 +138,7 @@ * @throws RepositoryCheckedException * Some other error occured. */ - public InputStream getFileInputStream(Long uuid) + public InputStream getFileInputStream(Long nodeId) throws ItemNotFoundException, FileException, RepositoryCheckedException; /** @@ -151,13 +148,15 @@ * If the toFileName is null, file name use original file name instead * and file save path will be system temporary directory. * - * @param uuid + * @param nodeId * @param toFileName * file name to save. Using the original file name instead if null value given. * @throws ItemNotFoundException * @throws RepositoryCheckedException * @throws IOException */ - public void saveFile(Long uuid, String toFileName) + public void saveFile(Long nodeId, String toFileName) throws ItemNotFoundException, RepositoryCheckedException, IOException; + + String getFileUuid(Long nodeId); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20230127.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20230127.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20230127.sql (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -0,0 +1,23 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +-- LDEV-5357 Use complex UUIDs for all files +ALTER TABLE lams_cr_node RENAME COLUMN portrait_uuid TO uuid, + RENAME INDEX IDX_portrait_uuid TO IDX_uuid; + +UPDATE lams_cr_node SET uuid = UUID_TO_BIN(LOWER(CONCAT( + HEX(RANDOM_BYTES(4)), '-', + HEX(RANDOM_BYTES(2)), '-4', + SUBSTR(HEX(RANDOM_BYTES(2)), 2, 3), '-', + CONCAT(HEX(FLOOR(ASCII(RANDOM_BYTES(1)) / 64)+8),SUBSTR(HEX(RANDOM_BYTES(2)), 2, 3)), '-', + HEX(RANDOM_BYTES(6)) +))) WHERE uuid IS NULL; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -rab99a28705cde6aabd0d6ab0973eb9bc18d66cb6 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision ab99a28705cde6aabd0d6ab0973eb9bc18d66cb6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -1068,7 +1068,7 @@ } // refresh file node Uuid and Version value to latest. - BeanUtils.setProperty(fileNode.instance, fileNode.name.uuidFieldName, key.getUuid()); + BeanUtils.setProperty(fileNode.instance, fileNode.name.uuidFieldName, key.getNodeId()); // version id is optional if (fileNode.name.versionFieldName != null) { BeanUtils.setProperty(fileNode.instance, fileNode.name.versionFieldName, key.getVersion()); Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rf6a638aaf02124adf0a3a519440b3b31496937ae -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision f6a638aaf02124adf0a3a519440b3b31496937ae) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -1211,54 +1211,54 @@ FileInputStream is = new FileInputStream(portraitFile); String fileNameWithoutExt = login; NodeKey originalFileNode = centralToolContentHandler.uploadFile(is, - fileNameWithoutExt + "_original.jpg", "image/jpeg", true); + fileNameWithoutExt + "_original.jpg", "image/jpeg"); is.close(); - log.debug("Saved original portrait with uuid: " + originalFileNode.getUuid() + " and version: " + log.debug("Saved original portrait with uuid: " + originalFileNode.getNodeId() + " and version: " + originalFileNode.getVersion()); //resize to the large size is = new FileInputStream(portraitFile); InputStream modifiedPortraitInputStream = ResizePictureUtil.resize(is, CommonConstants.PORTRAIT_LARGEST_DIMENSION_LARGE); - NodeKey node = centralToolContentHandler.updateFile(originalFileNode.getUuid(), + NodeKey node = centralToolContentHandler.updateFile(originalFileNode.getNodeId(), modifiedPortraitInputStream, fileNameWithoutExt + "_large.jpg", "image/jpeg"); modifiedPortraitInputStream.close(); is.close(); if (log.isDebugEnabled()) { log.debug( - "Saved large portrait with uuid: " + node.getUuid() + " and version: " + node.getVersion()); + "Saved large portrait with uuid: " + node.getNodeId() + " and version: " + node.getVersion()); } //resize to the medium size is = new FileInputStream(portraitFile); modifiedPortraitInputStream = ResizePictureUtil.resize(is, CommonConstants.PORTRAIT_LARGEST_DIMENSION_MEDIUM); - node = centralToolContentHandler.updateFile(node.getUuid(), modifiedPortraitInputStream, + node = centralToolContentHandler.updateFile(node.getNodeId(), modifiedPortraitInputStream, fileNameWithoutExt + "_medium.jpg", "image/jpeg"); modifiedPortraitInputStream.close(); is.close(); if (log.isDebugEnabled()) { - log.debug("Saved medium portrait with uuid: " + node.getUuid() + " and version: " + log.debug("Saved medium portrait with uuid: " + node.getNodeId() + " and version: " + node.getVersion()); } //resize to the small size is = new FileInputStream(portraitFile); modifiedPortraitInputStream = ResizePictureUtil.resize(is, CommonConstants.PORTRAIT_LARGEST_DIMENSION_SMALL); - node = centralToolContentHandler.updateFile(node.getUuid(), modifiedPortraitInputStream, + node = centralToolContentHandler.updateFile(node.getNodeId(), modifiedPortraitInputStream, fileNameWithoutExt + "_small.jpg", "image/jpeg"); modifiedPortraitInputStream.close(); is.close(); if (log.isDebugEnabled()) { log.debug( - "Saved small portrait with uuid: " + node.getUuid() + " and version: " + node.getVersion()); + "Saved small portrait with uuid: " + node.getNodeId() + " and version: " + node.getVersion()); } // delete old portrait file (we only want to keep the user's current portrait) if (user.getPortraitUuid() != null) { centralToolContentHandler.deleteFile(user.getPortraitUuid()); } - user.setPortraitUuid(UUID.fromString(originalFileNode.getPortraitUuid())); + user.setPortraitUuid(UUID.fromString(originalFileNode.getUuid())); saveUser(user); log.info("Uploaded portrait for user " + userId + " with login \"" + login + "\""); Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNode.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNode.java (.../CrNode.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNode.java (.../CrNode.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -57,8 +57,8 @@ @GeneratedValue(strategy = GenerationType.IDENTITY) private Long nodeId; - @Column(name = "portrait_uuid") - private UUID portraitUuid; + @Column(name = "uuid") + private UUID uuid; @Column private String path; @@ -98,33 +98,14 @@ this.createdDateTime = createdDateTime; // start the next version id at 1, which is used straight away by incrementNextVersionId() - this.nextVersionId = new Long(1); + this.nextVersionId = 1L; this.crWorkspace = workspace; this.parentNodeVersion = parentNodeVersion; this.addCrNodeVersion( new CrNodeVersion(this, createdDateTime, incrementNextVersionId(), versionDescription, userId)); } - /** full constructor */ -/* - * public CrNode(String path, String type, Date createdDateTime, Long nextVersionId, - * org.lamsfoundation.lams.contentrepository.CrWorkspace crWorkspace, - * org.lamsfoundation.lams.contentrepository.CrNodeVersion parentNodeVersion, Set crNodeVersions) { - * } - */ - - /** minimal constructor */ -/* - * public CrNode(String type, Long nextVersionId, org.lamsfoundation.lams.contentrepository.CrWorkspace crWorkspace, - * org.lamsfoundation.lams.contentrepository.CrNodeVersion parentNodeVersion, Set crNodeVersions) { - * this.type = type; - * this.nextVersionId = nextVersionId; - * this.crWorkspace = crWorkspace; - * this.parentNodeVersion = parentNodeVersion; - * this.crNodeVersions = crNodeVersions; - * } - */ public Long getNodeId() { return this.nodeId; } @@ -133,12 +114,12 @@ this.nodeId = nodeId; } - public UUID getPortraitUuid() { - return portraitUuid; + public UUID getUuid() { + return uuid; } - public void setPortraitUuid(UUID portraitUuid) { - this.portraitUuid = portraitUuid; + public void setUuid(UUID uuid) { + this.uuid = uuid; } public String getPath() { Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java =================================================================== diff -u -rf007d7e87e33de37ad35d279b1da1d59c9f42055 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java (.../Download.java) (revision f007d7e87e33de37ad35d279b1da1d59c9f42055) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java (.../Download.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -50,7 +50,7 @@ /** * This is a specialised servlet that supports the downloading of single files and the rendering of packages. *

- * It has a rather odd format - you can call it initially with the file/package uuid (and optional version and + * It has a rather odd format - you can call it initially with the file/package ID (and optional version and * preferDownload parameters) using
* download?uuid=<uuid>&version=<version>&preferDownload=[true|false]. *

@@ -158,8 +158,14 @@ version = Download.getLong(request.getParameter(Download.VERSION_NAME)); // check if it is plain numeric UUID or complex portrait UUID - IVersionedNode node = uuid.contains("-") ? getRepositoryService().getFileItem(ticket, uuid, version) - : getRepositoryService().getFileItem(ticket, Long.valueOf(uuid), version); + boolean isSimpleUid = !uuid.contains("-"); + if (isSimpleUid) { + response.sendError(HttpServletResponse.SC_FORBIDDEN, + "Downloading files using simple UIDs has been discontinued for security reasons"); + return; + } + IVersionedNode node = getRepositoryService().getFileItem(ticket, uuid, version); + // update versionId in case it was null and we got the latest version... version = node.getVersion(); @@ -212,15 +218,12 @@ throw new RepositoryCheckedException("Filename is missing. " + Download.expectedFormat); } - // check if it is plain numeric UUID or complex portrait UUID - IVersionedNode node = uuid.contains("-") ? getRepositoryService().getFileItem(ticket, uuid, version) - : getRepositoryService().getFileItem(ticket, Long.valueOf(uuid), version, relPathString); + IVersionedNode node = getRepositoryService().getFileItem(ticket, uuid, version); if (!node.isNodeType(NodeType.FILENODE)) { throw new RepositoryCheckedException( "Unexpected type of node " + node.getNodeType() + " Expected File node. Data is " + node); } handleFileNode(response, request, node, saveFile); - } } Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentFullHandler.java =================================================================== diff -u -r9d017688cf84d7a7c26203a3b0e13a5301b9c756 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentFullHandler.java (.../IToolContentFullHandler.java) (revision 9d017688cf84d7a7c26203a3b0e13a5301b9c756) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentFullHandler.java (.../IToolContentFullHandler.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -56,14 +56,14 @@ /** * Copy an entry in the content repository. * - * @param uuid + * @param nodeId * id of the file node. Mandatory * @throws ItemNotFoundException * Node to copy cannot be found * @throws RepositoryCheckedException * Some other error occured. */ - public NodeKey copyFile(Long uuid) throws ItemNotFoundException, RepositoryCheckedException; + public NodeKey copyFile(Long nodeId) throws ItemNotFoundException, RepositoryCheckedException; public IRepositoryService getRepositoryService(); } \ No newline at end of file Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolContentHandler.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolContentHandler.java (.../ToolContentHandler.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolContentHandler.java (.../ToolContentHandler.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -173,18 +173,16 @@ } @Override - public NodeKey uploadFile(InputStream stream, String fileName, String mimeType, boolean generatePortraitUuid) + public NodeKey uploadFile(InputStream stream, String fileName, String mimeType) throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException { NodeKey nodeKey = null; try { try { - nodeKey = repositoryService.addFileItem(getTicket(false), stream, fileName, mimeType, null, - generatePortraitUuid); + nodeKey = repositoryService.addFileItem(getTicket(false), stream, fileName, mimeType, null); } catch (AccessDeniedException e) { log.warn("Unable to access repository to add file " + fileName + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - nodeKey = repositoryService.addFileItem(getTicket(true), stream, fileName, mimeType, null, - generatePortraitUuid); + nodeKey = repositoryService.addFileItem(getTicket(true), stream, fileName, mimeType, null); } } catch (RepositoryCheckedException e2) { @@ -197,22 +195,16 @@ } @Override - public NodeKey uploadFile(InputStream stream, String fileName, String mimeType) + public NodeKey updateFile(Long nodeId, InputStream stream, String fileName, String mimeType) throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException { - return uploadFile(stream, fileName, mimeType, false); - } - - @Override - public NodeKey updateFile(Long uuid, InputStream stream, String fileName, String mimeType) - throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException { NodeKey nodeKey = null; try { try { - nodeKey = repositoryService.updateFileItem(getTicket(false), uuid, fileName, stream, mimeType, null); + nodeKey = repositoryService.updateFileItem(getTicket(false), nodeId, fileName, stream, mimeType, null); } catch (AccessDeniedException e) { log.warn("Unable to access repository to add file " + fileName + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - nodeKey = repositoryService.updateFileItem(getTicket(true), uuid, fileName, stream, mimeType, null); + nodeKey = repositoryService.updateFileItem(getTicket(true), nodeId, fileName, stream, mimeType, null); } } catch (RepositoryCheckedException e2) { @@ -279,22 +271,22 @@ } @Override - public void saveFile(Long uuid, String toFileName) + public void saveFile(Long nodeId, String toFileName) throws ItemNotFoundException, RepositoryCheckedException, IOException { try { try { - repositoryService.saveFile(getTicket(false), uuid, null, toFileName); + repositoryService.saveFile(getTicket(false), nodeId, null, toFileName); } catch (AccessDeniedException e) { - log.warn("Unable to access repository to add copy node " + uuid + "AccessDeniedException: " + log.warn("Unable to access repository to add copy node " + nodeId + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - repositoryService.saveFile(getTicket(false), uuid, null, toFileName); + repositoryService.saveFile(getTicket(false), nodeId, null, toFileName); } } catch (ItemNotFoundException e) { - log.warn("Unable to to save node " + uuid + " as the node cannot be found. Repository Exception: " + log.warn("Unable to to save node " + nodeId + " as the node cannot be found. Repository Exception: " + e.getMessage() + " Retry not possible."); throw e; } catch (RepositoryCheckedException e) { - log.warn("Unable to to save node " + uuid + "Repository Exception: " + e.getMessage() + log.warn("Unable to to save node " + nodeId + "Repository Exception: " + e.getMessage() + " Retry not possible."); throw e; } @@ -304,125 +296,121 @@ * TODO To be removed from the system and replaced with the call with the user id. */ @Override - public NodeKey copyFile(Long uuid) throws ItemNotFoundException, RepositoryCheckedException { + public NodeKey copyFile(Long nodeId) throws ItemNotFoundException, RepositoryCheckedException { log.error( "copyFile(Long uuid) to be removed - it sets the owner of files in the content repository to 1. Some tool needs to be updated."); - return copyFile(uuid, new Integer(1)); + return copyFile(nodeId, 1); } /** * Copy an entry in the content repository. * - * @param uuid + * @param nodeId * id of the file node. Mandatory * @throws ItemNotFoundException * Node to copy cannot be found * @throws RepositoryCheckedException * Some other error occured. */ - private NodeKey copyFile(Long uuid, Integer userId) throws ItemNotFoundException, RepositoryCheckedException { + private NodeKey copyFile(Long nodeId, Integer userId) throws ItemNotFoundException, RepositoryCheckedException { NodeKey nodeKey = null; try { try { - nodeKey = repositoryService.copyNodeVersion(getTicket(false), uuid, null); + nodeKey = repositoryService.copyNodeVersion(getTicket(false), nodeId, null); } catch (AccessDeniedException e) { - log.warn("Unable to access repository to add copy node " + uuid + "AccessDeniedException: " + log.warn("Unable to access repository to add copy node " + nodeId + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - nodeKey = repositoryService.copyNodeVersion(getTicket(true), uuid, null); + nodeKey = repositoryService.copyNodeVersion(getTicket(true), nodeId, null); } } catch (ItemNotFoundException e) { - log.warn("Unable to to copy node " + uuid + " as the node cannot be found. Repository Exception: " + log.warn("Unable to to copy node " + nodeId + " as the node cannot be found. Repository Exception: " + e.getMessage() + " Retry not possible."); throw e; } catch (RepositoryCheckedException e) { - log.warn("Unable to to copy node " + uuid + "Repository Exception: " + e.getMessage() + log.warn("Unable to to copy node " + nodeId + "Repository Exception: " + e.getMessage() + " Retry not possible."); throw e; } return nodeKey; } @Override - public void deleteFile(Long uuid) throws InvalidParameterException, RepositoryCheckedException { + public void deleteFile(Long nodeId) throws InvalidParameterException, RepositoryCheckedException { try { try { - repositoryService.deleteNode(getTicket(false), uuid); + repositoryService.deleteNode(getTicket(false), nodeId); } catch (AccessDeniedException e) { - log.warn("Unable to access repository to delete file id" + uuid + "AccessDeniedException: " + log.warn("Unable to access repository to delete file id" + nodeId + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - repositoryService.deleteNode(getTicket(true), uuid); + repositoryService.deleteNode(getTicket(true), nodeId); } } catch (ItemNotFoundException e1) { // didn't exist so don't need to delete. Ignore problem. } catch (RepositoryCheckedException e2) { - log.error("Unable delete file id" + uuid + "Repository Exception: " + e2.getMessage() + log.error("Unable delete file id" + nodeId + "Repository Exception: " + e2.getMessage() + " Retry not possible."); throw e2; } } @Override - public void deleteFile(UUID portraitUuid) throws InvalidParameterException, RepositoryCheckedException { + public void deleteFile(UUID uuid) throws InvalidParameterException, RepositoryCheckedException { try { try { - repositoryService.deleteNode(getTicket(false), portraitUuid); + repositoryService.deleteNode(getTicket(false), uuid); } catch (AccessDeniedException e) { - log.warn("Unable to access repository to delete file id" + portraitUuid + "AccessDeniedException: " + log.warn("Unable to access repository to delete file id" + uuid + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - repositoryService.deleteNode(getTicket(true), portraitUuid); + repositoryService.deleteNode(getTicket(true), uuid); } } catch (ItemNotFoundException e1) { // didn't exist so don't need to delete. Ignore problem. } catch (RepositoryCheckedException e2) { - log.error("Unable delete file id" + portraitUuid + "Repository Exception: " + e2.getMessage() + log.error("Unable delete file id" + uuid + "Repository Exception: " + e2.getMessage() + " Retry not possible."); throw e2; } } @Override - public InputStream getFileInputStream(Long uuid) + public InputStream getFileInputStream(Long nodeId) throws ItemNotFoundException, FileException, RepositoryCheckedException { try { try { - return repositoryService.getFileItem(getTicket(false), uuid, null).getFile(); + return repositoryService.getFileItem(getTicket(false), nodeId, null).getFile(); } catch (AccessDeniedException e) { - log.warn("Unable to access repository to get file id" + uuid + "AccessDeniedException: " + log.warn("Unable to access repository to get file id" + nodeId + "AccessDeniedException: " + e.getMessage() + " Retrying login."); - return repositoryService.getFileItem(getTicket(true), uuid, null).getFile(); + return repositoryService.getFileItem(getTicket(true), nodeId, null).getFile(); } } catch (RepositoryCheckedException e2) { - log.warn("Unable to to get file id" + uuid + "Repository Exception: " + e2.getMessage() + log.warn("Unable to to get file id" + nodeId + "Repository Exception: " + e2.getMessage() + " Retry not possible."); throw e2; } } -/* - * protected File getFile(String fileName, InputStream is) throws FileNotFoundException, Exception { - * InputStream in = new BufferedInputStream(is, 500); - * File file = new File(fileName); - * OutputStream out = new BufferedOutputStream(new FileOutputStream(file), 500); - * int bytes; - * while ((bytes = in.available()) > 0) { - * byte[] byteArray = new byte[bytes]; - * in.read(byteArray); - * out.write(byteArray); - * } - * in.close(); - * out.close(); - * out.flush(); - * return file; - * } - * - * protected byte[] getBytes(File file) throws FileNotFoundException, Exception { - * byte[] byteArray = new byte[(int) file.length()]; - * FileInputStream stream = new FileInputStream(file); - * stream.read(byteArray); - * stream.close(); - * return byteArray; - * } - */ + @Override + public String getFileUuid(Long nodeId) { + if (nodeId == null) { + return null; + } + NodeKey nodeKey = null; + try { + try { + nodeKey = repositoryService.getFileItem(getTicket(false), nodeId, null).getNodeKey(); + } catch (AccessDeniedException e) { + log.warn("Unable to access repository to get file id" + nodeId + "AccessDeniedException: " + + e.getMessage() + " Retrying login."); + nodeKey = repositoryService.getFileItem(getTicket(true), nodeId, null).getNodeKey(); + } + return nodeKey.getUuid(); + } catch (RepositoryCheckedException e2) { + log.warn("Unable to to get file id" + nodeId + "Repository Exception: " + e2.getMessage() + + " Retry not possible."); + return null; + } + } /* *** Required for Spring bean creation **************************/ Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/INodeFactory.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/INodeFactory.java (.../INodeFactory.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/INodeFactory.java (.../INodeFactory.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -54,7 +54,7 @@ */ public abstract SimpleVersionedNode createFileNode(CrWorkspace workspace, SimpleVersionedNode parentNode, String relPath, InputStream istream, String filename, String mimeType, String versionDescription, - Integer userId, boolean generatePortraitUuid) + Integer userId) throws org.lamsfoundation.lams.contentrepository.exception.InvalidParameterException; /** Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java (.../IRepositoryService.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java (.../IRepositoryService.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -171,7 +171,7 @@ * if any internal errors have occured */ public abstract NodeKey addFileItem(ITicket ticket, InputStream istream, String filename, String mimeType, - String versionDescription, boolean generatePortraitUuid) + String versionDescription) throws FileException, AccessDeniedException, InvalidParameterException; /** @@ -322,16 +322,16 @@ * * @param ticket * ticket issued on login. Identifies tool and workspace - mandatory - * @param uuid + * @param nodeId * id of the file/package - mandatory * @param version * desired version - if null gets latest version * @return node. */ - public abstract IVersionedNode getFileItem(ITicket ticket, Long uuid, Long version) + public abstract IVersionedNode getFileItem(ITicket ticket, Long nodeId, Long version) throws AccessDeniedException, ItemNotFoundException, FileException; - IVersionedNode getFileItem(ITicket ticket, String portraitUuid, Long version) + IVersionedNode getFileItem(ITicket ticket, String uuid, Long version) throws AccessDeniedException, ItemNotFoundException, FileException; /** @@ -347,7 +347,7 @@ * * @param ticket * ticket issued on login. Identifies tool and workspace - mandatory - * @param uuid + * @param nodeId * id of the package - mandatory * @param versionId * desired version - if null gets latest version. This is the version @@ -365,7 +365,7 @@ * if any internal errors have occured * @return node. */ - public abstract IVersionedNode getFileItem(ITicket ticket, Long uuid, Long versionId, String relPath) + public abstract IVersionedNode getFileItem(ITicket ticket, Long nodeId, Long versionId, String relPath) throws AccessDeniedException, ItemNotFoundException, FileException; /** Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/NodeFactory.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/NodeFactory.java (.../NodeFactory.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/NodeFactory.java (.../NodeFactory.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -76,11 +76,11 @@ */ @Override public SimpleVersionedNode createFileNode(CrWorkspace workspace, SimpleVersionedNode parentNode, String relPath, - InputStream istream, String filename, String mimeType, String versionDescription, Integer userId, - boolean generatePortraitUuid) throws InvalidParameterException { + InputStream istream, String filename, String mimeType, String versionDescription, Integer userId) + throws InvalidParameterException { SimpleVersionedNode initialNodeVersion = createBasicNode(NodeType.FILENODE, workspace, parentNode, relPath, - versionDescription, userId, generatePortraitUuid); + versionDescription, userId); initialNodeVersion.setFile(istream, filename, mimeType); return initialNodeVersion; @@ -97,7 +97,7 @@ Integer userId) throws org.lamsfoundation.lams.contentrepository.exception.InvalidParameterException { SimpleVersionedNode initialNodeVersion = createBasicNode(NodeType.PACKAGENODE, workspace, null, null, - versionDescription, userId, false); + versionDescription, userId); initialNodeVersion.setProperty(PropertyName.INITIALPATH, initialPath); return initialNodeVersion; @@ -116,24 +116,22 @@ throws org.lamsfoundation.lams.contentrepository.exception.InvalidParameterException { SimpleVersionedNode initialNodeVersion = createBasicNode(NodeType.DATANODE, workspace, parentNode, null, - versionDescription, userId, false); + versionDescription, userId); return initialNodeVersion; } /** Create the core part of a node */ private SimpleVersionedNode createBasicNode(String nodeType, CrWorkspace workspace, SimpleVersionedNode parentNode, - String relPath, String versionDescription, Integer userId, boolean generatePortraitUuid) { + String relPath, String versionDescription, Integer userId) { SimpleVersionedNode initialNodeVersion = beanFactory.getBean("node", SimpleVersionedNode.class); Date createdDate = new Date(System.currentTimeMillis()); CrNodeVersion parentNodeVersion = parentNode != null ? parentNode.getNodeVersion() : null; CrNode node = new CrNode(relPath, nodeType, createdDate, userId, workspace, parentNodeVersion, versionDescription); - if (generatePortraitUuid) { - node.setPortraitUuid(UUID.randomUUID()); - } + node.setUuid(UUID.randomUUID()); CrNodeVersion nodeVersion = node.getNodeVersion(null); initialNodeVersion.setNode(node); @@ -209,7 +207,7 @@ } CrNode node = null; - List result = nodeDAO.findByProperty(CrNode.class, "portraitUuid", portraitUuid); + List result = nodeDAO.findByProperty(CrNode.class, "uuid", portraitUuid); node = result.isEmpty() ? null : result.get(0); if (node == null) { Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java (.../SimpleRepository.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java (.../SimpleRepository.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -146,7 +146,7 @@ */ private CrWorkspace getWorkspace(Long workspaceId) throws WorkspaceNotFoundException { // call workspace dao to get the workspace - CrWorkspace workspace = (CrWorkspace) workspaceDAO.find(CrWorkspace.class, workspaceId); + CrWorkspace workspace = workspaceDAO.find(CrWorkspace.class, workspaceId); if (workspace == null) { throw new WorkspaceNotFoundException("Workspace id=" + workspaceId + " does not exist."); } @@ -432,14 +432,13 @@ */ @Override public NodeKey addFileItem(ITicket ticket, InputStream istream, String filename, String mimeType, - String versionDescription, boolean generatePortraitUUid) - throws FileException, AccessDeniedException, InvalidParameterException { + String versionDescription) throws FileException, AccessDeniedException, InvalidParameterException { try { CrWorkspace workspace = getWorkspace(ticket.getWorkspaceId()); Integer userId = getCurrentUserId(); SimpleVersionedNode initialNodeVersion = nodeFactory.createFileNode(workspace, null, null, istream, - filename, mimeType, versionDescription, userId, generatePortraitUUid); + filename, mimeType, versionDescription, userId); initialNodeVersion.save(); return initialNodeVersion.getNodeKey(); } catch (ValidationException e) { @@ -492,16 +491,16 @@ * ITicket, java.lang.Long, java.lang.Long) */ @Override - public IVersionedNode getFileItem(ITicket ticket, Long uuid, Long version) + public IVersionedNode getFileItem(ITicket ticket, Long nodeId, Long version) throws AccessDeniedException, ItemNotFoundException, FileException { - return nodeFactory.getNode(ticket.getWorkspaceId(), uuid, version); + return nodeFactory.getNode(ticket.getWorkspaceId(), nodeId, version); } @Override - public IVersionedNode getFileItem(ITicket ticket, String portraitUuid, Long version) + public IVersionedNode getFileItem(ITicket ticket, String uuid, Long version) throws AccessDeniedException, ItemNotFoundException, FileException { - return nodeFactory.getNode(ticket.getWorkspaceId(), UUID.fromString(portraitUuid), version); + return nodeFactory.getNode(ticket.getWorkspaceId(), UUID.fromString(uuid), version); } /* @@ -511,13 +510,13 @@ * ITicket, java.lang.Long, java.lang.Long, java.lang.String) */ @Override - public IVersionedNode getFileItem(ITicket ticket, Long uuid, Long version, String relPath) + public IVersionedNode getFileItem(ITicket ticket, Long nodeId, Long version, String relPath) throws AccessDeniedException, ItemNotFoundException, FileException { long start = System.currentTimeMillis(); - String key = "getFileItem " + uuid; + String key = "getFileItem " + nodeId; - IVersionedNode latestNodeVersion = nodeFactory.getNode(ticket.getWorkspaceId(), uuid, version); + IVersionedNode latestNodeVersion = nodeFactory.getNode(ticket.getWorkspaceId(), nodeId, version); log.error(key + " latestNodeVersion " + (System.currentTimeMillis() - start)); if (relPath == null) { @@ -745,7 +744,7 @@ } if (node.isNodeType(NodeType.FILENODE)) { - saveSigleFile(toFileName, node); + saveSingleFile(toFileName, node); } else if (node.isNodeType(NodeType.PACKAGENODE)) { Set children = node.getChildNodes(); String tempRoot = FileUtil.createTempDirectory("export_package"); @@ -756,7 +755,7 @@ //if folder does not exist, create first. FileUtil.createDirectory(FileUtil.getFileDirectory(fullname)); - saveSigleFile(fullname, child); + saveSingleFile(fullname, child); } if (toFileName == null) { IValue prop = node.getProperty(PropertyName.FILENAME); @@ -788,7 +787,7 @@ * @throws FileNotFoundException * @throws IOException */ - private void saveSigleFile(String toFileName, IVersionedNode node) + private void saveSingleFile(String toFileName, IVersionedNode node) throws FileException, ValueFormatException, FileUtilException, FileNotFoundException, IOException { InputStream is = node.getFile(); if (toFileName == null) { Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java =================================================================== diff -u -r365a2c22199a5fe2b1e55e18cbf4b6d2596f202b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 365a2c22199a5fe2b1e55e18cbf4b6d2596f202b) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -246,7 +246,7 @@ @Override public String getPortraitUuid() { nodeObjectInitilised("Unable to get portrait UUID"); - return node.getPortraitUuid() == null ? null : node.getPortraitUuid().toString(); + return node.getUuid() == null ? null : node.getUuid().toString(); } /** @@ -851,13 +851,13 @@ while (iter.hasNext()) { NodeKey nk = (NodeKey) iter.next(); try { - int delStatus = fileDAO.delete(nk.getUuid(), nk.getVersion()); + int delStatus = fileDAO.delete(nk.getNodeId(), nk.getVersion()); if (delStatus == -1) { - failedList.add(fileDAO.getFilePath(nk.getUuid(), nk.getVersion())); + failedList.add(fileDAO.getFilePath(nk.getNodeId(), nk.getVersion())); } } catch (FileException e) { log.error("FileException occured while deleting files for " + nodeDescription, e); - failedList.add("Filename unknown uuid " + nk.getUuid() + " version " + nk.getVersion()); + failedList.add("Filename unknown uuid " + nk.getNodeId() + " version " + nk.getVersion()); } } @@ -1007,7 +1007,7 @@ // no need to the new node as a child node, as createFileNode will do it. FileInputStream istream = new FileInputStream(file); nodeFactory.createFileNode(workspace, this, relPath, istream, filename, null, versionDescription, - userId, false); + userId); } } Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/model/DacoAnswer.java =================================================================== diff -u -r1ee503e3d0e0228ea8a45025fddf15d9623c0377 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/model/DacoAnswer.java (.../DacoAnswer.java) (revision 1ee503e3d0e0228ea8a45025fddf15d9623c0377) +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/model/DacoAnswer.java (.../DacoAnswer.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -33,6 +33,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; +import javax.persistence.Transient; import org.apache.log4j.Logger; @@ -82,6 +83,9 @@ @Column(name = "create_date") private Date createDate; + @Transient + private String fileDisplayUuid; + @Override public Object clone() { DacoAnswer cloned = null; @@ -174,4 +178,12 @@ public void setCreateDate(Date createDate) { this.createDate = createDate; } + + public String getFileDisplayUuid() { + return fileDisplayUuid; + } + + public void setFileDisplayUuid(String fileDisplayUuid) { + this.fileDisplayUuid = fileDisplayUuid; + } } \ No newline at end of file Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java =================================================================== diff -u -r815b617ce48bcd3dc0a36aa32630ca55d4c21715 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java (.../DacoServiceImpl.java) (revision 815b617ce48bcd3dc0a36aa32630ca55d4c21715) +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java (.../DacoServiceImpl.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -235,6 +235,7 @@ List record = new LinkedList<>(); for (DacoAnswer answer : answers) { + answer.setFileDisplayUuid(dacoToolContentHandler.getFileUuid(answer.getFileUuid())); if (recordId != answer.getRecordId()) { recordId = answer.getRecordId(); /* @@ -325,8 +326,9 @@ if ((answer.getQuestion().getType() == DacoConstants.QUESTION_TYPE_FILE) || (answer.getQuestion().getType() == DacoConstants.QUESTION_TYPE_IMAGE)) { NodeKey nodeKey = processFile(file); - answer.setFileUuid(nodeKey.getUuid()); + answer.setFileUuid(nodeKey.getNodeId()); answer.setFileVersionId(nodeKey.getVersion()); + answer.setFileDisplayUuid(nodeKey.getUuid()); } // create the package from the directory contents @@ -349,7 +351,7 @@ public Integer getGroupRecordCount(Long sessionId) { List users = dacoUserDao.getBySessionId(sessionId); - Integer groupRecordCount = 0; + int groupRecordCount = 0; for (DacoUser user : users) { groupRecordCount += dacoAnswerDao.getUserRecordCount(user.getUserId(), sessionId); } @@ -567,7 +569,7 @@ public List getConfidenceLevels(Long toolSessionId) { return null; } - + @Override public boolean isUserGroupLeader(Long userId, Long toolSessionId) { return false; Index: lams_tool_daco/web/pages/learning/listRecords.jsp =================================================================== diff -u -rdee1313f3a1d0a71354604278d1bfc6cb9d49a9d -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_daco/web/pages/learning/listRecords.jsp (.../listRecords.jsp) (revision dee1313f3a1d0a71354604278d1bfc6cb9d49a9d) +++ lams_tool_daco/web/pages/learning/listRecords.jsp (.../listRecords.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -198,7 +198,7 @@   - ${answer.fileName} + ${answer.fileName} Index: lams_tool_daco/web/pages/learning/listRecordsHorizontalPart.jsp =================================================================== diff -u -r9dcc3e2d26b504f92d919f53f0d45dd4093a82a2 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_daco/web/pages/learning/listRecordsHorizontalPart.jsp (.../listRecordsHorizontalPart.jsp) (revision 9dcc3e2d26b504f92d919f53f0d45dd4093a82a2) +++ lams_tool_daco/web/pages/learning/listRecordsHorizontalPart.jsp (.../listRecordsHorizontalPart.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -137,7 +137,7 @@ -  ${answer.fileName} +  ${answer.fileName} Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Attachment.java =================================================================== diff -u -r1ee503e3d0e0228ea8a45025fddf15d9623c0377 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Attachment.java (.../Attachment.java) (revision 1ee503e3d0e0228ea8a45025fddf15d9623c0377) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Attachment.java (.../Attachment.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -34,6 +34,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; +import javax.persistence.Transient; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; @@ -74,6 +75,9 @@ @JoinColumn(name = "message_uid") private Message message; + @Transient + private String fileDisplayUuid; + //Default contruction method public Attachment() { @@ -176,6 +180,14 @@ this.message = message; } + public String getFileDisplayUuid() { + return fileDisplayUuid; + } + + public void setFileDisplayUuid(String fileDisplayUuid) { + this.fileDisplayUuid = fileDisplayUuid; + } + @Override public int compareTo(Attachment o) { if (o == null) { @@ -187,4 +199,4 @@ return this.getUid() == null ? -1 : 1; } } -} +} \ No newline at end of file Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r0b7d9c35afb5f77eb0a299808eb0f5443340dcd9 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 0b7d9c35afb5f77eb0a299808eb0f5443340dcd9) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -322,7 +322,11 @@ @Override public Message getMessage(Long messageUid) throws PersistenceException { - return messageDao.getById(messageUid); + Message message = messageDao.getById(messageUid); + for (Attachment attachment : message.getAttachments()) { + attachment.setFileDisplayUuid(forumToolContentHandler.getFileUuid(attachment.getFileUuid())); + } + return message; } @Override @@ -405,9 +409,10 @@ NodeKey nodeKey = processFile(uploadFile); Attachment file = new Attachment(); - file.setFileUuid(nodeKey.getUuid()); + file.setFileUuid(nodeKey.getNodeId()); file.setFileVersionId(nodeKey.getVersion()); file.setFileName(uploadFile.getName()); + file.setFileDisplayUuid(nodeKey.getUuid()); return file; } @@ -564,6 +569,11 @@ if (topic.getToolSession() == null) { map.put(topic.getCreated(), topic); } + + for (Attachment attachment : topic.getAttachments()) { + attachment.setFileDisplayUuid(forumToolContentHandler.getFileUuid(attachment.getFileUuid())); + } + } return MessageDTO.getMessageDTO(new ArrayList<>(map.values())); } @@ -581,7 +591,11 @@ @Override public List getMessagesByUserUid(Long userId, Long sessionId) { List list = messageDao.getByUserAndSession(userId, sessionId); - + for (Message message : list) { + for (Attachment attachment : message.getAttachments()) { + attachment.setFileDisplayUuid(forumToolContentHandler.getFileUuid(attachment.getFileUuid())); + } + } return MessageDTO.getMessageDTO(list); } @@ -713,6 +727,9 @@ } private MessageDTO makeDTOSetRating(MessageSeq msgSeq, Message message) { + for (Attachment attachment : message.getAttachments()) { + attachment.setFileDisplayUuid(forumToolContentHandler.getFileUuid(attachment.getFileUuid())); + } MessageDTO dto = MessageDTO.getMessageDTO(message); dto.setLevel(msgSeq.getMessageLevel()); //set averageRating Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/MonitoringController.java =================================================================== diff -u -rf387f22d1d29e552262b9b538a3b46c1b766a3c7 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/MonitoringController.java (.../MonitoringController.java) (revision f387f22d1d29e552262b9b538a3b46c1b766a3c7) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -53,6 +53,7 @@ import org.lamsfoundation.lams.tool.forum.ForumConstants; import org.lamsfoundation.lams.tool.forum.dto.MessageDTO; import org.lamsfoundation.lams.tool.forum.dto.SessionDTO; +import org.lamsfoundation.lams.tool.forum.model.Attachment; import org.lamsfoundation.lams.tool.forum.model.Forum; import org.lamsfoundation.lams.tool.forum.model.ForumReport; import org.lamsfoundation.lams.tool.forum.model.ForumToolSession; Index: lams_tool_forum/web/jsps/authoring/parts/msgattachment.jsp =================================================================== diff -u -r37ecd2fb49ed11a7f9e1d6fc4df7a5cad551868b -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/web/jsps/authoring/parts/msgattachment.jsp (.../msgattachment.jsp) (revision 37ecd2fb49ed11a7f9e1d6fc4df7a5cad551868b) +++ lams_tool_forum/web/jsps/authoring/parts/msgattachment.jsp (.../msgattachment.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -12,7 +12,7 @@

  • - download/?uuid=${file.fileUuid}&versionID=${file.fileVersionId}&preferDownload=true + download/?uuid=${file.fileDisplayUuid}&versionID=${file.fileVersionId}&preferDownload=true Index: lams_tool_forum/web/jsps/learning/message/msgattachment.jsp =================================================================== diff -u -r6132d98ee813109713fda3579007d4359596fc1e -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/web/jsps/learning/message/msgattachment.jsp (.../msgattachment.jsp) (revision 6132d98ee813109713fda3579007d4359596fc1e) +++ lams_tool_forum/web/jsps/learning/message/msgattachment.jsp (.../msgattachment.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -7,7 +7,7 @@ : - download/?uuid=${file.fileUuid}&versionID=${file.fileVersionId}&preferDownload=true + download/?uuid=${file.fileDisplayUuid}&versionID=${file.fileVersionId}&preferDownload=true
    Index: lams_tool_forum/web/jsps/learning/message/msgview.jsp =================================================================== diff -u -r9a66ee651d79f26996ac722785f9701a67b3eb6a -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/web/jsps/learning/message/msgview.jsp (.../msgview.jsp) (revision 9a66ee651d79f26996ac722785f9701a67b3eb6a) +++ lams_tool_forum/web/jsps/learning/message/msgview.jsp (.../msgview.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -111,7 +111,7 @@ - download/?uuid=${file.fileUuid}&versionID=${file.fileVersionId}&preferDownload=true + download/?uuid=${file.fileDisplayUuid}&versionID=${file.fileVersionId}&preferDownload=true Index: lams_tool_forum/web/jsps/monitoring/viewmarks.jsp =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_forum/web/jsps/monitoring/viewmarks.jsp (.../viewmarks.jsp) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_tool_forum/web/jsps/monitoring/viewmarks.jsp (.../viewmarks.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -111,7 +111,7 @@ - download/?uuid=${file.fileUuid}&versionID=${file.fileVersionId}&preferDownload=true + download/?uuid=${file.fileDisplayUuid}&versionID=${file.fileVersionId}&preferDownload=true Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java =================================================================== diff -u -r1ee503e3d0e0228ea8a45025fddf15d9623c0377 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision 1ee503e3d0e0228ea8a45025fddf15d9623c0377) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -111,6 +111,13 @@ @Transient private ImageGalleryAttachment thumbnailFile; @Transient + private String originalFileDisplayUuid; + @Transient + private String mediumFileDisplayUuid; + @Transient + private String thumbnailFileDisplayUuid; + + @Transient private String titleEscaped; @Transient private String descriptionEscaped; @@ -331,4 +338,28 @@ public void setDescriptionEscaped(String descriptionEscaped) { this.descriptionEscaped = descriptionEscaped; } -} + + public String getOriginalFileDisplayUuid() { + return originalFileDisplayUuid; + } + + public void setOriginalFileDisplayUuid(String originalFileDisplayUuid) { + this.originalFileDisplayUuid = originalFileDisplayUuid; + } + + public String getMediumFileDisplayUuid() { + return mediumFileDisplayUuid; + } + + public void setMediumFileDisplayUuid(String mediumFileDisplayUuid) { + this.mediumFileDisplayUuid = mediumFileDisplayUuid; + } + + public String getThumbnailFileDisplayUuid() { + return thumbnailFileDisplayUuid; + } + + public void setThumbnailFileDisplayUuid(String thumbnailFileDisplayUuid) { + this.thumbnailFileDisplayUuid = thumbnailFileDisplayUuid; + } +} \ No newline at end of file Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java =================================================================== diff -u -r49b072598933566cedd795667351678071f03004 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 49b072598933566cedd795667351678071f03004) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.tool.imageGallery.service; import java.io.File; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @@ -307,4 +308,8 @@ void saveOrUpdateImageGalleryConfigItem(ImageGalleryConfigItem item); void notifyTeachersOnImageSumbit(Long sessionId, ImageGalleryUser imageGalleryUser); + + void fillImageDisplayUuid(ImageGalleryItem item); + + void fillImageDisplayUuid(Collection items); } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryOutputFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryOutputFactory.java (.../ImageGalleryOutputFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryOutputFactory.java (.../ImageGalleryOutputFactory.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -20,7 +20,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.imageGallery.service; import java.util.ArrayList; @@ -60,7 +59,7 @@ public SortedMap getToolOutputDefinitions(Object toolContentObject, int definitionType) { - TreeMap definitionMap = new TreeMap(); + TreeMap definitionMap = new TreeMap<>(); Class simpleUrlArrayClass = SimpleURL[].class; switch (definitionType) { @@ -91,9 +90,9 @@ public SortedMap getToolOutput(List names, IImageGalleryService imageGalleryService, Long toolSessionId, Long learnerId) { - TreeMap outputs = new TreeMap(); + TreeMap outputs = new TreeMap<>(); // tool output cache - TreeMap baseOutputs = new TreeMap(); + TreeMap baseOutputs = new TreeMap<>(); if (names == null) { outputs.put(ImageGalleryOutputFactory.OUTPUT_NAME_LEARNER_NUM_IMAGES_UPLOADED, getToolOutput(ImageGalleryOutputFactory.OUTPUT_NAME_LEARNER_NUM_IMAGES_UPLOADED, @@ -141,13 +140,13 @@ } else if (nameParts[0].equals(ImageGalleryOutputFactory.OUTPUT_NAME_LEARNER_NUM_VOTES)) { return getNumVotes(user, session, imageGalleryService); } else if (nameParts[0].equals(ImageGalleryOutputFactory.OUTPUT_NAME_UPLOADED_IMAGES_URLS)) { - List uploadedImagesUrls = new ArrayList(); + List uploadedImagesUrls = new ArrayList<>(); Set sessionImages = imageGalleryService .getImagesForGroup(session.getImageGallery(), toolSessionId); for (ImageGalleryItem image : sessionImages) { if (!image.isCreateByAuthor()) { String serverUrl = Configuration.get(ConfigurationKeys.SERVER_URL); - String innerUrl = serverUrl + "download/?uuid=" + image.getOriginalFileUuid() + String innerUrl = serverUrl + "download/?uuid=" + image.getOriginalFileDisplayUuid() + "&preferDownload=false&" + AttributeNames.PARAM_TOOL_CONTENT_HANDLER_NAME + "=" + ImageGalleryConstants.TOOL_CONTENT_HANDLER_NAME; String fullUrl = "javascript:var dummy = window.open('" + innerUrl + "','" @@ -199,7 +198,7 @@ Long contentId = imageGallery.getContentId(); Set allImages = imageGallery.getImageGalleryItems(); - List itemIds = new LinkedList(); + List itemIds = new LinkedList<>(); for (ImageGalleryItem image : allImages) { itemIds.add(image.getUid()); } @@ -211,8 +210,8 @@ boolean isCommentsByOtherUsersRequired = user == null; Long userId = user == null ? -1L : user.getUserId(); - List ratingCriteriaDtos = imageGalleryService.getRatingCriteriaDtos(contentId, session.getSessionId(), itemIds, - isCommentsByOtherUsersRequired, userId); + List ratingCriteriaDtos = imageGalleryService.getRatingCriteriaDtos(contentId, + session.getSessionId(), itemIds, isCommentsByOtherUsersRequired, userId); if (user != null) { for (ItemRatingDTO ratingCriteriaDto : ratingCriteriaDtos) { Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== diff -u -r0b7d9c35afb5f77eb0a299808eb0f5443340dcd9 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 0b7d9c35afb5f77eb0a299808eb0f5443340dcd9) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -176,7 +176,9 @@ @Override public List getAuthoredItems(Long imageGalleryUid) { - return imageGalleryItemDao.getAuthoringItems(imageGalleryUid); + List items = imageGalleryItemDao.getAuthoringItems(imageGalleryUid); + fillImageDisplayUuid(items); + return items; } @Override @@ -434,6 +436,12 @@ summary.setItemRatingDto(itemRatingDto); } + image.setOriginalFileDisplayUuid( + imageGalleryToolContentHandler.getFileUuid(image.getOriginalFileUuid())); + image.setMediumFileDisplayUuid(imageGalleryToolContentHandler.getFileUuid(image.getMediumFileUuid())); + image.setThumbnailFileDisplayUuid( + imageGalleryToolContentHandler.getFileUuid(image.getThumbnailFileUuid())); + group.add(summary); } // if there is no any item available, then just put session name into Summary @@ -553,10 +561,11 @@ // upload file NodeKey nodeKey = uploadMultipartFile(file); image.setFileName(file.getName()); - image.setOriginalFileUuid(nodeKey.getUuid()); + image.setOriginalFileUuid(nodeKey.getNodeId()); + image.setOriginalFileDisplayUuid(nodeKey.getUuid()); String fileName = file.getName(); - InputStream originalIS = imageGalleryToolContentHandler.getFileInputStream(nodeKey.getUuid()); + InputStream originalIS = imageGalleryToolContentHandler.getFileInputStream(nodeKey.getNodeId()); BufferedImage originalImage = ImageIO.read(originalIS); //throw exception if image was not successfully read if (originalImage == null) { @@ -568,30 +577,32 @@ // prepare medium image originalIS.close(); - originalIS = imageGalleryToolContentHandler.getFileInputStream(nodeKey.getUuid()); + originalIS = imageGalleryToolContentHandler.getFileInputStream(nodeKey.getNodeId()); InputStream mediumIS = ResizePictureUtil.resize(originalIS, mediumImageDimensions); if (mediumIS == null) { throw new UploadImageGalleryFileException("Impossible to resize image"); } String mediumFileName = ImageGalleryServiceImpl.MEDIUM_FILENAME_PREFIX + fileName.substring(0, fileName.indexOf('.')) + ".jpg"; NodeKey mediumNodeKey = imageGalleryToolContentHandler.uploadFile(mediumIS, mediumFileName, "image/jpeg"); - image.setMediumFileUuid(mediumNodeKey.getUuid()); + image.setMediumFileUuid(mediumNodeKey.getNodeId()); + image.setMediumFileDisplayUuid(mediumNodeKey.getUuid()); //store MediumImageWidth and MediumImageHeight - InputStream mediumIS2 = imageGalleryToolContentHandler.getFileInputStream(mediumNodeKey.getUuid()); + InputStream mediumIS2 = imageGalleryToolContentHandler.getFileInputStream(mediumNodeKey.getNodeId()); BufferedImage mediumImage = ImageIO.read(mediumIS2); image.setMediumImageWidth(mediumImage.getWidth(null)); image.setMediumImageHeight(mediumImage.getHeight(null)); mediumIS2.close(); // prepare thumbnail image - InputStream originalIS2 = imageGalleryToolContentHandler.getFileInputStream(nodeKey.getUuid()); + InputStream originalIS2 = imageGalleryToolContentHandler.getFileInputStream(nodeKey.getNodeId()); InputStream thumbnailIS = ResizePictureUtil.resize(originalIS2, thumbnailImageDimensions); String thumbnailFileName = ImageGalleryServiceImpl.THUMBNAIL_FILENAME_PREFIX + fileName.substring(0, fileName.indexOf('.')) + ".jpg"; NodeKey thumbnailNodeKey = imageGalleryToolContentHandler.uploadFile(thumbnailIS, thumbnailFileName, "image/jpeg"); - image.setThumbnailFileUuid(thumbnailNodeKey.getUuid()); + image.setThumbnailFileUuid(thumbnailNodeKey.getNodeId()); + image.setThumbnailFileDisplayUuid(thumbnailNodeKey.getUuid()); } catch (RepositoryCheckedException e) { throw new UploadImageGalleryFileException( @@ -1184,6 +1195,20 @@ return images; } + @Override + public void fillImageDisplayUuid(Collection items) { + for (ImageGalleryItem item : items) { + fillImageDisplayUuid(item); + } + } + + @Override + public void fillImageDisplayUuid(ImageGalleryItem item) { + item.setOriginalFileDisplayUuid(imageGalleryToolContentHandler.getFileUuid(item.getOriginalFileUuid())); + item.setMediumFileDisplayUuid(imageGalleryToolContentHandler.getFileUuid(item.getMediumFileUuid())); + item.setThumbnailFileDisplayUuid(imageGalleryToolContentHandler.getFileUuid(item.getThumbnailFileUuid())); + } + // ***************************************************************************** // private methods // ***************************************************************************** Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/AuthoringController.java =================================================================== diff -u -r9367000b12e2272e6e0756d91ae1fdd5d7d4a220 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 9367000b12e2272e6e0756d91ae1fdd5d7d4a220) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/AuthoringController.java (.../AuthoringController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -83,7 +83,7 @@ @Autowired @Qualifier("laimagImageGalleryService") - private IImageGalleryService igService; + private IImageGalleryService imageGalleryService; @Autowired @Qualifier("laimagMessageService") @@ -108,13 +108,13 @@ throws ServletException { Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - ImageGallery imageGallery = igService.getImageGalleryByContentId(contentId); + ImageGallery imageGallery = imageGalleryService.getImageGalleryByContentId(contentId); imageGallery.setDefineLater(true); - igService.saveOrUpdateImageGallery(imageGallery); + imageGalleryService.saveOrUpdateImageGallery(imageGallery); //audit log the teacher has started editing activity in monitor - igService.auditLogStartEditingActivityInMonitor(contentId); + imageGalleryService.auditLogStartEditingActivityInMonitor(contentId); request.setAttribute(AttributeNames.ATTR_MODE, ToolAccessMode.TEACHER.toString()); return readDatabaseData(imageGalleryForm, request); @@ -141,17 +141,18 @@ imageGalleryForm.setSessionMapID(sessionMap.getSessionID()); try { - imageGallery = igService.getImageGalleryByContentId(contentId); + imageGallery = imageGalleryService.getImageGalleryByContentId(contentId); // if imageGallery does not exist, try to use default content instead. if (imageGallery == null) { - imageGallery = igService.getDefaultContent(contentId); + imageGallery = imageGalleryService.getDefaultContent(contentId); if (imageGallery.getImageGalleryItems() != null) { items = new ArrayList<>(imageGallery.getImageGalleryItems()); + imageGalleryService.fillImageDisplayUuid(items); } else { items = null; } } else { - items = igService.getAuthoredItems(imageGallery.getUid()); + items = imageGalleryService.getAuthoredItems(imageGallery.getUid()); } imageGalleryForm.setImageGallery(imageGallery); @@ -185,7 +186,7 @@ imageGalleryItemList.addAll(items); // get rating criterias from DB - List ratingCriterias = igService.getRatingCriterias(contentId); + List ratingCriterias = imageGalleryService.getRatingCriterias(contentId); sessionMap.put(AttributeNames.ATTR_RATING_CRITERIAS, ratingCriterias); sessionMap.put(ImageGalleryConstants.ATTR_IMAGE_GALLERY_FORM, imageGalleryForm); @@ -238,7 +239,7 @@ Long contentId = imageGalleryForm.getImageGallery().getContentId(); // **********************************Get ImageGallery PO********************* - ImageGallery imageGalleryPO = igService.getImageGalleryByContentId(contentId); + ImageGallery imageGalleryPO = imageGalleryService.getImageGalleryByContentId(contentId); if (imageGalleryPO == null) { // new ImageGallery, create it. imageGalleryPO = imageGallery; @@ -268,7 +269,8 @@ HttpSession ss = SessionManager.getSession(); // get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - ImageGalleryUser imageGalleryUser = igService.getUserByIDAndContent(user.getUserID().longValue(), contentId); + ImageGalleryUser imageGalleryUser = imageGalleryService.getUserByIDAndContent(user.getUserID().longValue(), + contentId); if (imageGalleryUser == null) { imageGalleryUser = new ImageGalleryUser(user, imageGalleryPO); } @@ -303,7 +305,7 @@ ImageGalleryItem item = iter.next(); iter.remove(); if (item.getUid() != null) { - igService.deleteImageGalleryItem(item.getUid()); + imageGalleryService.deleteImageGalleryItem(item.getUid()); } } // handle imageGallery item attachment file: @@ -315,14 +317,14 @@ } // ********************************************** // finally persist imageGalleryPO again - igService.saveOrUpdateImageGallery(imageGalleryPO); + imageGalleryService.saveOrUpdateImageGallery(imageGalleryPO); // ************************* Handle rating criterias ******************* if (mode.isAuthor()) { List oldCriterias = (List) sessionMap .get(AttributeNames.ATTR_RATING_CRITERIAS); - igService.saveRatingCriterias(request, oldCriterias, contentId); + imageGalleryService.saveRatingCriterias(request, oldCriterias, contentId); } imageGalleryForm.setImageGallery(imageGalleryPO); @@ -573,6 +575,7 @@ if (item.getOriginalFileUuid() != null) { form.setFileUuid(item.getOriginalFileUuid()); form.setFileName(item.getFileName()); + form.setFileDisplayUuid(item.getOriginalFileDisplayUuid()); form.setHasFile(true); } else { form.setHasFile(false); @@ -619,7 +622,7 @@ if (StringUtils.isBlank(title)) { Long nextImageTitleNumber = (Long) sessionMap.get(ImageGalleryConstants.ATTR_NEXT_IMAGE_TITLE); sessionMap.put(ImageGalleryConstants.ATTR_NEXT_IMAGE_TITLE, nextImageTitleNumber + 1); - title = igService.generateNextImageTitle(nextImageTitleNumber); + title = imageGalleryService.generateNextImageTitle(nextImageTitleNumber); } item.setTitle(title); @@ -661,7 +664,7 @@ if (StringUtils.isBlank(title)) { Long nextImageTitleNumber = (Long) sessionMap.get(ImageGalleryConstants.ATTR_NEXT_IMAGE_TITLE); sessionMap.put(ImageGalleryConstants.ATTR_NEXT_IMAGE_TITLE, nextImageTitleNumber + 1); - title = igService.generateNextImageTitle(nextImageTitleNumber); + title = imageGalleryService.generateNextImageTitle(nextImageTitleNumber); } nextItem.setTitle(title); nextItem.setDescription(item.getDescription()); @@ -670,7 +673,7 @@ item = nextItem; } - igService.uploadImageGalleryItemFile(item, file); + imageGalleryService.uploadImageGalleryItemFile(item, file); if (!hasOld) { imageList.add(item); } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/LearningController.java =================================================================== diff -u -r9367000b12e2272e6e0756d91ae1fdd5d7d4a220 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/LearningController.java (.../LearningController.java) (revision 9367000b12e2272e6e0756d91ae1fdd5d7d4a220) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/LearningController.java (.../LearningController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -210,6 +210,7 @@ image.setDescriptionEscaped(descriptionEscaped); } + igService.fillImageDisplayUuid(images); sessionMap.put(ImageGalleryConstants.ATTR_IMAGE_LIST, images); sessionMap.put(ImageGalleryConstants.ATTR_IMAGE_GALLERY, imageGallery); @@ -317,6 +318,7 @@ ImageGalleryItem image = igService.getImageGalleryItemByUid(imageUid); String escapedDescription = image.getDescription().replaceAll("[\"]", """); image.setDescription(escapedDescription); + igService.fillImageDisplayUuid(image); sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_IMAGE, image); // becuase in webpage will use this login name. Here is just Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/MonitoringController.java =================================================================== diff -u -r7e1926a1f28d55c8de63720fbc97f918de5cc711 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 7e1926a1f28d55c8de63720fbc97f918de5cc711) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -131,6 +131,7 @@ request.setAttribute("itemRatingDto", itemRatingDto); } + igService.fillImageDisplayUuid(image); request.setAttribute(ImageGalleryConstants.ATTR_IMAGE, image); imageGalleryItemForm.setImageUid(image.getUid().toString()); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/form/ImageGalleryItemForm.java =================================================================== diff -u -r49b072598933566cedd795667351678071f03004 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/form/ImageGalleryItemForm.java (.../ImageGalleryItemForm.java) (revision 49b072598933566cedd795667351678071f03004) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/form/ImageGalleryItemForm.java (.../ImageGalleryItemForm.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -44,6 +44,7 @@ private boolean hasFile; private Long fileUuid; private String fileName; + private String fileDisplayUuid; private MultipartFile file; private String tmpFileUploadId; @@ -117,6 +118,14 @@ this.fileUuid = fileUuid; } + public String getFileDisplayUuid() { + return fileDisplayUuid; + } + + public void setFileDisplayUuid(String fileDisplayUuid) { + this.fileDisplayUuid = fileDisplayUuid; + } + public boolean isHasFile() { return hasFile; } Index: lams_tool_images/web/pages/authoring/parts/imagefile.jsp =================================================================== diff -u -r3a64b2f8137870eb67586cd9b18e71f84096b43c -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/web/pages/authoring/parts/imagefile.jsp (.../imagefile.jsp) (revision 3a64b2f8137870eb67586cd9b18e71f84096b43c) +++ lams_tool_images/web/pages/authoring/parts/imagefile.jsp (.../imagefile.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -6,7 +6,7 @@

    : - download/?uuid=${itemAttachment.fileUuid}&preferDownload=false + download/?uuid=${itemAttachment.fileDisplayUuid}&preferDownload=false     Index: lams_tool_images/web/pages/authoring/parts/itemlist.jsp =================================================================== diff -u -rdc8a38f2c23fa53840679c499e56fdbc652b8d7a -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/web/pages/authoring/parts/itemlist.jsp (.../itemlist.jsp) (revision dc8a38f2c23fa53840679c499e56fdbc652b8d7a) +++ lams_tool_images/web/pages/authoring/parts/itemlist.jsp (.../itemlist.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -15,10 +15,10 @@ - download/?uuid=${image.thumbnailFileUuid}&preferDownload=false + download/?uuid=${image.thumbnailFileDisplayUuid}&preferDownload=false - download/?uuid=${image.mediumFileUuid}&preferDownload=false + download/?uuid=${image.mediumFileDisplayUuid}&preferDownload=false Index: lams_tool_images/web/pages/learning/learning.jsp =================================================================== diff -u -r51902e5ec7e5e92493bdd4c6e58e211142b5f42e -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision 51902e5ec7e5e92493bdd4c6e58e211142b5f42e) +++ lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -108,9 +108,8 @@ { - img: "download/?uuid="+${image.mediumFileUuid}+"&preferDownload="+false, - //thumb: ""download/?uuid="+${image.thumbnailFileUuid}+"&preferDownload="+false, - full: "download/?uuid="+${image.originalFileUuid}+"&preferDownload="+false, + img: "download/?uuid=${image.mediumFileDisplayUuid}&preferDownload=false", + full: "download/?uuid=${image.originalFileDisplayUuid}&preferDownload=false", id: '${image.uid}', // Custom anchor is used with the hash:true option. caption: '

    ' + '${description}' Index: lams_tool_images/web/pages/monitoring/imagesummary.jsp =================================================================== diff -u -r5f9e583fc8e476f6a5f9e1826332ba3788d7c68c -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/web/pages/monitoring/imagesummary.jsp (.../imagesummary.jsp) (revision 5f9e583fc8e476f6a5f9e1826332ba3788d7c68c) +++ lams_tool_images/web/pages/monitoring/imagesummary.jsp (.../imagesummary.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -51,7 +51,7 @@ - download/?uuid=${image.mediumFileUuid}&preferDownload=false + download/?uuid=${image.mediumFileDisplayUuid}&preferDownload=false Index: lams_tool_images/web/pages/monitoring/summary.jsp =================================================================== diff -u -r9e395fca5d7eb4a5ac4c9768642a336723a950f7 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_images/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 9e395fca5d7eb4a5ac4c9768642a336723a950f7) +++ lams_tool_images/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -99,7 +99,7 @@ - download/?uuid=${image.thumbnailFileUuid}&preferDownload=false + download/?uuid=${image.thumbnailFileDisplayUuid}&preferDownload=false ?sessionMapID=${sessionMapID}&imageUid=${image.uid}&toolSessionID=${sessionId}&KeepThis=true&TB_iframe=true&modal=true Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/model/CommonCartridgeItem.java =================================================================== diff -u -r1ee503e3d0e0228ea8a45025fddf15d9623c0377 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/model/CommonCartridgeItem.java (.../CommonCartridgeItem.java) (revision 1ee503e3d0e0228ea8a45025fddf15d9623c0377) +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/model/CommonCartridgeItem.java (.../CommonCartridgeItem.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -59,7 +59,7 @@ @Column @GeneratedValue(strategy = GenerationType.IDENTITY) private Long uid; - + // CommonCartridge Type:1=URL,2=File,3=Website,4=Learning Object @Column(name = "item_type") private short type; @@ -84,25 +84,25 @@ @Column(name = "launch_url") private String launchUrl; - + @Column(name = "secure_launch_url") private String secureLaunchUrl; - + @Column(name = "tool_key") private String key; - + @Column(name = "tool_secret") private String secret; - + @Column(name = "custom_str") private String customStr; - + @Column(name = "frame_height") private int frameHeight; - + @Column(name = "open_url_new_window") private boolean openUrlNewWindow; - + @Column(name = "button_text") private String buttonText; @@ -125,13 +125,13 @@ @Column(name = "is_hide") private boolean isHide; - + @Column(name = "create_by_author") private boolean isCreateByAuthor; @Column(name = "create_date") private Date createDate; - + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "create_by") private CommonCartridgeUser createBy; @@ -140,6 +140,9 @@ @Transient private boolean complete; + @Transient + private String fileDisplayUuid; + @Override public Object clone() { CommonCartridgeItem obj = null; @@ -168,7 +171,7 @@ return obj; } - + @Override public String toString() { return new ToStringBuilder(this).append(" uid", uid).append(" type", type).append(" title", title).toString(); @@ -386,4 +389,11 @@ return complete; } -} + public String getFileDisplayUuid() { + return fileDisplayUuid; + } + + public void setFileDisplayUuid(String fileDisplayUuid) { + this.fileDisplayUuid = fileDisplayUuid; + } +} \ No newline at end of file Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java =================================================================== diff -u -r1b54b6d33e0b878ab132c09a1f56ecde9fef5756 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java (.../CommonCartridgeServiceImpl.java) (revision 1b54b6d33e0b878ab132c09a1f56ecde9fef5756) +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java (.../CommonCartridgeServiceImpl.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -178,7 +178,8 @@ } @Override - public void deleteFromRepository(Long fileUuid, Long fileVersionId) throws InvalidParameterException, RepositoryCheckedException { + public void deleteFromRepository(Long fileUuid, Long fileVersionId) + throws InvalidParameterException, RepositoryCheckedException { commonCartridgeToolContentHandler.deleteFile(fileUuid); } @@ -302,7 +303,9 @@ @Override public CommonCartridgeItem getCommonCartridgeItemByUid(Long itemUid) { - return commonCartridgeItemDao.getByUid(itemUid); + CommonCartridgeItem item = commonCartridgeItemDao.getByUid(itemUid); + item.setFileDisplayUuid(commonCartridgeToolContentHandler.getFileUuid(item.getFileUuid())); + return item; } @Override @@ -707,7 +710,7 @@ @Override public boolean isReadOnly(Long toolContentId) { CommonCartridge cartridge = commonCartridgeDao.getByContentId(toolContentId); - for (CommonCartridgeItem item : (Set) cartridge.getCommonCartridgeItems()) { + for (CommonCartridgeItem item : cartridge.getCommonCartridgeItems()) { if (!item.isCreateByAuthor()) { // we don't remove users in removeLearnerContent() // we just remove their items @@ -859,7 +862,7 @@ public List getConfidenceLevels(Long toolSessionId) { return null; } - + @Override public boolean isUserGroupLeader(Long userId, Long toolSessionId) { return false; @@ -874,7 +877,7 @@ public List getMonitorsByToolSessionId(Long sessionId) { return lessonService.getMonitorsByToolSessionId(sessionId); } - + @Override public boolean isGroupedActivity(long toolContentID) { return toolService.isGroupedActivity(toolContentID); @@ -884,7 +887,7 @@ public void auditLogStartEditingActivityInMonitor(long toolContentID) { toolService.auditLogStartEditingActivityInMonitor(toolContentID); } - + @Override public boolean isLastActivity(Long toolSessionId) { return toolService.isLastActivity(toolSessionId); Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/web/controller/ViewItemController.java =================================================================== diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/web/controller/ViewItemController.java (.../ViewItemController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50) +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/web/controller/ViewItemController.java (.../ViewItemController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -170,7 +170,7 @@ break; case CommonCartridgeConstants.RESOURCE_TYPE_COMMON_CARTRIDGE: - url = "/download/?uuid=" + item.getFileUuid() + "&preferDownload=false"; + url = "/download/?uuid=" + item.getFileDisplayUuid() + "&preferDownload=false"; break; } request.setAttribute(CommonCartridgeConstants.ATTR_RESOURCE_REVIEW_URL, url); @@ -260,35 +260,6 @@ return item; } - private static Pattern wikipediaPattern = Pattern.compile("wikipedia", - Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); - - private Object getReviewUrl(CommonCartridgeItem item, String sessionMapID, String mode, int itemIdx) { - short type = item.getType(); - String url = null; - switch (type) { - case CommonCartridgeConstants.RESOURCE_TYPE_BASIC_LTI: - if (item.isOpenUrlNewWindow()) { - if (CommonCartridgeConstants.MODE_AUTHOR_SESSION.equals(mode)) { - url = "/openUrlPopup.do?" + AttributeNames.ATTR_MODE + "=" + mode + "&" - + CommonCartridgeConstants.PARAM_ITEM_INDEX + "=" + itemIdx + "&" - + CommonCartridgeConstants.ATTR_SESSION_MAP_ID + "=" + sessionMapID; - } else { - url = "/openUrlPopup.do?" + CommonCartridgeConstants.PARAM_RESOURCE_ITEM_UID + "=" - + item.getUid() + "&" + CommonCartridgeConstants.ATTR_SESSION_MAP_ID + "=" - + sessionMapID; - } - } else { - url = CommonCartridgeWebUtils.protocol(item.getUrl()); - } - break; - case CommonCartridgeConstants.RESOURCE_TYPE_COMMON_CARTRIDGE: - url = "/download/?uuid=" + item.getFileUuid() + "&preferDownload=false"; - break; - } - return url; - } - /** * List save current commonCartridge items. * Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItem.java =================================================================== diff -u -rf007d7e87e33de37ad35d279b1da1d59c9f42055 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItem.java (.../ResourceItem.java) (revision f007d7e87e33de37ad35d279b1da1d59c9f42055) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/model/ResourceItem.java (.../ResourceItem.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -108,9 +108,13 @@ // ******************************* DTO fields *********** @Transient private boolean complete; + @Transient private ItemRatingDTO ratingDTO; + @Transient + private String fileDisplayUuid; + @Override public Object clone() { ResourceItem obj = null; @@ -285,6 +289,14 @@ this.allowComments = allowComments; } + public String getFileDisplayUuid() { + return fileDisplayUuid; + } + + public void setFileDisplayUuid(String fileDisplayUuid) { + this.fileDisplayUuid = fileDisplayUuid; + } + @Override public String toString() { return new ToStringBuilder(this).append("uid", uid).append(" type", type).append(" title", title).toString(); Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceOutputFactory.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceOutputFactory.java (.../ResourceOutputFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceOutputFactory.java (.../ResourceOutputFactory.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -20,7 +20,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.tool.rsrc.service; import java.util.ArrayList; @@ -47,7 +46,7 @@ @Override public SortedMap getToolOutputDefinitions(Object toolContentObject, int definitionType) throws ToolException { - TreeMap definitionMap = new TreeMap(); + TreeMap definitionMap = new TreeMap<>(); Class simpleUrlArrayClass = SimpleURL[].class; switch (definitionType) { case ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION: @@ -68,9 +67,9 @@ public SortedMap getToolOutput(List names, IResourceService resourceService, Long toolSessionId, Long learnerId) { - TreeMap outputs = new TreeMap(); + TreeMap outputs = new TreeMap<>(); // tool output cache - TreeMap baseOutputs = new TreeMap(); + TreeMap baseOutputs = new TreeMap<>(); if (names == null) { outputs.put(ResourceConstants.SHARED_ITEMS_DEFINITION_NAME, getToolOutput( ResourceConstants.SHARED_ITEMS_DEFINITION_NAME, resourceService, toolSessionId, learnerId)); @@ -98,7 +97,7 @@ String[] nameParts = splitConditionName(name); if (ResourceConstants.SHARED_ITEMS_DEFINITION_NAME.equals(nameParts[0])) { List items = resourceService.getResourceItemsBySessionId(toolSessionId); - List uploadedItems = new ArrayList(items.size()); + List uploadedItems = new ArrayList<>(items.size()); for (ResourceItem item : items) { if (!item.isCreateByAuthor()) { uploadedItems.add(item); @@ -112,8 +111,8 @@ String path = uploadedItem.getUrl(); if (path == null) { - path = serverUrl + "download/?uuid=" + uploadedItem.getFileUuid() + "&preferDownload=false&" - + AttributeNames.PARAM_TOOL_CONTENT_HANDLER_NAME + "=" + path = serverUrl + "download/?uuid=" + uploadedItem.getFileDisplayUuid() + + "&preferDownload=false&" + AttributeNames.PARAM_TOOL_CONTENT_HANDLER_NAME + "=" + ResourceConstants.TOOL_CONTENT_HANDLER_NAME; } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== diff -u -rf007d7e87e33de37ad35d279b1da1d59c9f42055 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision f007d7e87e33de37ad35d279b1da1d59c9f42055) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -171,7 +171,11 @@ @Override public List getAuthoredItems(Long resourceUid) { - return resourceItemDao.getAuthoringItems(resourceUid); + List items = resourceItemDao.getAuthoringItems(resourceUid); + for (ResourceItem item : items) { + item.setFileDisplayUuid(resourceToolContentHandler.getFileUuid(item.getFileUuid())); + } + return items; } @Override @@ -219,6 +223,9 @@ // add resource items from ResourceSession items.addAll(session.getResourceItems()); + for (ResourceItem item : items) { + item.setFileDisplayUuid(resourceToolContentHandler.getFileUuid(item.getFileUuid())); + } return items; } @@ -327,7 +334,9 @@ @Override public ResourceItem getResourceItemByUid(Long itemUid) { - return resourceItemDao.getByUid(itemUid); + ResourceItem item = resourceItemDao.getByUid(itemUid); + item.setFileDisplayUuid(resourceToolContentHandler.getFileUuid(item.getFileUuid())); + return item; } @Override @@ -642,8 +651,9 @@ // For file only upload one sigle file if (item.getType() == ResourceConstants.RESOURCE_TYPE_FILE) { NodeKey nodeKey = processFile(file); - item.setFileUuid(nodeKey.getUuid()); + item.setFileUuid(nodeKey.getNodeId()); item.setFileVersionId(nodeKey.getVersion()); + item.setFileDisplayUuid(nodeKey.getUuid()); } // need unzip upload, and check the initial item :default.htm/html or index.htm/html if (item.getType() == ResourceConstants.RESOURCE_TYPE_WEBSITE) { @@ -658,8 +668,9 @@ item.setInitialItem(initFile); // upload package NodeKey nodeKey = processPackage(packageDirectory, initFile); - item.setFileUuid(nodeKey.getUuid()); + item.setFileUuid(nodeKey.getNodeId()); item.setFileVersionId(nodeKey.getVersion()); + item.setFileDisplayUuid(nodeKey.getUuid()); } catch (ZipFileUtilException e) { log.error(messageService.getMessage("error.msg.zip.file.exception") + " : " + e.toString()); throw new UploadResourceFileException(messageService.getMessage("error.msg.zip.file.exception")); Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/ViewItemController.java =================================================================== diff -u -rf007d7e87e33de37ad35d279b1da1d59c9f42055 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/ViewItemController.java (.../ViewItemController.java) (revision f007d7e87e33de37ad35d279b1da1d59c9f42055) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/ViewItemController.java (.../ViewItemController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -253,7 +253,7 @@ break; case ResourceConstants.RESOURCE_TYPE_FILE: case ResourceConstants.RESOURCE_TYPE_WEBSITE: - url = "/download/?uuid=" + item.getFileUuid(); + url = "/download/?uuid=" + item.getFileDisplayUuid(); break; } return url; Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/FileDetailsDTO.java =================================================================== diff -u -r7694dd245cc58c5b7beb2348aaefb2762c47dc8d -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/FileDetailsDTO.java (.../FileDetailsDTO.java) (revision 7694dd245cc58c5b7beb2348aaefb2762c47dc8d) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/FileDetailsDTO.java (.../FileDetailsDTO.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -21,8 +21,6 @@ * **************************************************************** */ - - package org.lamsfoundation.lams.tool.sbmt.dto; import java.io.Serializable; @@ -60,15 +58,17 @@ private String markFileName; private Long markFileUUID; private Long markFileVersionID; + private String markFileDisplayUuid; //file repository info private Long uuID; private Long versionID; + private String displayUuid; private boolean finished; //if this file uploaded by current learner private boolean currentLearner; - + private boolean removed; /** @@ -101,7 +101,8 @@ this.reportID = report.getReportID(); this.comments = report.getComments(); this.marks = report.getMarks() != null - ? NumberUtil.formatLocalisedNumber(report.getMarks(), numberFormat, 2) : ""; + ? NumberUtil.formatLocalisedNumber(report.getMarks(), numberFormat, 2) + : ""; this.markFileName = report.getMarkFileName(); this.markFileUUID = report.getMarkFileUUID(); this.markFileVersionID = report.getMarkFileVersionID(); @@ -228,6 +229,14 @@ this.versionID = versionID; } + public String getDisplayUuid() { + return displayUuid; + } + + public void setDisplayUuid(String displayUuid) { + this.displayUuid = displayUuid; + } + /** * @return Returns the submissionID. */ @@ -298,6 +307,14 @@ this.markFileVersionID = markFileVersionID; } + public String getMarkFileDisplayUuid() { + return markFileDisplayUuid; + } + + public void setMarkFileDisplayUuid(String markFileDisplayUuid) { + this.markFileDisplayUuid = markFileDisplayUuid; + } + public boolean isRemoved() { return removed; } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesOutputFactory.java =================================================================== diff -u -r3ad974a50e8f8ea860adfb727bd1bf12831cac94 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesOutputFactory.java (.../SubmitFilesOutputFactory.java) (revision 3ad974a50e8f8ea860adfb727bd1bf12831cac94) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesOutputFactory.java (.../SubmitFilesOutputFactory.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -113,7 +113,7 @@ int urlIndex = 0; for (FileDetailsDTO filesDetailsDTO : files) { String fileUrl = "javascript:var dummy = window.open('" + serverUrl + "download/?uuid=" - + filesDetailsDTO.getUuID() + "&preferDownload=false&" + + filesDetailsDTO.getDisplayUuid() + "&preferDownload=false&" + AttributeNames.PARAM_TOOL_CONTENT_HANDLER_NAME + "=" + SbmtConstants.TOOL_CONTENT_HANDLER_NAME + "','" + filesDetailsDTO.getFileDescription() + "','resizable,scrollbars')"; Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== diff -u -rf744562c66dd81d53ef8ddf2403368e27c8c646d -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision f744562c66dd81d53ef8ddf2403368e27c8c646d) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -584,7 +584,7 @@ SubmitUser learner = submitUserDAO.getLearner(sessionID, userID); details.setLearner(learner); - details.setUuid(nodeKey.getUuid()); + details.setUuid(nodeKey.getNodeId()); details.setVersionID(nodeKey.getVersion()); SubmitFilesReport report = new SubmitFilesReport(); report.setDetails(details); @@ -647,6 +647,8 @@ for (SubmissionDetails submissionDetails : list) { if (includeRemovedFiles || !submissionDetails.isRemoved()) { FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails, numberFormat); + detailDto.setDisplayUuid(sbmtToolContentHandler.getFileUuid(detailDto.getUuID())); + detailDto.setMarkFileDisplayUuid(sbmtToolContentHandler.getFileUuid(detailDto.getMarkFileUUID())); details.add(detailDto); } } @@ -682,6 +684,8 @@ SubmitUserDTO submitUserDTO = new SubmitUserDTO(learner); FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails, numberFormat); + detailDto.setDisplayUuid(sbmtToolContentHandler.getFileUuid(detailDto.getUuID())); + detailDto.setMarkFileDisplayUuid(sbmtToolContentHandler.getFileUuid(detailDto.getMarkFileUUID())); userFileList = map.get(submitUserDTO); // if it is first time to this user, creating a new ArrayList for this user. if (userFileList == null) { @@ -699,7 +703,11 @@ @Override public FileDetailsDTO getFileDetails(Long detailID, Locale currentLocale) { SubmissionDetails details = submissionDetailsDAO.getSubmissionDetailsByID(detailID); - return new FileDetailsDTO(details, currentLocale != null ? NumberFormat.getInstance(currentLocale) : null); + FileDetailsDTO detailDto = new FileDetailsDTO(details, + currentLocale != null ? NumberFormat.getInstance(currentLocale) : null); + detailDto.setDisplayUuid(sbmtToolContentHandler.getFileUuid(detailDto.getUuID())); + detailDto.setMarkFileDisplayUuid(sbmtToolContentHandler.getFileUuid(detailDto.getMarkFileUUID())); + return detailDto; } @Override @@ -742,7 +750,7 @@ } report.setMarkFileName(markFile.getOriginalFilename()); - report.setMarkFileUUID(nodeKey.getUuid()); + report.setMarkFileUUID(nodeKey.getNodeId()); report.setMarkFileVersionID(nodeKey.getVersion()); } @@ -774,7 +782,7 @@ // IToolContentHandler.TYPE_ONLINE); report.setMarkFileName(markFile.getOriginalFilename()); - report.setMarkFileUUID(nodeKey.getUuid()); + report.setMarkFileUUID(nodeKey.getNodeId()); report.setMarkFileVersionID(nodeKey.getVersion()); } Index: lams_tool_sbmt/web/learner/sbmtlearner.jsp =================================================================== diff -u -r9f9cbafc9afe4fcdf65d825d79dca3826b38325f -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/web/learner/sbmtlearner.jsp (.../sbmtlearner.jsp) (revision 9f9cbafc9afe4fcdf65d825d79dca3826b38325f) +++ lams_tool_sbmt/web/learner/sbmtlearner.jsp (.../sbmtlearner.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -395,7 +395,7 @@ - + Index: lams_tool_sbmt/web/monitoring/mark/fileinfo.jsp =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/web/monitoring/mark/fileinfo.jsp (.../fileinfo.jsp) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_tool_sbmt/web/monitoring/mark/fileinfo.jsp (.../fileinfo.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -34,13 +34,13 @@ - download/?uuid=${fileInfo.uuID}&versionID=${fileInfo.versionID}&preferDownload=false + download/?uuid=${fileInfo.displayUuid}&versionID=${fileInfo.versionID}&preferDownload=false "> - download/?uuid=${fileInfo.uuID}&versionID=${fileInfo.versionID}&preferDownload=true + download/?uuid=${fileInfo.displayUuid}&versionID=${fileInfo.versionID}&preferDownload=true "> Index: lams_tool_sbmt/web/monitoring/mark/filelist.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/web/monitoring/mark/filelist.jsp (.../filelist.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_sbmt/web/monitoring/mark/filelist.jsp (.../filelist.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -50,13 +50,13 @@
    - download/?uuid=${fileInfo.markFileUUID}&versionID=${fileInfo.markFileVersionID}&preferDownload=false + download/?uuid=${fileInfo.markFileDisplayUuid}&versionID=${fileInfo.markFileVersionID}&preferDownload=false "> - download/?uuid=${fileInfo.markFileUUID}&versionID=${fileInfo.markFileVersionID}&preferDownload=true + download/?uuid=${fileInfo.markFileDisplayUuid}&versionID=${fileInfo.markFileVersionID}&preferDownload=true "> Index: lams_tool_sbmt/web/monitoring/mark/updatemark.jsp =================================================================== diff -u -r689f885a0772f669cbf4741255519d59b2665d47 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_sbmt/web/monitoring/mark/updatemark.jsp (.../updatemark.jsp) (revision 689f885a0772f669cbf4741255519d59b2665d47) +++ lams_tool_sbmt/web/monitoring/mark/updatemark.jsp (.../updatemark.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -99,14 +99,14 @@
    - download/?uuid=${fileInfo.markFileUUID}&versionID=${fileInfo.markFileVersionID}&preferDownload=false + download/?uuid=${fileInfo.markFileDisplayUuid}&versionID=${fileInfo.markFileVersionID}&preferDownload=false "> - download/?uuid=${fileInfo.markFileUUID}&versionID=${fileInfo.markFileVersionID}&preferDownload=true + download/?uuid=${fileInfo.markFileDisplayUuid}&versionID=${fileInfo.markFileVersionID}&preferDownload=true "> Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemAttachment.java =================================================================== diff -u -r1ee503e3d0e0228ea8a45025fddf15d9623c0377 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemAttachment.java (.../TaskListItemAttachment.java) (revision 1ee503e3d0e0228ea8a45025fddf15d9623c0377) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/model/TaskListItemAttachment.java (.../TaskListItemAttachment.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -34,6 +34,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; +import javax.persistence.Transient; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; @@ -74,6 +75,9 @@ @JoinColumn(name = "create_by") private TaskListUser createBy; + @Transient + private String fileDisplayUuid; + @Override public Object clone() { TaskListItemAttachment taskListItemAttachment = null; @@ -178,4 +182,13 @@ public void setCreateBy(TaskListUser createBy) { this.createBy = createBy; } + + public String getFileDisplayUuid() { + return fileDisplayUuid; + } + + public void setFileDisplayUuid(String fileDisplayUuid) { + this.fileDisplayUuid = fileDisplayUuid; + } + } \ No newline at end of file Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java =================================================================== diff -u -r895289ecb3f8c3433306cd14b53ffb09bf788cca -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision 895289ecb3f8c3433306cd14b53ffb09bf788cca) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -147,8 +147,9 @@ // create new attachement TaskListItemAttachment file = new TaskListItemAttachment(); - file.setFileUuid(nodeKey.getUuid()); + file.setFileUuid(nodeKey.getNodeId()); file.setFileVersionId(nodeKey.getVersion()); + file.setFileDisplayUuid(nodeKey.getUuid()); file.setFileName(uploadFile.getName()); file.setCreated(new Timestamp(new Date().getTime())); file.setCreateBy(user); @@ -202,12 +203,21 @@ // to skip CGLib problem Long contentId = session.getTaskList().getContentId(); TaskList taskList = taskListDao.getByContentId(contentId); + for (TaskListItem item : taskList.getTaskListItems()) { + for (TaskListItemAttachment attachment : item.getAttachments()) { + attachment.setFileDisplayUuid(taskListToolContentHandler.getFileUuid(attachment.getFileUuid())); + } + } return taskList; } @Override public TaskListItem getTaskListItemByUid(Long itemUid) { - return taskListItemDao.getByUid(itemUid); + TaskListItem item = taskListItemDao.getByUid(itemUid); + for (TaskListItemAttachment attachment : item.getAttachments()) { + attachment.setFileDisplayUuid(taskListToolContentHandler.getFileUuid(attachment.getFileUuid())); + } + return item; } @Override Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/controller/MonitoringController.java =================================================================== diff -u -r7a9dcf2073f058bd353c8423c8bc732f0d006b44 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 7a9dcf2073f058bd353c8423c8bc732f0d006b44) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -337,29 +337,15 @@ commentsFiles += "
  • "; for (TaskListItemAttachment userAttachment : userAttachments) { commentsFiles += HtmlUtils.htmlEscape(userAttachment.getFileName()) + " "; - commentsFiles += "" + label - + ""; + commentsFiles += "" + label + ""; } commentsFiles += "
  • "; } commentsFiles += ""; -// -// -//
  • -// -// -// -// -// -// -// -// -// -//
  • -//
    userData.add(commentsFiles); } @@ -421,7 +407,7 @@ } taskList.setSubmissionDeadline(tzSubmissionDeadline); taskListService.saveOrUpdateTaskList(taskList); - + return formattedDate; } Index: lams_tool_task/web/pages/learning/parts/filelist.jsp =================================================================== diff -u -r3b9eccb4b8def4d56a62641a0fe4038a60b3afe6 -r2de8f805211b6433aff4efd6fa9275a1b9933033 --- lams_tool_task/web/pages/learning/parts/filelist.jsp (.../filelist.jsp) (revision 3b9eccb4b8def4d56a62641a0fe4038a60b3afe6) +++ lams_tool_task/web/pages/learning/parts/filelist.jsp (.../filelist.jsp) (revision 2de8f805211b6433aff4efd6fa9275a1b9933033) @@ -14,7 +14,7 @@
  • [] - download/?uuid=${file.fileUuid}&versionID=${file.fileVersionId}&preferDownload=true + download/?uuid=${file.fileDisplayUuid}&versionID=${file.fileVersionId}&preferDownload=true