⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskdataservlet.java

📁 tinyos最新版
💻 JAVA
字号:
/* Copyright (c) 2002-2003 Intel Corporation
 * All rights reserved.
 *
 * This file is distributed under the terms in the attached INTEL-LICENSE     
 * file. If you do not find these files, copies can be found by writing to
 * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA, 
 * 94704.  Attention:  Intel License Inquiry.
 */

import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.mortbay.html.*;
import org.mortbay.http.*;
import org.mortbay.jetty.servlet.*;
import net.tinyos.task.taskapi.*;
import net.tinyos.task.tasksvr.*;

public class TASKDataServlet extends HttpServlet {

    private TASKServer taskServer;
	private Connection taskDBConn;

    public void init() throws ServletException {
		taskServer = (TASKServer)getServletContext().getAttribute("TASKInstance");
		if (taskServer == null) {
			throw new UnavailableException("Couldn't get the TASKServer.");
		}
		taskDBConn = (Connection)getServletContext().getAttribute("TASKDBMSConn");
		if (taskDBConn == null) {
			throw new UnavailableException("Couldn't get the DBMS Connection.");
		}

    }

    public void destroy() {
		taskServer = null;
		taskDBConn = null;
    }

	private void printResultsHTMLTable(Connection db, String sqltxt, PrintWriter out) 
		throws SQLException
	{
		Statement stmt = taskDBConn.createStatement();
		ResultSet rs;
		ResultSetMetaData rsmd;

		rs = stmt.executeQuery(sqltxt);

		if (rs != null) {
			rsmd = rs.getMetaData();
			out.println("<table border=\"1\">");
			out.println("<tr>");
			
			for (int i=1; i <= rsmd.getColumnCount();i++) {
				out.println("<th><tt>"+rsmd.getColumnName(i) + "</tt>");
			}
			out.println("</tr>");
			
			while (rs.next()) {
				out.println("<tr>");
				for (int i=1; i <= rsmd.getColumnCount();i++) {
					out.println("<td><tt>" + rs.getString(i) + "</tt>");
				}
				out.println("</tr>");
			}
			out.println("</table><p>");
		}
		else {
			out.println("No data in DBMS. <br>");
		}

		return;

	}

	private void printResultsCDT(Connection db, String sqltxt, PrintWriter out) 
		throws SQLException 
	{
		Statement stmt = db.createStatement();
		ResultSet rs;
		ResultSetMetaData rsmd;
		
		rs = stmt.executeQuery(sqltxt);
		if (rs != null) {
			rsmd = rs.getMetaData();
			
			out.print(rsmd.getColumnName(1));
			for (int i=2; i <= rsmd.getColumnCount();i++) {
				out.print(", "+ rsmd.getColumnName(i));
			}
			out.println();
			
			while (rs.next()) {
				out.print(rs.getString(1));
				for (int i=2; i <= rsmd.getColumnCount();i++) {
					out.print(", " + rs.getString(i));
				}
				out.println();
			}
			
		}
		else {
			out.println("__NORESULT");
		}
		return;
	}

    public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException
    {
		Vector taskCmdInfos = taskServer.getTASKCommands();
		String formTarget = response.encodeURL(request.getRequestURI());

        PrintWriter out = response.getWriter();

        response.setContentType("text/html");
		response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache,no-store");

        out.println("<html>");
        out.println("<head>");
        out.println("<title>TASK Data Viewer</title>");
        out.println("</head>");
        out.println("<body onload=\"document.formDBMSQuery.textSQL.focus()\">");

		out.println("<h3>DBMS Data Viewer</h3>");

		out.println("<form name=\"formDBMSQuery\" action=\"" + formTarget + "\" method=post>");

		out.println("<b>Enter the DBMS SQL Query:</b><br>" +
					"<i>Use the table name\"</i><tt>task_current_results</tt><i>\" " +
					"to refer to the results table for the latest query.</i>");
		
		out.println("<p>");
		
		out.println("<table border=\"1\">" +
					"<tr><td><input type=\"text\" name=\"textSQL\" size=100><tr>");
		out.println("</table>");

		out.println("<p>");

		out.println("<b>Select format:</b> " + 
					"<table border=\"1\">" +
					"<tr><td>Table <input type=\"radio\" name=\"rbViewFormat\" value=\"Table\" checked>" + 
					"<td>CDT <input type=\"radio\" name=\"rbViewFormat\" value=\"CDT\"><tr>" +
					"</table><p>");

		out.println("<input type=\"submit\" name=\"submitAction\" value=\"Run Query\">" +
					"<input type=\"reset\" value=\"Reset\">");

		out.println("</form><p>");

		out.println("<hr><p>");

        out.println("Method: " + request.getMethod());
        out.println("Request URI: " + request.getRequestURI());
        out.println("Protocol: " + request.getProtocol());
        out.println("PathInfo: " + request.getPathInfo());
        out.println("Remote Address: " + request.getRemoteAddr());

        out.println("</body>");
        out.println("</html>");
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException
    {
        PrintWriter out = response.getWriter();
		String action = request.getParameter("submitAction");
		TASKQuery taskCurrentQry = taskServer.getTASKQuery(TASKServer.SENSOR_QUERY);
		String dbmsSQLQry;
		
		response.setContentType("text/html");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache,no-store");

		if ((action == null) || (action.equals("Run Query"))) {
			String sqltext = request.getParameter("textSQL");
			String vfmt = request.getParameter("rbViewFormat");
			
			if ((sqltext != null) && (!sqltext.equals(""))) {
				dbmsSQLQry = sqltext;

				if ((vfmt == null) || (vfmt.equals("Table"))) {
					try {
						printResultsHTMLTable(taskDBConn,dbmsSQLQry,out);
					}
					catch (SQLException sqle){
						out.println("Bad Query:" + sqle.getMessage());
					}
				}
				else {
					try {
						printResultsCDT(taskDBConn,dbmsSQLQry,out);
					}
					catch (SQLException sqle) {
						out.println("__BADQUERY");
					}
				}
			}
			else {
				out.println("__BADFORMREQUEST");
				throw new HttpException(501);
			}
		}
		else {
			out.println("__BADFORMACTION");
			throw new HttpException(501);
		}
    }

}







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -