Mercurial > hg > human-echolocation-java-webapp
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); } }