src/jdk.incubator.adba/share/classes/jdk/incubator/sql2/SqlClob.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: 56380
diff changeset
     2
 * Copyright (c)  2017, 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
 */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    25
package jdk.incubator.sql2;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    26
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    27
import java.io.Reader;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    28
import java.io.Writer;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    29
import java.util.concurrent.CompletionStage;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    30
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    31
/**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    32
 * A reference to a CHARACTER LARGE OBJECT in the attached database.
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
public interface SqlClob extends AutoCloseable {
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
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    38
   * Return an {@link Operation} that will release the temporary resources
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    39
   * associated with this {@code SqlClob}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    40
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    41
   * @return an {@link Operation} that will release the temporary resources
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    42
   * associated with this {@code SqlClob}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    43
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    44
  public Operation<Void> closeOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    45
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    46
  /**
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    47
   * {@inheritDoc}
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    48
   */
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    49
  @Override
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    50
  public default void close() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    51
    this.closeOperation().submit();
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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    54
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    55
   * Return a {@link Operation} that fetches the position of this {@code SqlClob}.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    56
   * Position 0 is immediately before the first char in the {@code SqlClob}.
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    57
   * Position 1 is the first char in the {@code SqlClob}, etc. Position
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    58
   * {@link length()} is the last char in the {@code SqlClob}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    59
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    60
   * Position is between 0 and length + 1.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    61
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    62
   * @return an {@link Operation} that returns the position of this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    63
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    64
   * {@code SqlClob} is closed.;
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    65
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    66
  public Operation<Long> getPositionOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    67
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    68
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    69
   * Get the position of this {@code SqlClob}. Position 0 is immediately before the
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    70
   * first char in the {@code SqlClob}. Position 1 is the first char in the
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    71
   * {@code SqlClob}, etc. Position {@link length()} is the last char in the SqlClob.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    72
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    73
 Position is between 0 and length + 1.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    74
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    75
 ISSUE: Should position be 1-based as SQL seems to do or 0-based as Java
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    76
 does?
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    77
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    78
   * @return a future which value is the position of this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    79
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    80
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    81
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    82
  public default CompletionStage<Long> getPosition() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    83
    return getPositionOperation().submit().getCompletionStage();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    84
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    85
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    86
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    87
   * Return a {@link Operation} that fetches the length of this {@code SqlClob}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    88
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    89
   * @return a {@link Operation} that returns the length of this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    90
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    91
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    92
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    93
  public Operation<Long> lengthOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    94
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    95
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    96
   * Get the length of this {@code SqlClob}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    97
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    98
   * @return a {@link java.util.concurrent.Future} which value is the number of
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
    99
   * chars in this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   100
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   101
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   102
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   103
  public default CompletionStage<Long> length() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   104
    return lengthOperation().submit().getCompletionStage();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   105
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   106
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   107
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   108
   * Return an {@link Operation} that sets the position of this {@code SqlClob}. If
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   109
   * {@code offset} exceeds the length of this {@code SqlClob} set position to the
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   110
   * length + 1 of this {@code SqlClob}, ie one past the last char.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   111
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   112
   * @param offset a non-negative number
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   113
   * @return a {@link Operation} that sets the position of this {@code SqlClob}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   114
   * @throws IllegalArgumentException if {@code offset} is less than 0
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   115
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   116
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   117
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   118
  public Operation<Long> setPositionOperation(long offset);
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   119
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   120
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   121
   * Set the position of this {@code SqlClob}. If {@code offset} exceeds the length
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   122
   * of this {@code SqlClob} set position to the length + 1 of this {@code SqlClob},
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   123
   * ie one past the last char.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   124
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   125
   * @param offset the 1-based position to set
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   126
   * @return this {@code SqlClob}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   127
   * @throws IllegalArgumentException if {@code offset} is less than 0
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   128
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   129
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   130
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   131
  public default SqlClob setPosition(long offset) {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   132
    setPositionOperation(offset).submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   133
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   134
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   135
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   136
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   137
   * Return an {@link Operation} to set the position to the beginning of the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   138
   * next occurrence of the target after the position. If there is no such
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   139
   * occurrence set the position to 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   140
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   141
   * @param target a {@code SqlClob} created by the same {@link Session}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   142
   * containing the char sequence to search for
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   143
   * @return an {@link Operation} that locates {@code target} in this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   144
   * {@code SqlClob}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   145
   * @throws IllegalArgumentException if {@code target} was created by some
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   146
   * other {@link Session}
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   147
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   148
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   149
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   150
  public Operation<Long> locateOperation(SqlClob target);
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   151
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   152
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   153
   * Set the position to the beginning of the next occurrence of the target
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   154
   * after the position. If there is no such occurrence set the position to 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   155
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   156
   * @param target the char sequence to search for
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   157
   * @return this {@code SqlClob}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   158
   * @throws IllegalArgumentException if {@code target} was created by some
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   159
   * other {@link Session}
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   160
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   161
   * {@code SqlClob} is closed
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   162
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   163
  public default SqlClob locate(SqlClob target) {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   164
    locateOperation(target).submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   165
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   166
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   167
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   168
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   169
   * Return an {@link Operation} to set the position to the beginning of the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   170
   * next occurrence of the target after the position. If there is no such
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   171
   * occurrence set the position to 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   172
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   173
   * @param target the char sequence to search for. Not {@code null}. Captured.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   174
   * @return an {@link Operation} that locates {@code target} in this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   175
   * {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   176
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   177
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   178
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   179
  public Operation<Long> locateOperation(CharSequence target);
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   180
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   181
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   182
   * Set the position to the beginning of the next occurrence of the target
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   183
   * after the position. If there is no such occurrence set the position to 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   184
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   185
   * @param target the char sequence to search for
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   186
   * @return this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   187
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   188
   * {@code SqlClob} is closed.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   189
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   190
  public default SqlClob locate(CharSequence target) {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   191
    locateOperation(target).submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   192
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   193
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   194
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   195
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   196
   * Return an {@link Operation} that truncates this {@code SqlClob} so that the
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   197
   * current position is the end of the {@code SqlClob}. If the position is N, then
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   198
   * after trim() the length is N - 1. The position is still N. This will fail
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   199
   * if position is 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   200
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   201
   * @return an {@link Operation} that trims the length of this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   202
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   203
   * {@code SqlClob} is closed or position is 0.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   204
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   205
  public Operation<Long> trimOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   206
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   207
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   208
   * Truncate this {@code SqlClob} so that the current position is the end of the
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   209
   * {@code SqlClob}. If the position is N, then after {@link trim()} the length is
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   210
   * N - 1. The position is still N. This will fail if position is 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   211
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   212
   * @return this {@code SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   213
   * @throws IllegalStateException if the {@link Session} that created this
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   214
   * {@code SqlClob} is closed or position is 0.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   215
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   216
  public default SqlClob trim() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   217
    trimOperation().submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   218
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   219
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   220
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   221
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   222
   * Returns a {@link Reader} for the characters in this {@code SqlClob}.
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   223
   * Characters are read starting at the current position. Each character read
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   224
   * advances the position by one.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   225
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   226
   * ISSUE: There is no character analog to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   227
   * {@link java.nio.channels.AsynchronousByteChannel}. It is trivial to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   228
   * construct a {@link java.io.Reader} from an
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   229
   * {@link java.nio.channels.AsynchronousByteChannel} however.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   230
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   231
   * @return a Reader for the characters in this SqlClob
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   232
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   233
  public Reader getReader();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   234
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   235
  /**
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   236
   * Returns a Writer for this {@code SqlClob}. Characters are written starting at
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   237
   * the current position. Each character written advances the position by one.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   238
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   239
   * ISSUE: There is no character analog to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   240
   * {@link java.nio.channels.AsynchronousByteChannel}. It is trivial to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   241
   * construct a {@link java.io.Writer} from an
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   242
   * {@link java.nio.channels.AsynchronousByteChannel} however.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   243
   *
56997
c9cbac2979fb JDK-8188051-branch October 20 ABDA updates
lancea
parents: 56824
diff changeset
   244
   * @return a {@link java.io.Writer} for the characters of this {@code SqlClob}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   245
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   246
  public Writer getWriter();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   247
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   248
}