CSCI 4230
Software Tools
Fall 1999
Suugested Solution to Homework #8

(1)    This suggested solution is created by Kanchana Weerasinghe.  Our thanks to him.

<HTML>
<BODY bgcolor=#CCFFFF>
<h2><font color=green>
 

<CFQUERY NAME="xcel" DATASOURCE="f99hw8">
 SELECT *
 FROM  data
 WHERE  SSNum = '#URL.ssnum#'
</CFQUERY>

<CFOUTPUT>#xcel.Name#, your grades so far: <br> </CFOUTPUT></font></h2><br>

<table border=1 width="80%"><tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>

<CFSET MyArray = #ListToArray(xcel.ColumnList)#>
<CFSET TempVar = #ArraySort(MyArray, 'textnocase')#>
<CFSET SortedList = #ArrayToList(MyArray)#>

<CFLOOP INDEX="Item" LIST=#SortedList#>
 <CFIF FindNoCase("Homework", #Item#, 1) neq 0>
  <td><CFOUTPUT>#Item#<br></CFOUTPUT>
 </CFIF>
</CFLOOP>

<tr><td><font color=green>Your Grade</font>

<CFLOOP INDEX="Item" LIST=#xcel.ColumnList#>
 <CFIF FindNoCase("Homework", #Item#, 1) neq 0>
  <CFSET N = #Evaluate("xcel.#Item#")#>
 
  <td><CFOUTPUT>#N#<br></CFOUTPUT>
 </CFIF>
</CFLOOP>

<CFQUERY NAME="stats" DATASOURCE="f99hw8">
 SELECT *
 FROM  data
 WHERE NAME = 'Full' or NAME ='Average' or NAME = 'Median' or NAME = 'Standard Deviation'
</CFQUERY>

<CFLOOP QUERY="stats">
 <CFOUTPUT><tr><td><font color=blue>#stats.Name#</font></CFOUTPUT>
 <CFLOOP INDEX="Item" LIST=#stats.ColumnList#>
  <CFIF FindNoCase("Homework", #Item#, 1) neq 0>
    <CFSET N=#Evaluate("stats.#Item#")#>
    <CFSET M= Round(N*100)/100>
   <td><CFOUTPUT>#M#<br></CFOUTPUT>
  </CFIF>
 </CFLOOP>
</CFLOOP>
</table>
</BODY>
</HTML>

(2)    For example,

package csci4230fl99.f99demo1.examples.hw;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class f99jsq1 extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res)
                               throws ServletException, IOException {
    // Set the Content-Type header
    res.setContentType("text/html");

    // Return early if this is a HEAD method.
    if (req.getMethod().equals("HEAD")) return;

    //  get the parameter values of filename and area.
    String filename = req.getParameter("filename");
    String inputArea = req.getParameter("area");

    //  Prepare file name.
    String path = req.getPathTranslated();
    filename = path.substring(0,path.lastIndexOf(File.separatorChar)+1) + filename;

    String result = "";
    // Try to load and read the data file.
    try {
      FileReader fileReader = new FileReader(filename);
      BufferedReader bufferedReader = new BufferedReader(fileReader);
      String inline;
      StringTokenizer st;
      String symbol, area, desc, classCode;
      while ((inline = bufferedReader.readLine()) != null) {
          st = new StringTokenizer(inline,",");
          //  Assume no error in input line.
          //  Get data in the line.
          symbol = (st.hasMoreTokens())? (st.nextToken()) : "";
          area = (st.hasMoreTokens())? (st.nextToken()) : "";
          desc = (st.hasMoreTokens())? (st.nextToken()) : "";
          classCode = (st.hasMoreTokens())? (st.nextToken()) : "";
          if (area.equalsIgnoreCase(inputArea)) {
              result = result + "<TR><TD>" + symbol
                              + "</TD><TD>" + desc
                              + "</TD><TD>" + classCode
                              + "</TR>";
          }
      }
      if (result.equals("")) {
          result = "There are no areas in the data file matching the " +
                   "input area <SPAN STYLE='color:blue'>" +
                   inputArea + "</SPAN>.  Please try again.";
      }
      else {
          //  construct the entire table using the
          //  cells so far.
          result = "<TABLE BORDER=1 BGCOLOR=#FFFFCC>\n"
                   + "<TR><TD><SPAN STYLE='color:blue'>Symbol</SPAN></TD>"
                   + "<TD><SPAN STYLE='color:blue'>Description</SPAN></TD>"
                   + "<TD><SPAN STYLE='color:blue'>Class Code</SPAN></TD></TR>"
                   + result
                   + "</TABLE>";
       }
    }
    catch (FileNotFoundException ignored) { }
    catch (IOException ignored) { }
    if (result.equals("")) {
        result = "Sorry, the data file cannot be open.";
    }

    //  Print result.
    PrintWriter out = res.getWriter();
    out.println("<HTML>");
    out.println("<HEAD><TITLE>Search Result</TITLE></HEAD>");
    out.println("<BODY>");
    out.println("<H2 STYLE='color:blue'>Result of searching:</H2><P>");
    out.println(result);
    out.println("</BODY></HTML>");
  }
}