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

public class SqlSelect extends HttpServlet {
	Connection cone = null;
	String resposta;
	
	public void doPost( HttpServletRequest request,
	HttpServletResponse response ) throws ServletException, IOException {
		PrintWriter output = response.getWriter();
		response.setContentType( "text/html" );
		
		try {
			//Conexão com o banco
			String usuario = request.getParameter( "user" );
			String senha = request.getParameter( "pass" );
			Class.forName( "org.gjt.mm.mysql.Driver" );
			cone = DriverManager.getConnection( "jdbc:mysql://localhost/scec", usuario, senha );
			
			String command = request.getParameter( "command" );
			boolean success = selectDB( command );
			
			if ( success ) {
				output.println( resposta );
			}
			else {
				output.print( "<HTML><HEAD>\n" );
				output.print( "<LINK REL=stylesheet HREF=\"http://172.16.54.50/form.css\" TYPE=\"text/css\">\n" );
				output.print( "<TITLE>Erro na Procura...</TITLE></HEAD>\n" );
				output.print( "<body leftmargin=0 topmargin=60 marginwidth=0 marginheight=0>\n" );
				output.print( "<script language=\"JavaScript1.2\" src=\"http://172.16.54.50/coolmenus3.js\"></script>\n" );
				output.print( "<script language=\"JavaScript1.2\" src=\"http://172.16.54.50/menu.js\"></script>\n" );
				output.print( "<H1>Ocorreu um erro, tente novamente !!</H1><BR><HR><BR>\n" );
				output.print( resposta );
				output.close();
			}
		}
		catch ( Exception e ) {
			output.print( "<HTML><HEAD>\n" );
			output.print( "<LINK REL=stylesheet HREF=\"http://172.16.54.50/form.css\" TYPE=\"text/css\">\n" );
			output.print( "<TITLE></TITLE></HEAD>\n" );
			output.print( "<body leftmargin=0 topmargin=60 marginwidth=0 marginheight=0>\n" );
			output.print( "<script language=\"JavaScript1.2\" src=\"http://172.16.54.50/coolmenus3.js\"></script>\n" );
			output.print( "<script language=\"JavaScript1.2\" src=\"http://172.16.54.50/menu.js\"></script>\n" );
			output.print( "<H1>Ocorreu um erro, tente novamente !!</H1><BR><HR><BR>\n" );
			output.print( e.getMessage() );
			output.close();
		}
	}
	
	private boolean selectDB( String executecommand ) {
		try {
			Statement stmt = cone.createStatement();
			int cont = 0;
			
			if ( stmt.execute( executecommand ) )
				cont = 1;
				
			StringBuffer buf = new StringBuffer();
			buf.append( "<HTML><HEAD><LINK REL=stylesheet HREF=\"http://172.16.54.50/form.css\" TYPE=\"text/css\"><TITLE>\n" );
			buf.append( "Resultado da Procura\n" );
			buf.append( "</TITLE></HEAD>\n" );
			buf.append( "<body leftmargin=0 topmargin=60 marginwidth=0 marginheight=0\">\n" );
			buf.append( "<script language=\"JavaScript1.2\" src=\"http://172.16.54.50/coolmenus3.js\"></script>\n" );
			buf.append( "<script language=\"JavaScript1.2\" src=\"http://172.16.54.50/menu.js\"></script>\n" );
			
			if ( cont == 1 ) {
				ResultSet resultado = stmt.getResultSet();
				
				buf.append( "<p>Resultado da procura....</p>\n" );
				buf.append( "<FONT SIZE=2><B>--></B> " + executecommand + "<BR><BR></FONT>" );
				
				ResultSetMetaData rsmd = resultado.getMetaData();
				buf.append( "<FONT size=\"2\"><STRONG>Nome da Tabela: </STRONG>" + rsmd.getTableName( 1 ) + "</FONT><BR>\n" );
				buf.append( "<table border=\"1\"><tr>" );
				for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
					buf.append( "<TD id=\"subtitulo\">" + rsmd.getColumnName( i ) + "</TD>" );
					
				while ( resultado.next() ) {
					buf.append( "<TR>" );
					
					for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
						buf.append( "<TD id=\"dado_l\">" + resultado.getString( i ) + "</TD>" );
						
					buf.append( "</TR>" );
				}
				
				buf.append( "</TABLE><BR><BR><FONT SIZE=2><I>Comando Concluído !!</I></FONT></BODY></HTML>" );
				resposta = buf.toString();
				stmt.close();
				cone.close();
			}
			else {
				buf.append( "<FONT SIZE=2><B>--></B> " + executecommand + "<BR><BR><FONT SIZE=2><I>Comando Concluído !!</I></FONT></BODY></HTML>" );
				resposta = buf.toString();
				cone.close();
			}
		}
		catch ( Exception e ) {
			StringBuffer buf = new StringBuffer();
			buf.append( "<FONT id=\"dado_l\"><STRONG>Motivo do Erro: </STRONG>" + e.getMessage() );
			resposta = buf.toString();
			return false;
		}
		return true;
	}
	
	public void destroy() {
		try {
			cone.close();
		}
		catch ( Exception e ) {
			System.err.println( "Problemas em fechar o banco" );
		}
	}
}
