Index: lams_tool_pixlr/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_pixlr/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.1 -r1.2 --- lams_tool_pixlr/conf/language/lams/ApplicationResources_en_AU.properties 7 Jan 2009 22:37:49 -0000 1.1 +++ lams_tool_pixlr/conf/language/lams/ApplicationResources_en_AU.properties 8 Jan 2009 00:23:58 -0000 1.2 @@ -114,5 +114,6 @@ title.sessions =Sessions title.originalImage =Original Image message.imageNotAvailable =Image not available, either it has not yet been edited or it has been deleted. +authoring.msg.cancel.save =Do you want to close this window without saving? #======= End labels: Exported 103 labels for en AU ===== Index: lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/IPixlrService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/IPixlrService.java,v diff -u -r1.1 -r1.2 --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/IPixlrService.java 7 Jan 2009 22:37:49 -0000 1.1 +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/IPixlrService.java 8 Jan 2009 00:23:58 -0000 1.2 @@ -154,4 +154,11 @@ * */ void updateEntry(NotebookEntry notebookEntry); + + /** + * Helper method to extract file extension from a string + * @param fileName + * @return + */ + String getFileExtension(String fileName); } Index: lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java,v diff -u -r1.1 -r1.2 --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java 7 Jan 2009 22:37:49 -0000 1.1 +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java 8 Jan 2009 00:23:58 -0000 1.2 @@ -95,6 +95,8 @@ static Logger logger = Logger.getLogger(PixlrService.class.getName()); + public static final String EXPORT_IMAGE_FILE_NAME = "authorImage"; + private IPixlrDAO pixlrDAO = null; private IPixlrSessionDAO pixlrSessionDAO = null; @@ -150,7 +152,6 @@ return null; } - @SuppressWarnings("unchecked") public ToolSessionExportOutputData exportToolSession(List ToolSessionIds) throws DataMissingException, ToolException { @@ -218,24 +219,38 @@ } public String copyImage(Pixlr toContent) throws Exception { - String newFileName = FileUtil.generateUniqueContentFolderID() + ".jpg"; String realBaseDir = Configuration.get(ConfigurationKeys.LAMS_EAR_DIR) + File.separator + FileUtil.LAMS_WWW_DIR + File.separator + "images" + File.separator + "pixlr"; File existingFile = new File(realBaseDir + File.separator + toContent.getImageFileName()); - File newFile = new File(realBaseDir + File.separator + newFileName); - FileOutputStream out = new FileOutputStream(newFile); - FileInputStream in = new FileInputStream(existingFile); - byte[] buf = new byte[1024]; - int len; - while ((len = in.read(buf)) > 0) { - out.write(buf, 0, len); + if (existingFile.exists()) { + String ext = getFileExtension(toContent.getImageFileName()); + String newFileName = FileUtil.generateUniqueContentFolderID() + ext; + + String newFilePath = realBaseDir + File.separator + newFileName; + copyFile(existingFile, newFilePath); + return newFileName; + } else { + return null; } - return newFileName; } + public void copyFile(File srcFile, String destPath) throws Exception { + if (srcFile.exists() && srcFile.canRead()) { + File newFile = new File(destPath); + FileOutputStream out = new FileOutputStream(newFile); + FileInputStream in = new FileInputStream(srcFile); + byte[] buf = new byte[1024]; + int len; + while ((len = in.read(buf)) > 0) { + out.write(buf, 0, len); + } + } + + } + public void setAsDefineLater(Long toolContentId, boolean value) throws DataMissingException, ToolException { Pixlr pixlr = pixlrDAO.getByContentId(toolContentId); if (pixlr == null) { @@ -283,6 +298,32 @@ pixlr = Pixlr.newInstance(pixlr, toolContentId, null); pixlr.setToolContentHandler(null); pixlr.setPixlrSessions(null); + + // bundling the author image in export + try { + if (pixlr.getImageFileName() != null) { + File imageFile = new File(PixlrConstants.LAMS_PIXLR_BASE_DIR + File.separator + + pixlr.getImageFileName()); + if (imageFile.exists()) { + + String ext = getFileExtension(pixlr.getImageFileName()); + + String tempDir = rootPath + File.separator + toolContentId.toString(); + File tempDirFile = new File(tempDir); + if (!tempDirFile.exists()) { + tempDirFile.mkdirs(); + } + String newFilePath = tempDir + File.separator + EXPORT_IMAGE_FILE_NAME + ext; + + copyFile(imageFile, newFilePath); + pixlr.setImageFileName(EXPORT_IMAGE_FILE_NAME + ext); + } + } + + } catch (Exception e) { + logger.error("Could not export pixlr image, image may be missing in export", e); + } + Set atts = pixlr.getPixlrAttachments(); for (PixlrAttachment att : atts) { att.setPixlr(null); @@ -321,12 +362,40 @@ pixlr.setToolContentId(toolContentId); pixlr.setCreateBy(new Long(newUserUid.longValue())); + // Copying the image file into lams_www.war/images/pixlr + File imageFile = new File(toolContentPath + File.separator + pixlr.getImageFileName()); + + if (imageFile.exists() && imageFile.canRead()) { + + String newFileName = FileUtil.generateUniqueContentFolderID() + + getFileExtension(pixlr.getImageFileName()); + + String newFilePath = PixlrConstants.LAMS_PIXLR_BASE_DIR + File.separator + newFileName; + + copyFile(imageFile, newFilePath); + pixlr.setImageFileName(newFileName); + } else { + pixlr.setImageFileName(PixlrConstants.DEFAULT_IMAGE_FILE_NAME); + } + pixlrDAO.saveOrUpdate(pixlr); } catch (ImportToolContentException e) { throw new ToolException(e); + } catch (Exception e) { + logger.error("Error during import possibly because of file copy error", e); + throw new ToolException(e); } } + public String getFileExtension(String fileName) { + String ext = ""; + int i = fileName.lastIndexOf('.'); + if (i > 0 && i < fileName.length() - 1) { + ext += "." + fileName.substring(i + 1).toLowerCase(); + } + return ext; + } + /** * Get the definitions for possible output for an activity, based on the * toolContentId. These may be definitions that are always available for the @@ -537,7 +606,6 @@ /* ===============Methods implemented from ToolContentImport102Manager =============== */ - /** * Import the data for a 1.0.2 Pixlr */ Index: lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/util/PixlrConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/util/PixlrConstants.java,v diff -u -r1.1 -r1.2 --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/util/PixlrConstants.java 7 Jan 2009 22:37:49 -0000 1.1 +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/util/PixlrConstants.java 8 Jan 2009 00:23:58 -0000 1.2 @@ -24,8 +24,11 @@ package org.lamsfoundation.lams.tool.pixlr.util; +import java.io.File; + import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.FileUtil; public interface PixlrConstants { public static final String TOOL_SIGNATURE = "lapixl10"; @@ -62,4 +65,7 @@ public static final String ERROR_MSG_FILE_UPLOAD = "error.file.upload.failed"; public static final String LAMS_WWW_PIXLR_FOLDER_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/www/images/pixlr/"; + public static final String LAMS_PIXLR_BASE_DIR = Configuration.get(ConfigurationKeys.LAMS_EAR_DIR) + File.separator + FileUtil.LAMS_WWW_DIR + + File.separator + "images" + File.separator + "pixlr"; + } Index: lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/web/actions/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/web/actions/AuthoringAction.java,v diff -u -r1.1 -r1.2 --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/web/actions/AuthoringAction.java 7 Jan 2009 22:37:48 -0000 1.1 +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/web/actions/AuthoringAction.java 8 Jan 2009 00:23:58 -0000 1.2 @@ -92,9 +92,7 @@ private static final String KEY_UNSAVED_OFFLINE_FILES = "unsavedOfflineFiles"; private static final String KEY_DELETED_FILES = "deletedFiles"; - private static final String LAMS_PIXLR_BASE_DIR = Configuration.get(ConfigurationKeys.LAMS_EAR_DIR) + File.separator + FileUtil.LAMS_WWW_DIR - + File.separator + "images" + File.separator + "pixlr"; - + /** * Default method when no dispatch parameter is specified. It is expected * that the parameter toolContentID will be passed in. This @@ -576,19 +574,26 @@ String filename = PixlrConstants.DEFAULT_IMAGE_FILE_NAME; + // set up pixlrService + if (pixlrService == null) { + pixlrService = PixlrServiceProxy.getPixlrService(this.getServlet().getServletContext()); + } + if (imageForm.getFile() != null) { // check the directory exists, then create it if it doesnt - File pixlrDir = new File(LAMS_PIXLR_BASE_DIR); + File pixlrDir = new File(PixlrConstants.LAMS_PIXLR_BASE_DIR); if (!pixlrDir.exists()) { pixlrDir.mkdirs(); } - filename = FileUtil.generateUniqueContentFolderID() + ".jpg"; - String fileWriteName = LAMS_PIXLR_BASE_DIR + File.separator + filename; + FormFile formFile = imageForm.getFile(); + + filename = FileUtil.generateUniqueContentFolderID() + pixlrService.getFileExtension(formFile.getFileName()); + String fileWriteName = PixlrConstants.LAMS_PIXLR_BASE_DIR + File.separator + filename; File uploadFile = new File(fileWriteName); FileOutputStream out = new FileOutputStream(uploadFile); - FormFile formFile = imageForm.getFile(); + out.write(formFile.getFileData()); // Now save the image size