From e8406ba7d695b0a2e50ae93e6ab48bb3fd413885 Mon Sep 17 00:00:00 2001
From: Schankula Christopher <schankuc@mcmaster.ca>
Date: Thu, 22 Mar 2018 19:36:37 -0400
Subject: [PATCH] make index a jsp page; a few other tweaks

---
 makefile                                      |   2 +-
 src/model/TrawlExpert.java                    |  21 +-
 src/web/Director.java                         |  42 ++-
 src/web/StartUpContext.java                   |   5 +-
 .../logs/localhost_access_log.2018-03-22.txt  | 124 +++++++++
 .../WEB-INF/{ => lib}/json-simple-1.1.1.jar   | Bin
 tomcat/webapps/Trawl/WEB-INF/web.xml          |   2 +-
 .../webapps/Trawl/{index.html => index.jsp}   |  27 +-
 tomcat/webapps/Trawl/result.jsp               |   6 +-
 .../Trawl/org/apache/jsp/index_jsp.java       | 248 ++++++++++++++++++
 .../Trawl/org/apache/jsp/result_jsp.java      |   8 +-
 11 files changed, 452 insertions(+), 33 deletions(-)
 rename tomcat/webapps/Trawl/WEB-INF/{ => lib}/json-simple-1.1.1.jar (100%)
 rename tomcat/webapps/Trawl/{index.html => index.jsp} (85%)
 create mode 100644 tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/index_jsp.java

