All Downloads are FREE. Search and download functionalities are using the official Maven repository.

acolyte.jdbc.QueryResult Maven / Gradle / Ivy

There is a newer version: 1.2.9
Show newest version
package acolyte.jdbc;

import java.sql.SQLWarning;

/**
 * Query result.
 *
 * @author Cedric Chantepie
 */
public interface QueryResult extends Result {

    /**
     * Returns underlying row list.
     * @return the list of rows in this result
     */
    public RowList getRowList();

    // --- Shared ---

    /**
     * Nil query result
     */
    public static final QueryResult Nil = new Default(RowList.Nil);

    // --- Inner classes ---

    /**
     * Default implementation.
     */
    final class Default implements QueryResult {
        final RowList rowList;
        final SQLWarning warning;

        /**
         * Rows constructor.
         *
         * @param list the list of rows for this result
         */
        protected Default(final RowList list) {
            this(list, null);
        } // end of 

        /**
         * Bulk constructor
         *
         * @param list the list of rows for this result
         * @param warning the SQL warning
         */
        private Default(final RowList list, final SQLWarning warning) {
            this.rowList = list;
            this.warning = warning;
        } // end of 

        // ---

        /**
         * {@inheritDoc}
         */
        public RowList getRowList() { 
            return this.rowList;
        } // end of getRowList

        /**
         * {@inheritDoc}
         */
        public QueryResult withWarning(final SQLWarning warning) {
            return new Default(this.rowList, warning);
        } // end of withWarning

        /**
         * {@inheritDoc}
         */
        public QueryResult withWarning(final String reason) {
            return withWarning(new SQLWarning(reason));
        } // end of withWarning

        /**
         * {@inheritDoc}
         */
        public SQLWarning getWarning() {
            return this.warning;
        } // end of getWarning

        /**
         * {@inheritDoc}
         */
        public boolean equals(final Object o) {
            if (o == null || !(o instanceof QueryResult.Default)) {
                return false;
            } // end of if

            final QueryResult.Default other = (QueryResult.Default) o;

            return ((this.rowList == null && other.rowList == null) ||
                    (this.rowList != null && 
                     this.rowList.equals(other.rowList)));

        } // end of equals

        /**
         * {@inheritDoc}
         */
        public int hashCode() {
            return (this.rowList == null) ? -1 : this.rowList.hashCode();
        } // end of hashCode
    } // end of class Default
} // end of interface QueryResult




© 2015 - 2024 Weber Informatics LLC | Privacy Policy