src/jdk.incubator.adba/share/classes/jdk/incubator/sql2/SqlClob.java
author lancea
Mon, 09 Jul 2018 15:09:06 -0400
branchJDK-8188051-branch
changeset 56824 62e92191354d
parent 56797 fb523d4d9185
child 56997 c9cbac2979fb
permissions -rw-r--r--
JDK-8188051-branch latest 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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    39
   * associated with this {@link SqlClob}.
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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    42
   * associated with this {@link SqlClob}.
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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    46
  @Override
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    47
  public default void close() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    48
    this.closeOperation().submit();
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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    51
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    52
   * Return a {@link Operation} that fetches the position of this {@link SqlClob}.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    53
   * Position 0 is immediately before the first char in the {@link SqlClob}.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    54
   * Position 1 is the first char in the {@link SqlClob}, etc. Position
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    55
   * {@link length()} is the last char in the {@link SqlClob}.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    56
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    57
   * Position is between 0 and length + 1.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    58
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    59
   * @return an {@link Operation} that returns the position of this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    60
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    61
   * {@link SqlClob} is closed.;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    62
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    63
  public Operation<Long> getPositionOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    64
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
   * Get the position of this {@link SqlClob}. Position 0 is immediately before the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    67
   * first char in the {@link SqlClob}. Position 1 is the first char in the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    68
   * {@link SqlClob}, etc. Position {@link length()} is the last char in the SqlClob.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    69
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    70
 Position is between 0 and length + 1.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    71
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    72
 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
    73
 does?
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
   * @return a future which value is the position of this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    76
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    77
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    78
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    79
  public default CompletionStage<Long> getPosition() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    80
    return getPositionOperation().submit().getCompletionStage();
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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    83
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    84
   * Return a {@link Operation} that fetches the length of this {@link SqlClob}.
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
   * @return a {@link Operation} that returns the length of this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    87
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    88
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    89
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    90
  public Operation<Long> lengthOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    91
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
   * Get the length of this {@link SqlClob}.
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
   * @return a {@link java.util.concurrent.Future} which value is the number of
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    96
   * chars in this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
    97
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    98
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
    99
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   100
  public default CompletionStage<Long> length() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   101
    return lengthOperation().submit().getCompletionStage();
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
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   104
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   105
   * Return an {@link Operation} that sets the position of this {@link SqlClob}. If
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   106
   * {@code offset} exceeds the length of this {@link SqlClob} set position to the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   107
   * length + 1 of this {@link SqlClob}, ie one past the last char.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   108
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   109
   * @param offset a non-negative number
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   110
   * @return a {@link Operation} that sets the position of this {@link SqlClob}
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   111
   * @throws IllegalArgumentException if {@code offset} is less than 0
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   112
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   113
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   114
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   115
  public Operation<Long> setPositionOperation(long offset);
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   116
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
   * Set the position of this {@link SqlClob}. If {@code offset} exceeds the length
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   119
   * of this {@link SqlClob} set position to the length + 1 of this {@link SqlClob},
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   120
   * ie one past the last char.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   121
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   122
   * @param offset the 1-based position to set
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   123
   * @return this {@link SqlClob}
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   124
   * @throws IllegalArgumentException if {@code offset} is less than 0
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   125
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   126
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   127
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   128
  public default SqlClob setPosition(long offset) {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   129
    setPositionOperation(offset).submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   130
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   131
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   132
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   133
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   134
   * 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
   135
   * 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
   136
   * occurrence set the position to 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   137
   *
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   138
   * @param target a {@link SqlClob} created by the same {@link Session}
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   139
   * containing the char sequence to search for
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   140
   * @return an {@link Operation} that locates {@code target} in this
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   141
   * {@link SqlClob}
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   142
   * @throws IllegalArgumentException if {@code target} was created by some
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   143
   * other {@link Session}
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   144
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   145
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   146
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   147
  public Operation<Long> locateOperation(SqlClob target);
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   148
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
   * 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
   151
   * 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
   152
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   153
   * @param target the char sequence to search for
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   154
   * @return this {@link SqlClob}
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   155
   * @throws IllegalArgumentException if {@code target} was created by some
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   156
   * other {@link Session}
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   157
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   158
   * {@link SqlClob} is closed
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   159
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   160
  public default SqlClob locate(SqlClob target) {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   161
    locateOperation(target).submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   162
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   163
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   164
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   165
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   166
   * 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
   167
   * 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
   168
   * occurrence set the position to 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   169
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   170
   * @param target the char sequence to search for. Not {@code null}. Captured.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   171
   * @return an {@link Operation} that locates {@code target} in this
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   172
   * {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   173
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   174
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   175
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   176
  public Operation<Long> locateOperation(CharSequence target);
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   177
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
   * 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
   180
   * 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
   181
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   182
   * @param target the char sequence to search for
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   183
   * @return this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   184
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   185
   * {@link SqlClob} is closed.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   186
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   187
  public default SqlClob locate(CharSequence target) {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   188
    locateOperation(target).submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   189
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   190
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   191
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   192
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   193
   * Return an {@link Operation} that truncates this {@link SqlClob} so that the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   194
   * current position is the end of the {@link SqlClob}. If the position is N, then
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   195
   * 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
   196
   * if position is 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   197
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   198
   * @return an {@link Operation} that trims the length of this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   199
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   200
   * {@link SqlClob} is closed or position is 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   201
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   202
  public Operation<Long> trimOperation();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   203
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
   * Truncate this {@link SqlClob} so that the current position is the end of the
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   206
   * {@link SqlClob}. If the position is N, then after {@link trim()} the length is
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   207
   * 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
   208
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   209
   * @return this {@link SqlClob}
56824
62e92191354d JDK-8188051-branch latest updates
lancea
parents: 56797
diff changeset
   210
   * @throws IllegalStateException if the {@link Session} that created this
56380
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   211
   * {@link SqlClob} is closed or position is 0.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   212
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   213
  public default SqlClob trim() {
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   214
    trimOperation().submit();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   215
    return this;
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   216
  }
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   217
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   218
  /**
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   219
   * Returns a {@link Reader} for the characters in this {@link SqlClob}.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   220
   * Characters are read starting at the current position. Each character read
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   221
   * advances the position by one.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   222
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   223
   * ISSUE: There is no character analog to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   224
   * {@link java.nio.channels.AsynchronousByteChannel}. It is trivial to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   225
   * construct a {@link java.io.Reader} from an
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   226
   * {@link java.nio.channels.AsynchronousByteChannel} however.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   227
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   228
   * @return a Reader for the characters in this SqlClob
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   229
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   230
  public Reader getReader();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   231
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
   * Returns a Writer for this {@link SqlClob}. Characters are written starting at
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   234
   * the current position. Each character written advances the position by one.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   235
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   236
   * ISSUE: There is no character analog to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   237
   * {@link java.nio.channels.AsynchronousByteChannel}. It is trivial to
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   238
   * construct a {@link java.io.Writer} from an
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   239
   * {@link java.nio.channels.AsynchronousByteChannel} however.
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   240
   *
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   241
   * @return a Writer for the characters of this SqlClob
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   242
   */
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   243
  public Writer getWriter();
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   244
f06946e00a26 JDK-8188051-branch: add jdk.incubator.adba
lancea
parents:
diff changeset
   245
}