X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.client.rap%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Frap%2FOpenJcrFileService.java;fp=org.argeo.slc.client.rap%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Frap%2FOpenJcrFileService.java;h=0000000000000000000000000000000000000000;hb=2db415932b071525adb52c6374e021174512a924;hp=a4dfaf42c696bd89822fdc61ebaec6ab8344f099;hpb=7e2f6c6ae08e97925955184aaa29035ac05de149;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.client.rap/src/main/java/org/argeo/slc/client/rap/OpenJcrFileService.java b/org.argeo.slc.client.rap/src/main/java/org/argeo/slc/client/rap/OpenJcrFileService.java deleted file mode 100644 index a4dfaf42c..000000000 --- a/org.argeo.slc.client.rap/src/main/java/org/argeo/slc/client/rap/OpenJcrFileService.java +++ /dev/null @@ -1,98 +0,0 @@ -package org.argeo.slc.client.rap; - -import java.io.IOException; -import java.io.InputStream; - -import javax.jcr.Node; -import javax.jcr.Property; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.io.IOUtils; -import org.argeo.jcr.JcrUtils; -import org.argeo.slc.SlcException; -import org.eclipse.rwt.RWT; -import org.eclipse.rwt.service.IServiceHandler; - -/** - * Basic Default service handler that retrieves a file from a NT_FILE JCR node - * and launch the download. - */ -public class OpenJcrFileService implements IServiceHandler { - - /* DEPENDENCY INJECTION */ - final private Node fileNode; - - public OpenJcrFileService(Node fileNode) { - this.fileNode = fileNode; - } - - public void service() throws IOException, ServletException { - // Get the file content - byte[] download = getFileAsByteArray(); - - // Send the file in the response - HttpServletResponse response = RWT.getResponse(); - response.setContentType("application/octet-stream"); - response.setContentLength(download.length); - String contentDisposition = null; - try { - contentDisposition = "attachment; filename=\"" - + JcrUtils.lastPathElement(fileNode.getPath()) + "\""; - } catch (RepositoryException e) { - throw new SlcException("Error while getting file Path " + fileNode, - e); - } - response.setHeader("Content-Disposition", contentDisposition); - - try { - response.getOutputStream().write(download); - } catch (IOException ioe) { - throw new SlcException("Error while writing the file " + fileNode - + " to the servlet response", ioe); - } - } - - protected byte[] getFileAsByteArray() { - - Session businessSession = null; - try { - boolean isValid = true; - Node child = null; - if (!fileNode.isNodeType(NodeType.NT_FILE)) - isValid = false; - else { - child = fileNode.getNode(Property.JCR_CONTENT); - if (!(child.isNodeType(NodeType.NT_RESOURCE) || child - .hasProperty(Property.JCR_DATA))) - isValid = false; - } - - if (!isValid) - return null; - - byte[] ba = null; - InputStream fis = null; - try { - fis = (InputStream) child.getProperty(Property.JCR_DATA) - .getBinary().getStream(); - ba = IOUtils.toByteArray(fis); - } catch (Exception e) { - throw new SlcException("Stream error while opening file " - + fileNode, e); - } finally { - IOUtils.closeQuietly(fis); - } - return ba; - - } catch (RepositoryException e) { - throw new SlcException("Unexpected error while " - + "opening file node " + fileNode, e); - } finally { - JcrUtils.logoutQuietly(businessSession); - } - } -} \ No newline at end of file