package tomtest;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingEnumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

/**
 * TestServlet.java
 * A class that ...
 * 
 * @author David Mold
 *
 * Sep 8, 2002
 */
public class TestServlet extends HttpServlet {
	
	
	/**
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException 
	{
		
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();
		try{
			Context ctx = new InitialContext();
			if(ctx == null){
				pw.println("Context is null");
				return;
			}
			Context envCtx = (Context)ctx.lookup("java:comp/env");
			NamingEnumeration enum = envCtx.list("jdbc/");
			pw.println("<p>Listing names in jdbc:</p>");
			while(enum.hasMoreElements()){
				pw.println("<li>" + enum.nextElement() + "</li>");
			}
			pw.println("<p>Finished</p>");
			if(envCtx == null){
				pw.println("Environment context is null");
				return;
			}
			DataSource ds = (DataSource)envCtx.lookup("jdbc/test");
			BasicDataSource bds = (BasicDataSource)ds;
			pw.println("<p>Driver class name = " + bds.getDriverClassName() + "</p>");
			pw.println("<p>Successfully got a DataSource out of the jndi called jdbc/test.</p>");
			pw.println("<p>DataSource is of type " + ds.getClass().getName() + ".</p>");
			Connection conn = ds.getConnection("inet","inet");
			PreparedStatement ps = conn.prepareStatement("select * from clients");
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				pw.println(rs.getString("ID") + " " + rs.getString("name") + "<br>");
			}
			rs.close();
			ps.close();
			conn.close();
			pw.println("<p>Complete.</p>");
			
		}
		catch(Exception ex){
			pw.println("Exception thrown:<pre>");
			ex.printStackTrace(pw);
			pw.println("</pre>");
		}
		
	}


}