diff --git a/makefile b/makefile
index 649d3de..0c059ed 100644
--- a/makefile
+++ b/makefile
@@ -1,7 +1,7 @@
 server:
 	cp -rf bin/* tomcat/webapps/Trawl/WEB-INF/classes
 
-start:
+start: server
 	tomcat/bin/startup.sh
 
 stop:
diff --git a/src/model/TrawlExpert.java b/src/model/TrawlExpert.java
index a9dd6d4..f6fa8c3 100644
--- a/src/model/TrawlExpert.java
+++ b/src/model/TrawlExpert.java
@@ -11,10 +11,25 @@ import sort.KDT;
 
 public class TrawlExpert {
 	public TrawlExpert() {
-		
+		//load data
+		DataStore.records = new KDT<Record>("data/kdt.ser");
+		try {
+			BioTree.init("data/biotree/");
+			DataStore.records = new KDT<Record>("data/kdt.ser");
+		} catch (Exception e0) {
+			try {
+				BioTree.init();
+				FileProcessor.initProcessing();
+			} catch (NumberFormatException | ParseException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+			BioTree.write("data/biotree/");
+			DataStore.records.writeToFile("data/kdt.ser");
+		};
 	}
 	
-	public String sayHello() {
-		return "Hello";
+	public Iterable<Integer> listAllSpecies(){
+		return BioTree.getNonEmptyChildren(2);
 	}
 }
diff --git a/src/web/Director.java b/src/web/Director.java
index 7ba4b3c..6225be3 100755
--- a/src/web/Director.java
+++ b/src/web/Director.java
@@ -10,12 +10,46 @@ import model.*; // notice this
 
 public class Director extends HttpServlet {
 	public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
-	    String c = request.getParameter("phylum");
+	    String req = getUrlDoPortion(request);
+	    //if (req == "doBioLookup.do")
+	    		//doBioLookup(request, response);
+	    
+	    TrawlExpert te = (TrawlExpert)request.getServletContext().getAttribute("trawl");
+	    //very basic example of listing all species
+	    Iterable<Integer> result = te.listAllSpecies();
 
-	    long time = (long)request.getServletContext().getAttribute("time");
-
-	    request.setAttribute("time", time);
+	    request.setAttribute("species", result);
 	    RequestDispatcher view = request.getRequestDispatcher("result.jsp");
 	    view.forward(request, response);
     }
+	
+	private void doBioLookup(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+		//get answers from form
+		String phylum = request.getParameter("phylum");
+		String bioClass = request.getParameter("class");
+		String order = request.getParameter("order");
+		String family = request.getParameter("family");
+		String genus = request.getParameter("genus");
+		String species = request.getParameter("species");
+
+	    TrawlExpert te = (TrawlExpert)request.getServletContext().getAttribute("trawl");
+	    //find all applicable things underneath the top most one, need API for this
+	    
+	    //send lists of things to build the dropdowns
+	    request.setAttribute("phylum", result);
+	    request.setAttribute("bioClass", result);
+	    request.setAttribute("order", result);
+	    request.setAttribute("family", result);
+	    request.setAttribute("genus", result);
+	    request.setAttribute("species", result);
+	    //send back the index.jsp page
+	    RequestDispatcher view = request.getRequestDispatcher("index.jsp");
+	    view.forward(request, response);
+	}
+	
+	private String getUrlDoPortion(HttpServletRequest request) {
+		String url = (String) request.getRequestURL().toString();
+		String[] s = url.split("/");
+		return s[s.length - 1];
+	}
 }
\ No newline at end of file
diff --git a/src/web/StartUpContext.java b/src/web/StartUpContext.java
index 286d8ae..5425dc3 100644
--- a/src/web/StartUpContext.java
+++ b/src/web/StartUpContext.java
@@ -4,6 +4,8 @@ import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 import javax.servlet.annotation.WebListener;
 
+import model.TrawlExpert;
+
 //https://www.mkyong.com/servlet/what-is-listener-servletcontextlistener-example/
 @WebListener
 public class StartUpContext implements ServletContextListener{
@@ -16,6 +18,7 @@ public class StartUpContext implements ServletContextListener{
 	@Override
 	public void contextInitialized(ServletContextEvent serverEvent) {
 		System.out.println("Started server.");
-		serverEvent.getServletContext().setAttribute("time", (long) System.currentTimeMillis());
+		TrawlExpert te = new TrawlExpert();
+		serverEvent.getServletContext().setAttribute("trawl", te);
 	}
 }
\ No newline at end of file
diff --git a/tomcat/logs/localhost_access_log.2018-03-22.txt b/tomcat/logs/localhost_access_log.2018-03-22.txt
index 0253a73..f4bc48d 100644
--- a/tomcat/logs/localhost_access_log.2018-03-22.txt
+++ b/tomcat/logs/localhost_access_log.2018-03-22.txt
@@ -121,3 +121,127 @@
 0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:32:52 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
 0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:32:52 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 113
 0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:32:53 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:35:22 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 113
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:35:25 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 113
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:35:25 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:41:15 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 500 1430
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:46:42 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 404 1097
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:46:43 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:46:49 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 404 1097
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:18 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 404 1097
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:18 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:20 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 404 1097
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:22 -0400] "GET /Trawl/index.html HTTP/1.1" 404 1093
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:23 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:25 -0400] "GET /Trawl/index.html HTTP/1.1" 404 1093
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:25 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:26 -0400] "GET /Trawl/index.html HTTP/1.1" 404 1093
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:47:26 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:55:46 -0400] "GET /Trawl/index.html HTTP/1.1" 200 3755
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:55:46 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:55:48 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:55:52 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:55:52 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:57:08 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:57:08 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:57:14 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:59:01 -0400] "GET /Trawl/index.html HTTP/1.1" 404 1093
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:59:01 -0400] "GET / HTTP/1.1" 200 11450
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:59:02 -0400] "GET /Trawl/ HTTP/1.1" 200 3755
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:59:05 -0400] "GET /Trawl/index.html HTTP/1.1" 404 1093
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:59:08 -0400] "GET /Trawl/index.jsp HTTP/1.1" 200 3755
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:18:59:22 -0400] "GET /Trawl/ HTTP/1.1" 200 3755
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:07 -0400] "GET /Trawl/ HTTP/1.1" 200 3756
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:08 -0400] "GET / HTTP/1.1" 200 11450
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:13 -0400] "GET /Trawl HTTP/1.1" 302 -
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:13 -0400] "GET /Trawl/ HTTP/1.1" 200 3756
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:18 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:34 -0400] "GET /Trawl/? HTTP/1.1" 200 3756
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:02:37 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:04:44 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:04:57 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:04:59 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:04:59 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:05:00 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:05:01 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:05:03 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:05:03 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:05:05 -0400] "POST /Trawl/callServlet.do HTTP/1.1" 200 2513
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:05:05 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:06:46 -0400] "GET /Trawl/? HTTP/1.1" 200 3548
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:06:46 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:17 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:18 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:18 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:19 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:19 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:22 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 404 1097
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:10:59 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:11:00 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:11:00 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:11:02 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:15:58 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:15:58 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:15:58 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:15:58 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:15:59 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:16:00 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:17:04 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:17:04 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:17:06 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2555
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:22:51 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:22:52 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:22:53 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 500 1722
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:23:35 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2527
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:23:35 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:23:35 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:23:38 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2527
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:33:58 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:33:58 -0400] "GET /favicon.ico HTTP/1.1" 200 21630
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:04 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:09 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:15 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:15 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:15 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:17 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:30 -0400] "GET /Trawl/ HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:30 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:31 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:33 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:33 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:33 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:34 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:34 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:35 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:36 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:36 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:36 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:36 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:36 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:36 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:38 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:38 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:38 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:39 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:39 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:39 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:39 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:40 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:40 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:40 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:40 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:34:40 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:21 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:30 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:30 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:30 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:37 -0400] "POST /Trawl/doBioLookup.do HTTP/1.1" 200 2517
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:40 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:40 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:40 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:43 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:43 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:43 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:45 -0400] "GET /Trawl/? HTTP/1.1" 200 3551
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:45 -0400] "GET /Trawl/style.css HTTP/1.1" 200 821
+0:0:0:0:0:0:0:1 - - [22/Mar/2018:19:35:45 -0400] "GET /Trawl/script.js HTTP/1.1" 200 425
diff --git a/tomcat/webapps/Trawl/WEB-INF/json-simple-1.1.1.jar b/tomcat/webapps/Trawl/WEB-INF/lib/json-simple-1.1.1.jar
similarity index 100%
rename from tomcat/webapps/Trawl/WEB-INF/json-simple-1.1.1.jar
rename to tomcat/webapps/Trawl/WEB-INF/lib/json-simple-1.1.1.jar
diff --git a/tomcat/webapps/Trawl/WEB-INF/web.xml b/tomcat/webapps/Trawl/WEB-INF/web.xml
index 4787168..e647d8d 100644
--- a/tomcat/webapps/Trawl/WEB-INF/web.xml
+++ b/tomcat/webapps/Trawl/WEB-INF/web.xml
@@ -11,6 +11,6 @@
 
     <servlet-mapping>
         <servlet-name>Trawl</servlet-name>
-        <url-pattern>/callServlet.do</url-pattern>
+        <url-pattern>/doBioLookup.do</url-pattern>
     </servlet-mapping>
 </web-app>
\ No newline at end of file
diff --git a/tomcat/webapps/Trawl/index.html b/tomcat/webapps/Trawl/index.jsp
similarity index 85%
rename from tomcat/webapps/Trawl/index.html
rename to tomcat/webapps/Trawl/index.jsp
index c3cac77..f61cde9 100644
--- a/tomcat/webapps/Trawl/index.html
+++ b/tomcat/webapps/Trawl/index.jsp
@@ -1,3 +1,4 @@
+<%@ page import="java.util.*" %>
 <!--
 
 Double Handle Slider Modified from: http://jqueryui.com/slider/#range
@@ -41,7 +42,7 @@ Double Handle Slider Modified from: http://jqueryui.com/slider/#range
 
     <section id="options">
         <section id="nameDropdownIn">
-            <form method="POST" action="callServlet.do"> <!--.do extension is not necessary. This field is the servlet's url in web.xml-->
+            <form method="POST" action="doBioLookup.do"> <!--.do extension is not necessary. This field is the servlet's url in web.xml-->
                 Phylum:
                 <select name="phylum" size="1">
                     <option>Arthropoda</option>
@@ -49,39 +50,29 @@ Double Handle Slider Modified from: http://jqueryui.com/slider/#range
                     <option>Mollusca</option>
                 </select>
                 <input type="SUBMIT">
-            </form>
 
-            <form>
                 Class:
-                <select name="phylum" size="1">
+                <select name="class" size="1">
                 </select>
                 <!--<input type="SUBMIT">-->
-            </form>
 
-            <form>
                 Order:
-                <select name="phylum" size="1">
+                <select name="order" size="1">
                 </select>
                 <!--<input type="SUBMIT">-->
-            </form>
 
-            <form>
                 Family:
-                <select name="phylum" size="1">
+                <select name="family" size="1">
                 </select>
                 <!--<input type="SUBMIT">-->
-            </form>
 
-            <form>
                 Genus:
-                <select name="phylum" size="1">
+                <select name="genus" size="1">
                 </select>
                 <!--<input type="SUBMIT">-->
-            </form>
 
-            <form>
-                Scientific Name:
-                <select name="phylum" size="1">
+                Species:
+                <select name="species" size="1">
 
                 </select>
                 <!--<input type="SUBMIT">-->
@@ -104,7 +95,7 @@ Double Handle Slider Modified from: http://jqueryui.com/slider/#range
                 <input type="radio" name="gender" value="female"> Histogram
                 <input type="submit">
             </form>
-            <form>
+            <form method="POST" action=">
                 <input type="submit" value="Individual Records"> <!--To records.html-->
             </form>
         </section>
diff --git a/tomcat/webapps/Trawl/result.jsp b/tomcat/webapps/Trawl/result.jsp
index 2efa98f..9ebd567 100644
--- a/tomcat/webapps/Trawl/result.jsp
+++ b/tomcat/webapps/Trawl/result.jsp
@@ -5,8 +5,10 @@
 <p>
 
 <%
-	long time = (long)request.getAttribute("time");
-	out.print("The server was started at " + time);
+	Iterable<Integer> species = (Iterable<Integer>)request.getAttribute("species");
+	for (Integer s: species)
+		out.print("SpeciesID: " + s + "<br>");
+	out.print((String) request.getAttribute("url"));
 %>
 </body>
 </html>
\ No newline at end of file
diff --git a/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/index_jsp.java b/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/index_jsp.java
new file mode 100644
index 0000000..aab6c18
--- /dev/null
+++ b/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/index_jsp.java
@@ -0,0 +1,248 @@
+/*
+ * Generated by the Jasper component of Apache Tomcat
+ * Version: Apache Tomcat/9.0.6
+ * Generated at: 2018-03-22 23:33:57 UTC
+ * Note: The last modified time of this file was set to
+ *       the last modified time of the source file after
+ *       generation to assist with modification tracking.
+ */
+package org.apache.jsp;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.jsp.*;
+import java.util.*;
+
+public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase
+    implements org.apache.jasper.runtime.JspSourceDependent,
+                 org.apache.jasper.runtime.JspSourceImports {
+
+  private static final javax.servlet.jsp.JspFactory _jspxFactory =
+          javax.servlet.jsp.JspFactory.getDefaultFactory();
+
+  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
+
+  private static final java.util.Set<java.lang.String> _jspx_imports_packages;
+
+  private static final java.util.Set<java.lang.String> _jspx_imports_classes;
+
+  static {
+    _jspx_imports_packages = new java.util.HashSet<>();
+    _jspx_imports_packages.add("javax.servlet");
+    _jspx_imports_packages.add("java.util");
+    _jspx_imports_packages.add("javax.servlet.http");
+    _jspx_imports_packages.add("javax.servlet.jsp");
+    _jspx_imports_classes = null;
+  }
+
+  private volatile javax.el.ExpressionFactory _el_expressionfactory;
+  private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
+
+  public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
+    return _jspx_dependants;
+  }
+
+  public java.util.Set<java.lang.String> getPackageImports() {
+    return _jspx_imports_packages;
+  }
+
+  public java.util.Set<java.lang.String> getClassImports() {
+    return _jspx_imports_classes;
+  }
+
+  public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
+    if (_el_expressionfactory == null) {
+      synchronized (this) {
+        if (_el_expressionfactory == null) {
+          _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
+        }
+      }
+    }
+    return _el_expressionfactory;
+  }
+
+  public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
+    if (_jsp_instancemanager == null) {
+      synchronized (this) {
+        if (_jsp_instancemanager == null) {
+          _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
+        }
+      }
+    }
+    return _jsp_instancemanager;
+  }
+
+  public void _jspInit() {
+  }
+
+  public void _jspDestroy() {
+  }
+
+  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
+      throws java.io.IOException, javax.servlet.ServletException {
+
+    if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
+      final java.lang.String _jspx_method = request.getMethod();
+      if ("OPTIONS".equals(_jspx_method)) {
+        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
+        return;
+      }
+      if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
+        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
+        response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET, POST or HEAD. Jasper also permits OPTIONS");
+        return;
+      }
+    }
+
+    final javax.servlet.jsp.PageContext pageContext;
+    javax.servlet.http.HttpSession session = null;
+    final javax.servlet.ServletContext application;
+    final javax.servlet.ServletConfig config;
+    javax.servlet.jsp.JspWriter out = null;
+    final java.lang.Object page = this;
+    javax.servlet.jsp.JspWriter _jspx_out = null;
+    javax.servlet.jsp.PageContext _jspx_page_context = null;
+
+
+    try {
+      response.setContentType("text/html");
+      pageContext = _jspxFactory.getPageContext(this, request, response,
+      			null, true, 8192, true);
+      _jspx_page_context = pageContext;
+      application = pageContext.getServletContext();
+      config = pageContext.getServletConfig();
+      session = pageContext.getSession();
+      out = pageContext.getOut();
+      _jspx_out = out;
+
+      out.write("\n");
+      out.write("<!--\n");
+      out.write("\n");
+      out.write("Double Handle Slider Modified from: http://jqueryui.com/slider/#range\n");
+      out.write("\n");
+      out.write("-->\n");
+      out.write("\n");
+      out.write("<!DOCTYPE html>\n");
+      out.write("<html lang=\"en\">\n");
+      out.write("<head>\n");
+      out.write("    <meta charset=\"UTF-8\">\n");
+      out.write("    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n");
+      out.write("    <meta name=\"keywords\" content=\"insert, some, keywords\"> <!--TODO-->\n");
+      out.write("    <meta name=\"description\" content=\"insert a description\"> <!--TODO-->\n");
+      out.write("    <title>TrawlTool</title>\n");
+      out.write("    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">\n");
+      out.write("\n");
+      out.write("\n");
+      out.write("    <!--JQuery-->\n");
+      out.write("    <script src=\"https://code.jquery.com/jquery-1.12.4.js\"></script>\n");
+      out.write("    <script src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.js\"></script>\n");
+      out.write("    <link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css\">\n");
+      out.write("\n");
+      out.write("    <!-- MUST load JQuery Library before loading this-->\n");
+      out.write("    <script src=\"script.js\"></script>\n");
+      out.write("    <!--Fonts-->\n");
+      out.write("    <!--Open Sans Rg-400/Semi-600/Bd-700-->\n");
+      out.write("    <link href=\"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700\" rel=\"stylesheet\">\n");
+      out.write("\n");
+      out.write("    <!--Plugins-->\n");
+      out.write("</head>\n");
+      out.write("\n");
+      out.write("<body>\n");
+      out.write("    <header>\n");
+      out.write("        <a href=\"index.html\" >TrawlTool</a>\n");
+      out.write("    </header>\n");
+      out.write("\n");
+      out.write("    <span id=\"menu-bar\">\n");
+      out.write("        <a href=\"index.html\">Non functional Menu Item 1</a> |\n");
+      out.write("        <a href=\"index.html\" target=\"_blank\">Item 2</a>\n");
+      out.write("    </span>\n");
+      out.write("\n");
+      out.write("    <section id=\"options\">\n");
+      out.write("        <section id=\"nameDropdownIn\">\n");
+      out.write("            <form method=\"POST\" action=\"doBioLookup.do\"> <!--.do extension is not necessary. This field is the servlet's url in web.xml-->\n");
+      out.write("                Phylum:\n");
+      out.write("                <select name=\"phylum\" size=\"1\">\n");
+      out.write("                    <option>Arthropoda</option>\n");
+      out.write("                    <option>Chordata</option>\n");
+      out.write("                    <option>Mollusca</option>\n");
+      out.write("                </select>\n");
+      out.write("                <input type=\"SUBMIT\">\n");
+      out.write("\n");
+      out.write("                Class:\n");
+      out.write("                <select name=\"class\" size=\"1\">\n");
+      out.write("                </select>\n");
+      out.write("                <!--<input type=\"SUBMIT\">-->\n");
+      out.write("\n");
+      out.write("                Order:\n");
+      out.write("                <select name=\"order\" size=\"1\">\n");
+      out.write("                </select>\n");
+      out.write("                <!--<input type=\"SUBMIT\">-->\n");
+      out.write("\n");
+      out.write("                Family:\n");
+      out.write("                <select name=\"family\" size=\"1\">\n");
+      out.write("                </select>\n");
+      out.write("                <!--<input type=\"SUBMIT\">-->\n");
+      out.write("\n");
+      out.write("                Genus:\n");
+      out.write("                <select name=\"genus\" size=\"1\">\n");
+      out.write("                </select>\n");
+      out.write("                <!--<input type=\"SUBMIT\">-->\n");
+      out.write("\n");
+      out.write("                Species:\n");
+      out.write("                <select name=\"species\" size=\"1\">\n");
+      out.write("\n");
+      out.write("                </select>\n");
+      out.write("                <!--<input type=\"SUBMIT\">-->\n");
+      out.write("            </form>\n");
+      out.write("        </section>\n");
+      out.write("\n");
+      out.write("        <section id=\"yearIn\">\n");
+      out.write("            Year Range:\n");
+      out.write("            <span id=\"fromtoYear\">InnerHtml</span>\n");
+      out.write("            <form>\n");
+      out.write("                <!--<input type=\"number\" id=\"fromYear\" class=\"yearN\" value=\"2000\" min=\"1960\" max=\"2016\" oninput=\"brightN()\">-->\n");
+      out.write("                <div id=\"slider-range\"></div>\n");
+      out.write("            </form>\n");
+      out.write("        </section>\n");
+      out.write("\n");
+      out.write("        <section id=\"outputIn\">\n");
+      out.write("            <form>\n");
+      out.write("                <!--TODO: Set Default button entered-->\n");
+      out.write("                <input type=\"radio\" name=\"gender\" value=\"male\"> Map\n");
+      out.write("                <input type=\"radio\" name=\"gender\" value=\"female\"> Histogram\n");
+      out.write("                <input type=\"submit\">\n");
+      out.write("            </form>\n");
+      out.write("            <form>\n");
+      out.write("                <input type=\"submit\" value=\"Individual Records\"> <!--To records.html-->\n");
+      out.write("            </form>\n");
+      out.write("        </section>\n");
+      out.write("    </section>\n");
+      out.write("\n");
+      out.write("    <section id=\"outputWrapper\">\n");
+      out.write("        <section id=\"outputDetails\">Stuff like population count, entries found, etc. go here</section>\n");
+      out.write("        <section id=\"outputBox\">Map, Histogram Box</section>\n");
+      out.write("    </section>\n");
+      out.write("    <footer>\n");
+      out.write("        Footer\n");
+      out.write("    </footer>\n");
+      out.write("</body>\n");
+      out.write("</html>\n");
+    } catch (java.lang.Throwable t) {
+      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
+        out = _jspx_out;
+        if (out != null && out.getBufferSize() != 0)
+          try {
+            if (response.isCommitted()) {
+              out.flush();
+            } else {
+              out.clearBuffer();
+            }
+          } catch (java.io.IOException e) {}
+        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
+        else throw new ServletException(t);
+      }
+    } finally {
+      _jspxFactory.releasePageContext(_jspx_page_context);
+    }
+  }
+}
diff --git a/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/result_jsp.java b/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/result_jsp.java
index 0da2be8..6a8a4c5 100644
--- a/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/result_jsp.java
+++ b/tomcat/work/Catalina/localhost/Trawl/org/apache/jsp/result_jsp.java
@@ -1,7 +1,7 @@
 /*
  * Generated by the Jasper component of Apache Tomcat
  * Version: Apache Tomcat/9.0.6
- * Generated at: 2018-03-22 22:32:45 UTC
+ * Generated at: 2018-03-22 23:11:01 UTC
  * Note: The last modified time of this file was set to
  *       the last modified time of the source file after
  *       generation to assist with modification tracking.
@@ -122,8 +122,10 @@ public final class result_jsp extends org.apache.jasper.runtime.HttpJspBase
       out.write("<p>\n");
       out.write("\n");
 
-	long time = (long)request.getAttribute("time");
-	out.print("The server was started at " + time);
+	Iterable<Integer> species = (Iterable<Integer>)request.getAttribute("species");
+	for (Integer s: species)
+		out.print("SpeciesID: " + s + "<br>");
+	out.print((String) request.getAttribute("url"));
 
       out.write("\n");
       out.write("</body>\n");
-- 
GitLab