package org.glassfish.api.jdbc;

import java.io.Serializable;


/**
 * SQLTraceRecord that has information related to SQL operations
 */
public class SQLTraceRecord implements Serializable {

    /**
     * Thread ID from which SQL statement originated.
     */
    private String threadID;
    
    /**
     * Thread Name from which SQL statement originated.
     */
    private String threadName;

    /**
     * Pool Name in which the SQL statement is executed.
     */
    private String poolName;
    
    /**
     * Type of SQL query. Could be PreparedStatement, CallableStatement or
     * other object types.
     */
    private String className;
    
    /**
     * Method that executed the query.
     */
    private String methodName;
    
    /**
     * Time of execution of query.
     */
    private String timeStamp;
    
    /**
     * Parameters of the method that executed the SQL query. Includes information
     * like SQL query, arguments and so on.
     */    
    private Object[] params;

    /**
     * Gets the class name of the SQL query expressed as a String.
     * 
     * @return The class name of the SQL query expressed as a String.
     */
    public String getClassName() {
        return className;
    }

    /**
     * Sets the class name of the SQL query expressed as a String.
     * 
     * @param className class name of the SQL query.
     */
    public void setClassName(String className) {
        this.className = className;
    }

    /**
     * Gets the method name that executed the SQL query.
     * 
     * @return methodName that executed the SQL query.
     */
    public String getMethodName() {
        return methodName;
    }

    /**
     * Sets the method name that executes the SQL query.
     * 
     * @param methodName that executes the SQL query.
     */
    public void setMethodName(String methodName) {
        this.methodName = methodName;
    }

    /**
     * Gets the pool name in which the SQL statement is executed.
     * 
     * @return poolName in which the SQL statement is executed.
     */
    public String getPoolName() {
        return poolName;
    }

    /**
     * Sets the poolName in which the SQL statement is executed.
     * 
     * @param poolName in which the SQL statement is executed.
     */
    public void setPoolName(String poolName) {
        this.poolName = poolName;
    }

    /**
     * Gets the thread ID from which the SQL statement originated.
     * 
     * @return String threadID from which the SQL statement originated.
     */
    public String getThreadID() {
        return threadID;
    }

    /**
     * Sets the thread ID from which the SQL statement originated.
     * 
     * @param threadID from which the SQL statement originated.
     */    
    public void setThreadID(String threadID) {
        this.threadID = threadID;
    }

    /**
     * Gets the thread Name from which the SQL statement originated.
     * 
     * @return String threadName from which the SQL statement originated.
     */
    public String getThreadName() {
        return threadName;
    }

    /**
     * Sets the thread Name from which the SQL statement originated.
     * 
     * @param threadName from which the SQL statement originated.
     */    
    public void setThreadName(String threadName) {
        this.threadName = threadName;
    }

    /**
     * Gets the time of execution of query.
     * 
     * @return String timeStamp of execution of query.
     */    
    public String getTimeStamp() {
        return timeStamp;
    }

    /**
     * Sets the time of execution of query.
     * 
     * @param timeStamp of execution of query.
     */        
    public void setTimeStamp(String timeStamp) {
        this.timeStamp = timeStamp;
    }

    /**
     * Gets the parameters of the method that executed the SQL query. 
     * Includes information like SQL query, arguments and so on.
     * 
     * @return Object[] params method parameters that execute SQL query.
     */    
    public Object[] getParams() {
        return params;
    }
    
    /**
     * Sets the parameters of the method that executed the SQL query. 
     * Includes information like SQL query, arguments and so on.
     * 
     * @param params method parameters that execute SQL query.
     */    
    public void setParams(Object[] params) {
        this.params = params;
    }
}