package com.test.ejb;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.log4j.Logger;

import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class SessionTestBean implements SessionBean {
    private static Logger logger = Logger.getLogger(SessionTestBean.class);
    
    private SessionContext sessionContext = null;
	
	public void ejbCreate() {}
    public void ejbRemove() {}
    public void ejbActivate() {}
    public void ejbPassivate() {}
    public void setSessionContext(SessionContext sessionContext) {
    	this.sessionContext = sessionContext;
    }
    public void testDS() throws RemoteException {
    	DataSource ds = null;
    	Connection conn = null;
    	Statement stmt = null;
    	String create = "CREATE TABLE TEST (" + 
    					"field1 VARCHAR (64) NOT NULL," + 
    					"field2 VARCHAR (64) NOT NULL ," +
    					"CONSTRAINT TEST_PK  PRIMARY KEY ( field1) )";
    	
    	String insert = "INSERT INTO TEST (field1,field2) VALUES ('1','2')";
    	
        try {
				InitialContext initialContext = new InitialContext();
				ds = (DataSource)initialContext.lookup("java:comp/env/testDataSource");
				conn = ds.getConnection();
				stmt = conn.createStatement();
				stmt.execute(create);
				stmt.execute(insert);
				//insert a duplicate record to the table to create the exception
				stmt.execute(insert);				
	       	} catch (NamingException e) {
	       		logger.error(e);
	       	} catch (SQLException e) {
	       		logger.error(e);
	       		sessionContext.setRollbackOnly();
			} 
        
    }

}
