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
Binary file WebContent/WEB-INF/lib/javabuilder.jar has changed
Binary file WebContent/header_bg.jpg has changed
--- 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}"/>&amp;azim=<c:out value="${azim}"/>&amp;dirweight=<c:out value="${dirweight}"/>&amp;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}"/>&amp;azim=<c:out value="${azim}"/>&amp;dirweight=<c:out value="${dirweight}"/>&amp;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;
+}
+
Binary file WebContent/soton-logo.png has changed
Binary file doc/matlab-webapp-50alpha.png has changed
Binary file doc/matlab-webapp.png has changed
Binary file doc/matlab-webapp.xcf has changed
Binary file hrir_final.mat has changed
--- 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')