src/jdk.incubator.adba/share/classes/jdk/incubator/sql2/Result.java
author lancea
Sat, 20 Oct 2018 08:17:38 -0400
branchJDK-8188051-branch
changeset 56997 c9cbac2979fb
parent 56824 62e92191354d
permissions -rw-r--r--
JDK-8188051-branch October 20 ABDA updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     1
/*
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
     2
 * Copyright (c)  2018, Oracle and/or its affiliates. All rights reserved.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     4
 *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    10
 *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    15
 * accompanied this code).
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    16
 *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    20
 *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    23
 * questions.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    24
 */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    25
package jdk.incubator.sql2;
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    26
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    27
import java.util.ArrayList;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    28
import java.util.Iterator;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    29
import java.util.List;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    30
import java.util.NoSuchElementException;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    31
import java.util.Spliterator;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    32
import java.util.function.Consumer;
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    33
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    34
/**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    35
 *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    36
 */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    37
public interface Result {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    38
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    39
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    40
   * A {@code Result} that is just a number of rows modified, a {@link Long}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    41
   *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    42
   * Note: It is certainly true that this is not needed; {@link Long} could be
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    43
   * used instead. Seems like there might be a documentational advantage to
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    44
   * having this type. If you don't like it, just mentally replace it with
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    45
   * {@link Long} everywhere it appears.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    46
   */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    47
  public static interface RowCount extends Result {
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    48
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    49
    /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    50
     *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    51
     * @return
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    52
     */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    53
    public long getCount();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    54
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    55
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    56
  /**
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    57
   * A mutable handle to one value of an ordered sequence of columns of a row or
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    58
   * of out parameters. Columns have a 1-based index and optionally an
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    59
   * identifier. Identifiers are not guaranteed to be unique.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    60
   * <br>
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    61
   * A newly created Column is initially positioned on the first column of 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    62
   * it's sequence. The position is modified by calls to {@link #at(int)}, 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    63
   * {@link #at(String)}, {@link #next()}, or {@link #next(int)}. 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    64
   * The methods {@link #clone()}, {@link #slice(int)}, 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    65
   * {@link #forEach(Consumer)}, and {@link #iterator()} create new instances. 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    66
   * All other methods return this instance (modifying it if necessary) 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    67
   * including {@link #next()}, and {@link #forEachRemaining(Consumer)}.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    68
   * <br>
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    69
   * In cases where the result of an operation has no columns, an instance of
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    70
   * this class may represent an empty sequence of columns. Instances 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    71
   * associated to the empty sequence return 0 from calls to {@link #index()} 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    72
   * and {@link #absoluteIndex()}. It is illegal to modify the position or 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    73
   * accesses any attribute of a column if the sequence is empty.   
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    74
   */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    75
  public interface Column extends Result, Iterable<Column>, Iterator<Column>, Cloneable {
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    76
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    77
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    78
     * Return the value of this column as an instance of the given type.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    79
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    80
     * @param <T>
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    81
     * @param type
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    82
     * @return the value of this {@link Column}
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    83
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    84
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    85
    public <T> T get(Class<T> type);
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    86
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    87
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    88
     * Return the value of this {@link Column} as an instance of the default
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    89
     * Java type for this column.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    90
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    91
     * @param <T>
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    92
     * @return the value of this {@link Column}
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    93
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    94
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    95
    public default <T> T get() {
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    96
      return get(javaType());
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    97
    }
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    98
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
    99
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   100
     * Return the identifier of this {@link Column}. May be null.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   101
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   102
     * @return the identifier of this {@link Column}. May be null
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   103
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   104
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   105
    public String identifier();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   106
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   107
    /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   108
     * Return the 1-based index of this {@link Column}. If the column 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   109
     * sequence is empty, the return value is 0.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   110
     * <br>
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   111
     * The returned value is relative to the slice if this {@link Column} is 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   112
     * the result of a call to {@link #slice(int)}. 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   113
     * <br>
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   114
     * {@code col.slice(n).index() == 1}.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   115
     * <br>
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   116
     * {@code col.slice(n).next().index() == 2}.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   117
     *  
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   118
     * @return the index of this {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   119
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   120
    public int index();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   121
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   122
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   123
     * Return the 1-based index of this {@link Column} relative to the original
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   124
     * sequence of values. If the column sequence is empty, the return value 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   125
     * is 0.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   126
     * <br>
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   127
     * {@code col.absoluteIndex() == col.slice(n).absoluteIndex()}.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   128
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   129
     * @return the absolute 1-based index of this {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   130
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   131
    public int absoluteIndex();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   132
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   133
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   134
     * Return the SQL type of the value of this {@link Column}.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   135
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   136
     * @return the SQL type of this value
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   137
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   138
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   139
    public SqlType sqlType();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   140
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   141
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   142
     * Return the Java type that best represents the value of this
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   143
     * {@link Column}.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   144
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   145
     * @param <T>
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   146
     * @return a {@link Class} that best represents the value of this
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   147
     * {@link Column}
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   148
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   149
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   150
    public <T>Class<T> javaType();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   151
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   152
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   153
     * The length of the current value if defined.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   154
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   155
     * @return
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   156
     * @throws UnsupportedOperationException if the length of the current value
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   157
     * is undefined
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   158
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   159
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   160
    public long length();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   161
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   162
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   163
     * Return the number of remaining values accessible by this {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   164
     * excluding the current value. This is the number of times {@code next()}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   165
     * can be called before {@code hasNext()} returns false.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   166
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   167
     * @return the number of values remaining
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   168
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   169
    public int numberOfValuesRemaining();
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   170
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   171
    /**
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   172
     * Modify this {@link Column} to point to a value identified by id.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   173
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   174
     * @apiNote The value specified for {@code id} represents the name of a
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   175
     * column or parameter marker for the underlying data source and is
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   176
     * implementation specific. This may be a simple SQL identifier, a quoted
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   177
     * identifier, or any other type of identifier supported by the data source.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   178
     * <p>
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   179
     * Consult your implementation&#39;s documentation for additional
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   180
     * information.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   181
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   182
     * @param id an identifier. Not null
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   183
     * @return this {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   184
     * @throws NoSuchElementException if id does not identify exactly one value
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   185
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   186
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   187
    public Column at(String id);
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   188
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   189
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   190
     * Modify this {@link Column} to point to the value at {@code index}. The
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   191
     * first value is at index 1. Negative numbers count back from the last 
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   192
     * value. The last value is at index -1.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   193
     *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   194
     * @param index a new index
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   195
     * @return this {@link Column}
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   196
     * @throws NoSuchElementException if {@code index > length}, 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   197
     * {@code index < -length}, or {@code index == 0}
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   198
     * @throws IllegalStateException if the column sequence is empty.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   199
     */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   200
    public Column at(int index);
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   201
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   202
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   203
     * Modify this {@link Column} to point to the value at the current index +
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   204
     * {@code offset}. If {@code offset} is 0 this is a noop. If {@code offset}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   205
     * is negative the new index is less than the current index. If the new
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   206
     * index would be less than 1 or greater than the sequence length this 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   207
     * {@link Column} is not modified and {@link IllegalArgumentException} is 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   208
     * thrown.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   209
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   210
     * @param offset an increment to the current index
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   211
     * @return this {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   212
     * @throws NoSuchElementException if the new index would be less than 1 or
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   213
     * greater than the sequence length.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   214
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   215
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   216
    public default Column next(int offset) {
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   217
      if (index() == 0) {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   218
        throw new IllegalStateException();
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   219
      }
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   220
      int newIndex = index() + offset;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   221
      if (offset > numberOfValuesRemaining() || newIndex < 1) {
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   222
        throw new NoSuchElementException();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   223
      }
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   224
      return at(newIndex);
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   225
    }
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   226
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   227
    /**
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   228
     * Return a new {@link Column} that is a handle to a subsequence of the
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   229
     * sequence of values referenced by this {@link Column}. The subsequence
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   230
     * consists of {@code numValues} number of values. If {@code numValues} is
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   231
     * positive the values are the value of this column and its successors. If
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   232
     * {@code numValues} is negative the values are the predecessors of this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   233
     * column not including this {@link Column}.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   234
     * <br> 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   235
     * The returned {@link Column} is positioned on the first value of the 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   236
     * slice.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   237
     * <br>
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   238
     * The order of the values of the new {@link Column} is the same as the 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   239
     * order of the values of this {@link Column}. This {@link Column} 
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   240
     * is not modified.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   241
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   242
     * @param numValues the number of columns to include in the slice
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   243
     * @return a new {@link Column}.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   244
     * @throws NoSuchElementException if the current index plus
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   245
     * {@code numValues} is greater than the sequence length or less than 1
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   246
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   247
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   248
    public Column slice(int numValues);
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   249
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   250
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   251
     * Return a new {@link Column} that is a duplicate of this {@link Column}.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   252
     * This {@link Column} is not modified.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   253
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   254
     * @return a new {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   255
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   256
    public Column clone();
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   257
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   258
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   259
     * Modify this {@link Column} to point to the next value in the sequence.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   260
     *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   261
     * @return this {@link Column}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   262
     * @throws NoSuchElementException if the new index would be greater than
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   263
     * the sequence length.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   264
     * @throws IllegalStateException if the column sequence is empty.
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   265
     */
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   266
    public default Column next() {
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   267
      return next(1);
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   268
    }
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   269
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   270
    /**
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   271
     * {@inheritDoc}
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   272
     */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   273
    @Override
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   274
    public default boolean hasNext() {
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   275
      return numberOfValuesRemaining() > 0;
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   276
    }
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   277
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   278
    /**
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   279
     * {@inheritDoc}
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   280
     */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   281
    @Override
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   282
    public default void forEach(Consumer<? super Column> action) {
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   283
      if (index() == 0) {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   284
        return;
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   285
      }
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   286
      action.accept(this.clone());
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   287
      while (hasNext()) {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   288
        action.accept(next().clone());
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   289
      }
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   290
    }
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   291
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   292
    /**
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   293
     * {@inheritDoc}
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   294
     */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   295
    @Override
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   296
    public default Iterator<Column> iterator() {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   297
      return new Iterator<Column>() {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   298
        Column next = Column.this.index() == 0 ? null : Column.this.clone();
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   299
  
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   300
        @Override
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   301
        public boolean hasNext() {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   302
          return next != null;
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   303
        }
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   304
  
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   305
        @Override
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   306
        public Column next() {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   307
          if (!hasNext()) {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   308
            throw new NoSuchElementException();
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   309
          }
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   310
          
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   311
          Column prev = next.clone();
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   312
          
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   313
          if (next.hasNext()) {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   314
            next.next();
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   315
          }
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   316
          else {
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   317
            next = null;
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   318
          }
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   319
          
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   320
          return prev;
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   321
        }
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   322
      };
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   323
    }
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   324
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   325
    /**
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   326
     * TODO This almost certainly works correctly but it doesn't integrate well
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   327
     * with the other access patterns. A better approach would be a Spliterator
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   328
     * that overrides trySplit and creates new slices for each batch.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   329
     *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   330
     * There is a fundamental problem with mixing Spliterator with the other
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   331
     * access patterns. The other patterns assume navigation from one column to
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   332
     * an arbitrary other column. Spliterator.trySplit can divide the column
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   333
     * sequence in arbitrary places invalidating the assumption about column
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   334
     * navigation.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   335
     *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   336
     * @return a {@link java.util.Spliterator}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   337
     */
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   338
    /**
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   339
     * {@inheritDoc}
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   340
     */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   341
    @Override
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   342
    public default Spliterator<Column> spliterator() {
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   343
      List<Column> list = new ArrayList<>(numberOfValuesRemaining());
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   344
      this.clone().forEach(c -> list.add(c.slice(1)));
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   345
      return java.util.Spliterators.spliterator(list.toArray(), numberOfValuesRemaining());
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   346
    }
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   347
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   348
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   349
  /**
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   350
   * Used by {@link OutOperation} to expose the out parameters of a stored
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   351
   * procedure call.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   352
   *
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   353
   * This exists to allow for future additions.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   354
   */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   355
  public interface OutColumn extends Column {
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   356
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   357
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   358
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   359
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   360
   * Used by {@link RowOperation} to expose each row of a row sequence.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   361
   */
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   362
  public static interface RowColumn extends Column {
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   363
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   364
    /**
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   365
     * The count of rows in the row sequence preceeding this {@link RowColumn}.
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   366
     * For the first row in the row sequence the {@code rowNumber} is 0.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   367
     *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   368
     * @return the count of rows in the row sequence preceeding this
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   369
     * {@link RowColumn}
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   370
     * @throws IllegalStateException if the call that was passed this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   371
     * {@code Result} has ended
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   372
     */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   373
    public long rowNumber();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   374
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   375
    /**
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   376
     * Terminate processing of the rows in this {@link RowOperation}. No further
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   377
     * rows in the row sequence will be processed. All subsequent rows, if any,
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   378
     * will be ignored. Any rows already fetched will not be processed. Any rows
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   379
     * not yet fetched may or may not be fetched. If fetched they will not be
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   380
     * processed. The RowOperation will be completed normally, as though the
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   381
     * current row were the last row of the row sequence.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   382
     *
56797
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   383
     * @throws IllegalStateException if the call that was passed this
fb523d4d9185 JDK-8188051-branch updates
lancea
parents: 56397
diff changeset
   384
     * {@link RowColumn} has ended
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   385
     */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   386
    public void cancel();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   387
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   388
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   389
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   390
}