package isip.java.bullyse.bullydb; import java.io.*; import java.util.*; import java.text.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class History extends HttpServlet { // Create a new BullyDB Object static BullyDB sessionbase = new BullyDB(); static String SystemName = sessionbase.getName(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // Initialize variables String task = request.getParameter("Task"); if (task == null) { // Invalid use } else if (task.equals("getData")) { // Outputs in html the info needed for the ticker displayData(request, response); } else if (task.equals("getName")) { // Initialize the output stream response.setContentType("text/html"); PrintWriter out=response.getWriter(); out.println(SystemName); out.close(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // Invalid access method } public void displayData(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String query = (String)null; String Symbol = request.getParameter("Symbol"); String Type = request.getParameter("Type"); String Last = (String)null; ResultSet result = null; int newU = 0; int Shares = 0; double Value = 0.00; java.util.Date transTime = new java.util.Date(); java.util.Date transDate = new java.util.Date(); java.util.Date curDate = new java.util.Date(); String td = ""; int hour = 0; int curhour = 0; int curmin = 0; int minute = 0; Locale locale = new Locale("en","US"); DateFormat timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale); DecimalFormat tFormat = new DecimalFormat("00"); // Initialize the output stream response.setContentType("text/html"); PrintWriter out=response.getWriter(); if (Type.equals("1")) { // Use this to make sure we have some daily data. If not, we'll // need to send in a filler entry. int countItms = 0; // Get the Open value from Companies and output it as // 00:00:01 query = "select Open from Companies where Symbol = '" + Symbol.toLowerCase() + "'"; result = sessionbase.doQuery(query); try { result.next(); out.println(result.getString("Open")); out.println("00"); out.println("00"); } catch (Exception e) { e.printStackTrace(); } query = "select Time, Value from ht" + Symbol.toLowerCase() + " where Date = '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-" + curDate.getDate() + "' order by Time"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Value")); // Format the Time string before outputting transTime = result.getTime("Time"); out.println(transTime.getHours()); out.println(transTime.getMinutes()); } } catch (Exception e) { e.printStackTrace(); } // Get the Company Last value and output it query = "select Last from Companies where Symbol = '" + Symbol.toLowerCase() + "'"; result = sessionbase.doQuery(query); try { result.next(); out.println(result.getString("Last")); out.println(curDate.getHours()); out.println(curDate.getMinutes()); } catch (Exception e) { e.printStackTrace(); } out.close(); } else if (Type.equals("2")) { // This is a little trickier - we only want data from this week so // a little tinkering has to be done. int thisDay = curDate.getDay(); int lookDate = curDate.getDate() - thisDay; java.util.Date matchIt = new java.util.Date(); matchIt.setDate(lookDate); boolean sendFirst = true; // See if we need to output a value for the first day query = "select Value from eht" + Symbol.toLowerCase() + " where Date = '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-" + matchIt.getDate() + "'"; result = sessionbase.doQuery(query); try { result.next(); if ((result.getDouble("Value") > 0)) { sendFirst = false; } } catch (Exception e) { e.printStackTrace(); } if (sendFirst) { query = "select Value from eht" + Symbol.toLowerCase() + " where Date < '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-" + matchIt.getDate() + "' order by Date desc"; result = sessionbase.doQuery(query); try { // We only want one result.next(); out.println(result.getString("Value")); out.println("0"); } catch (Exception e) { e.printStackTrace(); } } query = "select Date, Value from eht" + Symbol.toLowerCase() + " where Date >= '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-" + matchIt.getDate() + "' order by Date"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Value")); transDate = result.getDate("Date"); out.println(transDate.getDay()); } } catch (Exception e) { e.printStackTrace(); } // That prints everything from the previous days - now we have to // output the current value. query = "select Last from Companies where Symbol = '" + Symbol + "'"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Last")); out.println(curDate.getDay()); } } catch (Exception e) { e.printStackTrace(); } out.close(); } else if (Type.equals("3")) { double checkVal = 0; // See if we need to output a value for the first day query = "select Value from eht" + Symbol.toLowerCase() + " where Date = '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-1'"; result = sessionbase.doQuery(query); try { while(result.next()) { checkVal = result.getDouble("Value"); } } catch (Exception e) { e.printStackTrace(); } if (checkVal == 0) { query = "select Value from eht" + Symbol.toLowerCase() + " where Date < '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-1' order by Date desc"; result = sessionbase.doQuery(query); try { // We only want one result.next(); out.println(result.getString("Value")); out.println("0"); } catch (Exception e) { e.printStackTrace(); } } query = "select Date, Value from eht" + Symbol.toLowerCase() + " where Date >= '" + (curDate.getYear()+1900) + "-" + (curDate.getMonth()+1) + "-1' order by Date"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Value")); transDate = result.getDate("Date"); out.println(transDate.getDate()); } } catch (Exception e) { e.printStackTrace(); } // That prints everything from the previous days - now we have to // output the current value. query = "select Last from Companies where Symbol = '" + Symbol + "'"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Last")); out.println(curDate.getDate()); } } catch (Exception e) { e.printStackTrace(); } out.close(); } else if (Type.equals("4")) { boolean sendFirst = true; java.util.Date setDate = new java.util.Date(); // See if we need to output a value for the first day query = "select Value from eht" + Symbol.toLowerCase() + " where Date = '" + (curDate.getYear()+1900) + "-1-1'"; result = sessionbase.doQuery(query); try { result.next(); if ((result.getDouble("Value") > 0)) { sendFirst = false; } } catch (Exception e) { e.printStackTrace(); } if (sendFirst) { query = "select Date, Value from eht" + Symbol.toLowerCase() + " where Date < '" + (curDate.getYear()+1900) + "-1-1' order by Date desc"; result = sessionbase.doQuery(query); try { // We only want one result.next(); out.println(result.getString("Value")); setDate = result.getDate("Date"); out.println(setDate.getMonth()); out.println(setDate.getDate()); } catch (Exception e) { e.printStackTrace(); } } query = "select Date, Value from eht" + Symbol.toLowerCase() + " where Date >= '" + (curDate.getYear()+1900) + "-1-1' order by Date"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Value")); transDate = result.getDate("Date"); // For the year, return Month.Date out.println(transDate.getMonth()); out.println(transDate.getDate()); } } catch (Exception e) { e.printStackTrace(); } // That prints everything from the previous days - now we have to // output the current value. query = "select Last from Companies where Symbol = '" + Symbol + "'"; result = sessionbase.doQuery(query); try { while (result.next()) { // Simply output the value out.println(result.getString("Last")); out.println(curDate.getMonth()); out.println(curDate.getDate()); } } catch (Exception e) { e.printStackTrace(); } out.close(); } out.close(); } }