/*
 * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

/*
 * Created on Apr 28, 2005
 */
package javax.sql;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.EventObject;

/**
 * A <code>StatementEvent</code> is sent to all <code>StatementEventListener</code>s which were
 * registered with a <code>PooledConnection</code>. This occurs when the driver determines that a
 * <code>PreparedStatement</code> that is associated with the <code>PooledConnection</code> has been closed or the driver determines
 * is invalid.
 * <p>
 * @since 1.6
 */
public class StatementEvent extends EventObject {

        private SQLException            exception;
        private PreparedStatement       statement;

        /**
         * Constructs a <code>StatementEvent</code> with the specified <code>PooledConnection</code> and
         * <code>PreparedStatement</code>.  The <code>SQLException</code> contained in the event defaults to
         * null.
         * <p>
         * @param con                   The <code>PooledConnection</code> that the closed or invalid
         * <code>PreparedStatement</code>is associated with.
         * @param statement             The <code>PreparedStatement</code> that is bieng closed or is invalid
         * <p>
         * @throws IllegalArgumentException if <code>con</code> is null.
         *
         * @since 1.6
         */
        public StatementEvent(PooledConnection con,
                                                  PreparedStatement statement) {

                super(con);

                this.statement = statement;
                this.exception = null;
        }

        /**
         * Constructs a <code>StatementEvent</code> with the specified <code>PooledConnection</code>,
         * <code>PreparedStatement</code> and <code>SQLException</code>
         * <p>
         * @param con                   The <code>PooledConnection</code> that the closed or invalid <code>PreparedStatement</code>
         * is associated with.
         * @param statement             The <code>PreparedStatement</code> that is being closed or is invalid
         * @param exception             The <code>SQLException </code>the driver is about to throw to
         *                                              the application
         *
         * @throws IllegalArgumentException if <code>con</code> is null.
         * <p>
         * @since 1.6
         */
        public StatementEvent(PooledConnection con,
                                                  PreparedStatement statement,
                                                  SQLException exception) {

                super(con);

                this.statement = statement;
                this.exception = exception;
        }

        /**
         * Returns the <code>PreparedStatement</code> that is being closed or is invalid
         * <p>
         * @return      The <code>PreparedStatement</code> that is being closed or is invalid
         * <p>
         * @since 1.6
         */
        public PreparedStatement getStatement() {

                return this.statement;
        }

        /**
         * Returns the <code>SQLException</code> the driver is about to throw
         * <p>
         * @return      The <code>SQLException</code> the driver is about to throw
         * <p>
         * @since 1.6
         */
        public SQLException getSQLException() {

                return this.exception;
        }
}
