You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/02/17 07:24:43 UTC

svn commit: r1783336 - in /openmeetings/application: branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/

Author: solomax
Date: Fri Feb 17 07:24:43 2017
New Revision: 1783336

URL: http://svn.apache.org/viewvc?rev=1783336&view=rev
Log:
[OPENMEETINGS-1563] 'original' download works as expected

Modified:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1783336&r1=1783335&r2=1783336&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java Fri Feb 17 07:24:43 2017
@@ -18,8 +18,18 @@
  */
 package org.apache.openmeetings.web.common.tree;
 
-import java.io.File;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_SWF;
 
+import java.io.File;
+import java.io.FileFilter;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.util.resource.FileResourceStream;
 
@@ -48,9 +58,39 @@ public class DownloadMenuItem extends Me
 
 	@Override
 	public void onClick(AjaxRequestTarget target) {
-		File f = tree.getLastSelected().getFile(ext);
-		tree.downloader.setFileName(f.getName());
-		tree.downloader.setResourceStream(new FileResourceStream(f));
-		tree.downloader.initiate(target);
+		FileItem fi = tree.getLastSelected();
+		File f = fi.getFile(ext);
+		if (f != null && f.exists()) {
+			if (ext == null && (Type.Image == fi.getType() || Type.Presentation == fi.getType())) {
+				File[] ff = f.getParentFile().listFiles(new OriginalFilter(fi, ext));
+				if (ff.length > 0) {
+					f = ff[0];
+				}
+			}
+			tree.downloader.setFileName(f.getName());
+			tree.downloader.setResourceStream(new FileResourceStream(f));
+			tree.downloader.initiate(target);
+		}
+	}
+
+	private static class OriginalFilter implements FileFilter {
+		final FileItem fi;
+		Set<String> exclusions = new HashSet<>();
+
+		OriginalFilter(FileItem fi, String ext) {
+			this.fi = fi;
+			exclusions.add(EXTENSION_JPG);
+			if (Type.Presentation == fi.getType()) {
+				exclusions.add(EXTENSION_PDF);
+				exclusions.add(EXTENSION_SWF);
+			}
+		}
+
+		@Override
+		public boolean accept(File f) {
+			String n = f.getName();
+			String ext = OmFileHelper.getFileExt(n);
+			return n.startsWith(fi.getHash()) && !exclusions.contains(ext);
+		}
 	}
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1783336&r1=1783335&r2=1783336&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Fri Feb 17 07:24:43 2017
@@ -75,7 +75,14 @@ public abstract class FileTreePanel exte
 	protected final IModel<String> publicSize = Model.of((String)null);
 	final ConvertingErrorsDialog errorsDialog = new ConvertingErrorsDialog("errors", Model.of((Recording)null));
 	final FileItemTree tree;
-	final AjaxSplitButton download = new AjaxSplitButton("download", new ArrayList<IMenuItem>());
+	final AjaxSplitButton download = new AjaxSplitButton("download", new ArrayList<IMenuItem>()) {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, IMenuItem item) {
+			item.onClick(target);
+		}
+	};
 	private final Form<Void> form = new Form<Void>("form");
 	private final AddFolderDialog addFolder;
 	private final ConfirmableBorderDialog trashConfirm;

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1783336&r1=1783335&r2=1783336&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java Fri Feb 17 07:24:43 2017
@@ -18,8 +18,18 @@
  */
 package org.apache.openmeetings.web.common.tree;
 
-import java.io.File;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_SWF;
 
+import java.io.File;
+import java.io.FileFilter;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.util.resource.FileResourceStream;
 
@@ -48,9 +58,39 @@ public class DownloadMenuItem extends Me
 
 	@Override
 	public void onClick(AjaxRequestTarget target) {
-		File f = tree.getLastSelected().getFile(ext);
-		tree.downloader.setFileName(f.getName());
-		tree.downloader.setResourceStream(new FileResourceStream(f));
-		tree.downloader.initiate(target);
+		FileItem fi = tree.getLastSelected();
+		File f = fi.getFile(ext);
+		if (f != null && f.exists()) {
+			if (ext == null && (Type.Image == fi.getType() || Type.Presentation == fi.getType())) {
+				File[] ff = f.getParentFile().listFiles(new OriginalFilter(fi, ext));
+				if (ff.length > 0) {
+					f = ff[0];
+				}
+			}
+			tree.downloader.setFileName(f.getName());
+			tree.downloader.setResourceStream(new FileResourceStream(f));
+			tree.downloader.initiate(target);
+		}
+	}
+
+	private static class OriginalFilter implements FileFilter {
+		final FileItem fi;
+		Set<String> exclusions = new HashSet<>();
+
+		OriginalFilter(FileItem fi, String ext) {
+			this.fi = fi;
+			exclusions.add(EXTENSION_JPG);
+			if (Type.Presentation == fi.getType()) {
+				exclusions.add(EXTENSION_PDF);
+				exclusions.add(EXTENSION_SWF);
+			}
+		}
+
+		@Override
+		public boolean accept(File f) {
+			String n = f.getName();
+			String ext = OmFileHelper.getFileExt(n);
+			return n.startsWith(fi.getHash()) && !exclusions.contains(ext);
+		}
 	}
 }

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1783336&r1=1783335&r2=1783336&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Fri Feb 17 07:24:43 2017
@@ -75,7 +75,14 @@ public abstract class FileTreePanel exte
 	protected final IModel<String> publicSize = Model.of((String)null);
 	final ConvertingErrorsDialog errorsDialog = new ConvertingErrorsDialog("errors", Model.of((Recording)null));
 	final FileItemTree tree;
-	final AjaxSplitButton download = new AjaxSplitButton("download", new ArrayList<IMenuItem>());
+	final AjaxSplitButton download = new AjaxSplitButton("download", new ArrayList<IMenuItem>()) {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected void onSubmit(AjaxRequestTarget target, IMenuItem item) {
+			item.onClick(target);
+		}
+	};
 	private final Form<Void> form = new Form<Void>("form");
 	private final AddFolderDialog addFolder;
 	private final ConfirmableBorderDialog trashConfirm;