package test_dbpool;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.naming.NamingException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingEnumeration;
import javax.naming.directory.InitialDirContext;
import javax.sql.*;
import java.sql.*;


public class DBTest
    extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        PrintWriter out = response.getWriter();
        response.setContentType("text/plain");
        String foo = "Not Connected";
        int bar = -1;

        Context ctx = null;
        try {
            ctx = new InitialContext();
        } catch (NamingException e) {
            out.println("Couldn't build an initial context : " + e);
            return;
        }

        try {
            Object value = ctx.lookup("java:/comp/env/jdbc/mydb");
            out.println("Simple lookup test : ");
            out.println("jdbc/mydb : " + value);
        } catch (NamingException e) {
            out.println("JNDI lookup failed : " + e);
        }

        try {
            out.println("list() on /comp/env Context : ");
            NamingEnumeration enum = ctx.list("java:/comp/env/");
            while (enum.hasMoreElements()) {
                out.print("Binding : ");
                out.println(enum.nextElement().toString());
            }
            out.println("listBindings() on /comp/env Context : ");
            enum = ctx.listBindings("java:/comp/env/");
            while (enum.hasMoreElements()) {
                out.print("Binding : ");
                out.println(enum.nextElement().toString());
            }
        } catch (NamingException e) {
            out.println("JNDI lookup failed : " + e);
        }
        try{
             	Context envCtx = (Context) ctx.lookup("java:/comp/env/");
     		DataSource ds = (DataSource) envCtx.lookup("/jdbc/mydb");

      		if (ds != null) {
        		Connection conn = ds.getConnection();

        		if(conn != null)  {
            			Statement stmt = conn.createStatement();
            			ResultSet rst = stmt.executeQuery("***INSERT TEST QUERY HERE***");
            			if(rst.next()) {
               				foo=rst.getString(2);
               				bar=rst.getInt(3);
            			}
            			conn.close();
                                conn = null;
            			out.println("Foo: " + foo);
            			out.println("Bar: " + bar);
        		}
        		else {
        			out.println("Connection Failed");
        		}
      		}
      		else {
           		out.println("Creating data source failed");
	        }

	} catch(Exception e) {
      		e.printStackTrace();
    	}

    }


}

