diff src/HumanEchoServlet.java @ 28:52adafab20c1

The Servlet now sends the audio file to the browser;
author luisf <luis.figueira@eecs.qmul.ac.uk>
date Tue, 10 Dec 2013 12:02:46 +0000
parents 1d1122584af9
children 0c66cff0d1cc
line wrap: on
line diff
--- a/src/HumanEchoServlet.java	Mon Dec 09 16:57:52 2013 +0000
+++ b/src/HumanEchoServlet.java	Tue Dec 10 12:02:46 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * HumanEchoServlet 
+ * HumanEchoServlet
  *
  * Version information
  *
@@ -11,14 +11,14 @@
 import java.util.Properties;
 import java.io.IOException;
 
+import java.io.FileInputStream;
+import java.io.BufferedInputStream;
+import java.io.File;
+
 import org.apache.log4j.Logger;
 
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.ServletException;
-import javax.servlet.ServletConfig;
-import javax.servlet.RequestDispatcher;
+import javax.servlet.*;
+import javax.servlet.http.*;
 
 import com.mathworks.toolbox.javabuilder.MWJavaObjectRef;
 import com.mathworks.toolbox.javabuilder.MWNumericArray;
@@ -30,8 +30,10 @@
 
 public class HumanEchoServlet extends HttpServlet {
     private HumanEcho echo;
+    private static Logger logger = Logger.getLogger(HumanEchoServlet.class);
 
-    private static Logger logger = Logger.getLogger(HumanEchoServlet.class);
+    private String tempdir = "";
+    private String wavdir = "";
 
     public void init(ServletConfig config) throws ServletException {
         super.init(config);
@@ -42,8 +44,8 @@
             properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("myapp.properties"));
 
             //get the property value and print it out
-            System.out.println(properties.getProperty("tmpdir"));
-            System.out.println(properties.getProperty("outdir"));
+            tempdir = properties.getProperty("tmpdir");
+            wavdir = properties.getProperty("outdir");
 
         } catch (IOException e) {
             e.printStackTrace();
@@ -72,10 +74,14 @@
         MWStructArray Input = null;
         HumanEcho echo;
 
+        String outputfname = new String();
+
         try {
             echo = new HumanEcho();
 
             logger.error("We are logging!");
+            logger.warn(System.getProperty("catalina.base"));
+
 
             // Matlab structure:
             // Input = struct('dist', 0.9, 'azim', 0, 'orient', 'horz', 'dirweight', 0.2, 'outputfname', 'foo.wav')
@@ -92,7 +98,7 @@
             sb.append("e_d");
             sb.append(dist);
             sb.append(".wav");
-            String outputfname = sb.toString();
+            outputfname = sb.toString();
 
             Input.set("outputfname", 1, outputfname);
 
@@ -103,35 +109,42 @@
             e.printStackTrace();
         }
 
+        // Creating the stream
+        ServletOutputStream stream = null;
+        BufferedInputStream buf = null;
+
+        try{
+            stream = response.getOutputStream();
+            File wavfile = new File(outputfname);
+
+            //set response headers
+            response.setContentType("audio/wav");
+            response.addHeader("Content-Disposition","attachment; filename=" + outputfname );
+            response.setContentLength( (int) wavfile.length( ) );
+
+            FileInputStream input = new FileInputStream(wavfile);
+            buf = new BufferedInputStream(input);
+            int readBytes = 0;
+
+            //read from the file; write to the ServletOutputStream
+            while((readBytes = buf.read( )) != -1)
+                stream.write(readBytes);
+
+        } catch (IOException ioe){
+            throw new ServletException(ioe.getMessage( ));
+        } finally {
+            //close the input/output streams
+            if(stream != null)
+                stream.close( );
+
+            if(buf != null)
+                buf.close( );
+          }
+
         System.out.println("MCRROOT: " + System.getenv("MCRROOT"));
         System.out.println("PATH: " + System.getenv("PATH"));
         System.out.println(MCRConfiguration.isInstalledMCR());
 
-
-        StringBuffer buffer = new StringBuffer();
-
-        buffer.append("<BR>");
-        buffer.append("<BR>");
-
-        buffer.append("worked, ?");
-
-        buffer.append("<BR>");
-        buffer.append("<BR>");
-
-/*
-        buffer.append("<TABLE >");
-        for (double[] row : square)
-        {
-            buffer.append("<TR>");
-            for (double value : row)
-            {
-                buffer.append("<TH>");
-                buffer.append(new Double(value).intValue());
-            }
-        }
-        buffer.append("</TABLE>");
-        buffer.append("<BR>");
-        response.getOutputStream().print(buffer.toString());
-*/
+        logger.warn("tmpdir " + tempdir);
     }
 }