Mercurial > hg > human-echolocation-java-webapp
changeset 43:eda40f334135
Merge
author | Chris Cannam |
---|---|
date | Tue, 25 Feb 2014 16:50:01 +0000 |
parents | 65a26b38bf43 (diff) 2a104856cdd8 (current diff) |
children | 7259e560bb1e |
files | INSTALL.txt WebContent/WEB-INF/lib/javabuilder.jar |
diffstat | 14 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:50:01 2014 +0000 @@ -0,0 +1,2 @@ +syntax: glob +*.class
--- a/INSTALL.txt Tue Feb 25 14:47:51 2014 +0000 +++ b/INSTALL.txt Tue Feb 25 16:50:01 2014 +0000 @@ -58,7 +58,7 @@ == Building the Web Application (echoapp.war) == -3. Run 'ant build.xml'. This should create the echoapp.war file. If +3. Run 'ant -f build.xml'. This should create the echoapp.war file. If this fails, follow "Compiling and Generating the echoapp.war file" instructions below. @@ -75,7 +75,7 @@ == Compiling and Generating the echoapp.war file == -Note: You only need to follow this instructions if run 'ant build.xml' +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 @@ -110,7 +110,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'. +To compile isvr.jar, simply run 'ant -f build-isvr.xml'. If this fails, you may be able to recompile the MATLAB component by running the following MCC command:
--- a/WebContent/WEB-INF/README.txt Tue Feb 25 14:47:51 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 Tue Feb 25 14:47:51 2014 +0000 +++ b/WebContent/WEB-INF/classes/log4j.properties Tue Feb 25 16:50:01 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 Tue Feb 25 14:47:51 2014 +0000 +++ b/WebContent/index.jsp Tue Feb 25 16:50:01 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:50:01 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 Tue Feb 25 14:47:51 2014 +0000 +++ b/src/HumanEchoServlet.java Tue Feb 25 16:50:01 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')