// package org.javatrainer; // Jeff: Not needed package esse; /** * @author Anika Sindhwani, with the design and help from Jeff Offutt * Date: August, 2013 * Version 2 */ import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; // import javax.servlet.annotation.WebServlet; // Jeff: Doesn't compile import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; import java.io.File; /** * Servlet implementation class ProjectList */ // @WebServlet("/ProjectList") // Jeff: Our compiler doesn't support this. public class ProjectList extends HttpServlet { // private static final long serialVersionUID = 1L; // Jeff: Not used /** * @see HttpServlet#doGet (HttpServletRequest request, HttpServletResponse response) */ protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String servletPath = "expProj/"; // Anika (Jeff: This is not used) // String webServerPath = "/Images/"; // Anika String webServerPath = "http://cs.gmu.edu/~offutt/esse/"; // Jeff // String xmlPath = "c:/eclipse/"; // Anika String xmlPath = "/var/www/CS/webapps/offutt/WEB-INF/data/esse/"; // Jeff String imagePath = "/Images/"; PrintWriter out = response.getWriter(); // Open the XML file and create list of elements File fXmlFile = new File (xmlPath + "projectList.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse (fXmlFile); // create the top of the page out.println (""); out.println (""); out.println (""); out.println ("Empirical Software Subject Exchange"); out.println (""); out.println (""); out.println ("

Empirical Software Subject Exchange

"); out.println ("
"); out.println ("
The Empirical Software Subject Exchange stores software and their artifacts for free use by the software engineering research and educational community. The software is community supplied. Contact us at esse@cs.gmu.edu.
"); out.println ("
"); out.print ("
"); out.print (""); out.println (""); out.println ("
"); out.println ("
"); out.println (""); //add sorting to the tables out.println(""); // Jeff out.println (""); out.println (""); //create table and table headings out.println ("
"); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.println (""); //get elements from XML and put in the table doc.getDocumentElement().normalize(); NodeList nodes = doc.getElementsByTagName ("project"); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; // create link to the servlet for project details out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); //checks if yes/no, puts image in the table out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.print (""); out.println ("
ProjectLanguageLOCClassesMethodsTestsDesignsRequirementsUITypeDate UploadedTimes DownloadedDownload
"); out.print (""); //add info to tables from XML out.print (element.getElementsByTagName ("name").item(0).getTextContent()); out.println (""); out.print (element.getElementsByTagName ("language").item(0).getTextContent()); out.println (""); out.print (element.getElementsByTagName ("loc").item(0).getTextContent ()); out.println (""); out.print (element.getElementsByTagName ("classes").item(0).getTextContent()); out.println (""); out.print (element.getElementsByTagName ("methods").item(0).getTextContent()); out.println (""); String testsFromXML = element.getElementsByTagName ("tests").item(0).getTextContent(); if (testsFromXML.equals ("No")) { out.print (""); } else { out.print (""); } out.println (""); String designFromXML = element.getElementsByTagName ("designs").item(0).getTextContent(); if (designFromXML.equals ("No")) { out.print (""); } else { out.print (""); } out.println (""); String reqsFromXML = element.getElementsByTagName ("requirements").item(0).getTextContent(); if (reqsFromXML.equals ("No")) { out.print (""); } else { out.print (""); } out.println (""); out.print (element.getElementsByTagName ("ui").item(0).getTextContent()); out.println (""); out.print (element.getElementsByTagName ("type").item(0).getTextContent()); out.println (""); out.print (element.getElementsByTagName ("dateUploaded").item(0).getTextContent()); out.println (""); out.print (element.getElementsByTagName ("timesDownloaded").item(0).getTextContent()); out.println (""); //creates link to the servlet for download count and download file out.print (""); } // end if (node.getNodeType() == Node.ELEMENT_NODE) } // end for out.println ("
"); out.println (""); //creates bottom of page out.println ("
Designed and Built by Anika Sindhwani"); out.println ("
Last Updated: August 16th, 2013
"); out.println (""); out.close(); } catch (Exception e) { e.printStackTrace(); } } // end doGet() }