Mercurial > hg > human-echolocation-java-webapp
changeset 42:65a26b38bf43
Some debug output, and work toward neatening the jsp &c
author | Chris Cannam |
---|---|
date | Tue, 25 Feb 2014 16:46:12 +0000 |
parents | 65338d2507bc |
children | eda40f334135 |
files | .hgignore INSTALL.txt WebContent/WEB-INF/README.txt WebContent/WEB-INF/classes/log4j.properties WebContent/WEB-INF/logs/.keep WebContent/header_bg.jpg WebContent/index.jsp WebContent/screen.css WebContent/soton-logo.png hrir_final.mat src/HumanEchoServlet.java |
diffstat | 10 files changed, 175 insertions(+), 118 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Tue Feb 25 16:46:12 2014 +0000 @@ -0,0 +1,2 @@ +syntax: glob +*.class
--- a/INSTALL.txt Fri Feb 14 15:24:09 2014 +0000 +++ b/INSTALL.txt Tue Feb 25 16:46:12 2014 +0000 @@ -40,7 +40,7 @@ == Building the Web Application (echoapp.war) == -3. Run 'ant build.xml'. This should create the echoapp.war file. In case this fails, follow "Compiling and Generating the echoapp.war file" instructions below. +3. Run 'ant -f build.xml'. This should create the echoapp.war file. In case this fails, follow "Compiling and Generating the echoapp.war file" instructions below. 4. Copy the echoapp.war file to your web server's webapps folder: @@ -55,7 +55,7 @@ == Compiling and Generating the echoapp.war file == -Note: You only need to follow this instructions if run 'ant build.xml' correctly and you were unable to generate the echoapp.war file. The steps described in this section assume that you already have a working version of the isvr.jar package. The isvr.jar file should be located in WebContent/WEB-INF/lib/isvr.jar. +Note: You only need to follow this instructions if run 'ant -f build.xml' correctly and you were unable to generate the echoapp.war file. The steps described in this section assume that you already have a working version of the isvr.jar package. The isvr.jar file should be located in WebContent/WEB-INF/lib/isvr.jar. 1. Copy the deployed component from the scratch folder to the web applications lib folder .\WebContent\WEB-INF\lib @@ -82,7 +82,7 @@ You can only compile the isvr.jar if you have MATLAB and the JavaBuilder toolbox: please check this with you systems administrator. -To compile isvr.jar, simply run 'ant build-isvr.xml'. If this fails you can recompile the MATLAB component by running the following MCC command: +To compile isvr.jar, simply run 'ant -f build-isvr.xml'. If this fails you can recompile the MATLAB component by running the following MCC command: /Applications/MATLAB_R2013b.app/bin/mcc -W "java:uk.ac.soton.isvr,HumanEcho" -d ./scratch -T "link:lib" -v "class{HumanEcho:./WebContent/WEB-INF/mcode/gen_echo.m}"
--- a/WebContent/WEB-INF/README.txt Fri Feb 14 15:24:09 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -You need to copy the following files to this folder: - -Copy the javabuilder.jar file from your MATLAB or MCR install root in -the directory /toolbox/javabuilder/jar/javabuilder.jar to the web -applications lib folder ./webapp/WEB-INF/lib - - - -You should copy the generated JAR file here: - -cp ./scratch/examples.jar ./webapp/WEB-INF/lib - - -
--- a/WebContent/WEB-INF/classes/log4j.properties Fri Feb 14 15:24:09 2014 +0000 +++ b/WebContent/WEB-INF/classes/log4j.properties Tue Feb 25 16:46:12 2014 +0000 @@ -1,5 +1,5 @@ log4j.appender.file=org.apache.log4j.FileAppender -log4j.appender.file.File=${appRootPath}WEB-INF/logs/EchoWebApp.log +log4j.appender.file.File=${appRootPath}/WEB-INF/logs/EchoWebApp.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%n log4j.appender.file.append=true @@ -7,4 +7,4 @@ # log levels log4j.rootCategory=ALL, file log4j.logger.com.saral=debug -log4j.logger.org.eclipse=debug \ No newline at end of file +log4j.logger.org.eclipse=debug
--- a/WebContent/index.jsp Fri Feb 14 15:24:09 2014 +0000 +++ b/WebContent/index.jsp Tue Feb 25 16:46:12 2014 +0000 @@ -1,101 +1,112 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> - <head> - <title>Human Echolocation</title> - <link rel="Stylesheet" type="text/css" media=all href="./StyleSheet.css" /> - <link href="StyleSheet.css" rel="stylesheet" type="text/css" /> + <head> + <title>Human Echolocation</title> + <link href="http://fonts.googleapis.com/css?family=Mako" rel="stylesheet" type="text/css"> + <link href="screen.css" rel="stylesheet" type="text/css" /> - <!-- no default value for distance --> - <c:choose> - <c:when test="${not empty param.dist}"> - <c:set var="dist" value="${param.dist}" /> - <c:set var="distSet" value="true" /> - </c:when> - <c:otherwise> - <c:set var="distSet" value="false" /> - </c:otherwise> - </c:choose> + <!-- no default value for distance --> + <c:choose> + <c:when test="${not empty param.dist}"> + <c:set var="dist" value="${param.dist}" /> + <c:set var="distSet" value="true" /> + </c:when> + <c:otherwise> + <c:set var="distSet" value="false" /> + </c:otherwise> + </c:choose> - <!-- Default values for remaining parameters --> - <c:set var="azim" value="0" /> - <c:set var="dirweight" value="0.2" /> - <c:set var="orient" value="horz" /> + <!-- Default values for remaining parameters --> + <c:set var="azim" value="0" /> + <c:set var="dirweight" value="0.2" /> + <c:set var="orient" value="horz" /> - <c:if test="${not empty param.azim}"> - <c:set var="azim" value="${param.azim}" /> - </c:if> - <c:if test="${not empty param.dirweight}"> - <c:set var="dirweight" value="${param.dirweight}" /> - </c:if> - <c:if test="${not empty param.orient}"> - <c:set var="orient" value="${param.orient}" /> - </c:if> + <c:if test="${not empty param.azim}"> + <c:set var="azim" value="${param.azim}" /> + </c:if> + <c:if test="${not empty param.dirweight}"> + <c:set var="dirweight" value="${param.dirweight}" /> + </c:if> + <c:if test="${not empty param.orient}"> + <c:set var="orient" value="${param.orient}" /> + </c:if> - </head> + </head> - <body> - <form action="index.jsp" method="get"> - <div style="text-align: center"> - <table width="760" cellpadding="0" cellspacing="0"> - <tr> - <td><img src="header_bg.jpg" alt="Header Image Not Found" width="779" height="72" /></td> - </tr> - </table> - <br /> + <body> + <!-- NB the form submits back to this very page --> + <form action="index.jsp" method="get"> + <table width="100%" cellpadding="0" cellspacing="0"> + <tr> + <td align="right"><img src="soton-logo.png" alt="University of Southampton"/></td> + </tr> + </table> + <br /> + + <h1>Human Echolocation WebApp Test Page</h1> + + <h2>Simulated environment</h2> + <table> + <tr> + <th>Distance<br> + <span class="description">In metres. Typical value: 0.9</span> + </th> + <td><input type="text" name="dist" size="8" value="${dist}"></td> + </tr> + <tr> + <th>Azimuth<br> + <span class="description">-17 to +17</span> + </th> + <td><input type="text" name="azim" size="8" value="${azim}" ></td> + </tr> + <tr> + <th>Orientation</th> + <td> + <input type="radio" name="orient" value="horz" checked> Horizontal<br> + <input type="radio" name="orient" value="angled"> Angled + </td> + </tr> + <tr> + <th>Dirweight<br> + <span class="description">Controls how easy it is to distinguish whether the reflector is to the left or the right (the lower dirweight is, the easier).</span> + </th> + <td> + <input type="text" name="dirweight" size="8" value="${dirweight}"> + <br /> + </td> + </tr> + <tr> + <td></td> + <td> + <input type="submit" value="Generate audio"> + </td> + </tr> + </table> + </form> - <h1>Human Echolocation WebApp Example Page</h1> + <div class="player"> + <c:choose> + <c:when test="${distSet==true}"> + <embed src="/echoapp/HumanEcho?dist=<c:out value="${dist}"/>&azim=<c:out value="${azim}"/>&dirweight=<c:out value="${dirweight}"/>&orient=<c:out value="${orient}"/>" type="audio/x-wav"/> + </c:when> + <c:otherwise> + <c:out value="Please set the distance parameter and select 'Generate audio'"/> + </c:otherwise> + </c:choose> + </div> + <br /> - Input parameters: - <br /> - Distance (typical value: 0.9): - <input type="text" name="dist" size="8" value="${dist}"> - <br /> - Azimuth (-17 to +17): - <input type="text" name="azim" size="8" value="${azim}" > - <br /> + <div class="debug"> + <h3>Debug info</h3> + <p> + Distance: <c:out value="${dist}"/>; + Azim: <c:out value="${azim}"/>; + Dirweight: <c:out value="${dirweight}"/>; + Orient: <c:out value="${orient}"/> + </p> + </div> - Orientation:<br> - <div align="left"><br> - <input type="radio" name="orient" value="horz" checked> Horizontal<br> - <input type="radio" name="orient" value="angled"> Angled<br /> - </div> - - - Dirweight (): - <input type="text" name="dirweight" size="8" value="${dirweight}"> - <br /> - <p class="description">Controls how easy it is to distinguish whether the reflector is to the left or the right (the lower .dirweight is, the easier).</p> - - <input type="submit" value="Generate"> - <br /> - - <br /> - </div> - </form> - - <div class="player"> - <c:choose> - <c:when test="${distSet==true}"> - <embed src="/echoapp/HumanEcho?dist=<c:out value="${dist}"/>&azim=<c:out value="${azim}"/>&dirweight=<c:out value="${dirweight}"/>&orient=<c:out value="${orient}"/>" type="audio/x-wav"/> - </c:when> - <c:otherwise> - <c:out value="Cowardly refusing to generate a player without distance parameter..."/> - </c:otherwise> - </c:choose> - </div> - <br /> - - <div class="debug"> - <h3>Debug info</h3> - <p> - Distance: <c:out value="${dist}"/>; - Azim: <c:out value="${azim}"/>; - Dirweight: <c:out value="${dirweight}"/>; - Orient: <c:out value="${orient}"/> - </p> - </div> - - </body> + </body> </html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebContent/screen.css Tue Feb 25 16:46:12 2014 +0000 @@ -0,0 +1,46 @@ +body { + font-size: 14pt; + font-family: Mako, sans-serif; + background-color: '#fffefa'; +} + +.debug { + border: 0.5px dashed; + font-size: 9pt; + font-family: monospace; + padding: 10 18; +} + +.player { + border: 0.25px solid; +} + +h1 { + text-align: center; +} + +h2 { + margin-left: 8%; +} + +table { + width: 80%; + margin-left: 8%; +} + +th { + vertical-align: top; + text-align: right; + width: 40%; +} + +td { + vertical-align: top; + text-align: left; +} + +th .description { + font-weight: normal; + font-size: 0.9em; +} +
--- a/src/HumanEchoServlet.java Fri Feb 14 15:24:09 2014 +0000 +++ b/src/HumanEchoServlet.java Tue Feb 25 16:46:12 2014 +0000 @@ -32,29 +32,39 @@ private HumanEcho echo; private static Logger logger = Logger.getLogger(HumanEchoServlet.class); - private String tempdir = ""; private String wavdir = ""; public void init(ServletConfig config) throws ServletException { super.init(config); - // reading properties file + System.err.println("In init"); + + logger.error("java.library.path is " + + System.getProperty("java.library.path")); + try { + // Read directory properties Properties properties = new Properties(); - properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("myapp.properties")); + properties.load + (Thread.currentThread().getContextClassLoader(). + getResourceAsStream("myapp.properties")); - //get the property value and print it out - tempdir = properties.getProperty("tmpdir"); wavdir = properties.getProperty("outdir"); + System.err.println("WAV file directory is " + wavdir); + } catch (IOException e) { e.printStackTrace(); } try { + // Test that we can construct one of the MATLAB objects + + long before = System.currentTimeMillis(); echo = new HumanEcho(); - } - catch(MWException e) { + long after = System.currentTimeMillis(); + System.err.println("Created a HumanEcho object: it took " + (after - before) + " ms"); + } catch (MWException e) { e.printStackTrace(); } } @@ -62,7 +72,7 @@ public void destroy() { super.destroy(); - if(echo!=null) { + if (echo != null) { echo.dispose(); } } @@ -75,20 +85,22 @@ logger.info("String azim is: " + request.getParameter("azim")); Float azim = Float.parseFloat(request.getParameter("azim")); - - - MWStructArray Input = null; HumanEcho echo; String outputfname = new String(); + System.err.println("In doGet"); + try { + //!!! erch, shouldn't be creating a new one on each request as well as a global one echo = new HumanEcho(); logger.error("We are logging!"); logger.warn(System.getProperty("catalina.base")); + System.err.println("Done some logging"); + System.err.println(System.getProperty("catalina.base")); // Matlab structure: // Input = struct('dist', 0.9, 'azim', 0, 'orient', 'horz', 'dirweight', 0.2, 'outputfname', 'foo.wav')