/*
* Copyright (C) 2017 Julien Viet
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package io.vertx.sqlclient;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.sqlclient.data.Numeric;
import io.vertx.sqlclient.impl.ArrayTuple;
import io.netty.buffer.ByteBuf;
import io.vertx.codegen.annotations.Fluent;
import io.vertx.codegen.annotations.GenIgnore;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.buffer.Buffer;
import io.vertx.sqlclient.impl.ListTuple;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.time.*;
import java.time.temporal.Temporal;
import java.util.*;
A general purpose tuple.
/**
* A general purpose tuple.
*/
@VertxGen
public interface Tuple {
The JSON null literal value.
It is used to distinguish a JSON null literal value from the Java null
value. This is only used when the database supports JSON types. /**
* The JSON null literal value.
* <br/>
* It is used to distinguish a JSON null literal value from the Java {@code null} value. This is only
* used when the database supports JSON types.
*/
Object JSON_NULL = new Object() {
@Override
public String toString() {
return "null";
}
};
Returns: a new empty tuple
/**
* @return a new empty tuple
*/
static Tuple tuple() {
return new ArrayTuple(10);
}
Wrap the provided list
with a tuple.
The list is not copied and is used as store for tuple elements.
Returns: the list wrapped as a tuple
/**
* Wrap the provided {@code list} with a tuple.
* <br/>
* The list is not copied and is used as store for tuple elements.
*
* @return the list wrapped as a tuple
*/
@SuppressWarnings("unchecked")
static <T> Tuple from(List<T> list) {
return wrap(new ArrayList<>(list));
}
Wrap the provided array
with a tuple.
The array is not copied and is used as store for tuple elements.
Returns: the list wrapped as a tuple
/**
* Wrap the provided {@code array} with a tuple.
* <br/>
* The array is not copied and is used as store for tuple elements.
*
* @return the list wrapped as a tuple
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
static Tuple from(Object[] array) {
ArrayList<Object> list = new ArrayList<>(array.length);
for (Object o : array) {
list.add(o);
}
return wrap(list);
}
Wrap the provided list
with a tuple.
The list is not copied and is used as store for tuple elements.
Returns: the list wrapped as a tuple
/**
* Wrap the provided {@code list} with a tuple.
* <br/>
* The list is not copied and is used as store for tuple elements.
*
* @return the list wrapped as a tuple
*/
@SuppressWarnings("unchecked")
static <T> Tuple wrap(List<T> list) {
return new ListTuple((List<Object>) list);
}
Wrap the provided array
with a tuple.
The array is not copied and is used as store for tuple elements.
Returns: the list wrapped as a tuple
/**
* Wrap the provided {@code array} with a tuple.
* <br/>
* The array is not copied and is used as store for tuple elements.
*
* @return the list wrapped as a tuple
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
static Tuple wrap(Object[] array) {
return new ListTuple(Arrays.asList(array));
}
Create a tuple of one element.
Params: - elt1 – the first value
Returns: the tuple
/**
* Create a tuple of one element.
*
* @param elt1 the first value
* @return the tuple
*/
static Tuple of(Object elt1) {
ArrayTuple tuple = new ArrayTuple(1);
tuple.addValue(elt1);
return tuple;
}
Create a tuple of two elements.
Params: - elt1 – the first value
- elt2 – the second value
Returns: the tuple
/**
* Create a tuple of two elements.
*
* @param elt1 the first value
* @param elt2 the second value
* @return the tuple
*/
static Tuple of(Object elt1, Object elt2) {
ArrayTuple tuple = new ArrayTuple(2);
tuple.addValue(elt1);
tuple.addValue(elt2);
return tuple;
}
Create a tuple of three elements.
Params: - elt1 – the first value
- elt2 – the second value
- elt3 – the third value
Returns: the tuple
/**
* Create a tuple of three elements.
*
* @param elt1 the first value
* @param elt2 the second value
* @param elt3 the third value
* @return the tuple
*/
static Tuple of(Object elt1, Object elt2, Object elt3) {
ArrayTuple tuple = new ArrayTuple(3);
tuple.addValue(elt1);
tuple.addValue(elt2);
tuple.addValue(elt3);
return tuple;
}
Create a tuple of four elements.
Params: - elt1 – the first value
- elt2 – the second value
- elt3 – the third value
- elt4 – the fourth value
Returns: the tuple
/**
* Create a tuple of four elements.
*
* @param elt1 the first value
* @param elt2 the second value
* @param elt3 the third value
* @param elt4 the fourth value
* @return the tuple
*/
static Tuple of(Object elt1, Object elt2, Object elt3, Object elt4) {
ArrayTuple tuple = new ArrayTuple(4);
tuple.addValue(elt1);
tuple.addValue(elt2);
tuple.addValue(elt3);
tuple.addValue(elt4);
return tuple;
}
Create a tuple of five elements.
Params: - elt1 – the first value
- elt2 – the second value
- elt3 – the third value
- elt4 – the fourth value
- elt5 – the fifth value
Returns: the tuple
/**
* Create a tuple of five elements.
*
* @param elt1 the first value
* @param elt2 the second value
* @param elt3 the third value
* @param elt4 the fourth value
* @param elt5 the fifth value
* @return the tuple
*/
static Tuple of(Object elt1, Object elt2, Object elt3, Object elt4, Object elt5) {
ArrayTuple tuple = new ArrayTuple(5);
tuple.addValue(elt1);
tuple.addValue(elt2);
tuple.addValue(elt3);
tuple.addValue(elt4);
tuple.addValue(elt5);
return tuple;
}
Create a tuple of six elements.
Params: - elt1 – the first value
- elt2 – the second valueg
- elt3 – the third value
- elt4 – the fourth value
- elt5 – the fifth value
- elt6 – the sixth value
Returns: the tuple
/**
* Create a tuple of six elements.
*
* @param elt1 the first value
* @param elt2 the second valueg
* @param elt3 the third value
* @param elt4 the fourth value
* @param elt5 the fifth value
* @param elt6 the sixth value
* @return the tuple
*/
static Tuple of(Object elt1, Object elt2, Object elt3, Object elt4, Object elt5, Object elt6) {
ArrayTuple tuple = new ArrayTuple(6);
tuple.addValue(elt1);
tuple.addValue(elt2);
tuple.addValue(elt3);
tuple.addValue(elt4);
tuple.addValue(elt5);
tuple.addValue(elt6);
return tuple;
}
Create a tuple of an arbitrary number of elements.
Params: - elt1 – the first element
- elts – the remaining elements
Returns: the tuple
/**
* Create a tuple of an arbitrary number of elements.
*
* @param elt1 the first element
* @param elts the remaining elements
* @return the tuple
*/
@GenIgnore
static Tuple of(Object elt1, Object... elts) {
ArrayTuple tuple = new ArrayTuple(1 + elts.length);
tuple.addValue(elt1);
for (Object elt: elts) {
tuple.addValue(elt);
}
return tuple;
}
Create a tuple with the provided elements
list. The elements
list is not modified. Params: - elements – the list of elements
Returns: the tuple
/**
* Create a tuple with the provided {@code elements} list.
* <p/>
* The {@code elements} list is not modified.
*
* @param elements the list of elements
* @return the tuple
*/
static Tuple tuple(List<Object> elements) {
return new ArrayTuple(elements);
}
Get an object value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an object value at {@code pos}.
*
* @param pos the position
* @return the value
*/
Object getValue(int pos);
Get a boolean value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a boolean value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Boolean getBoolean(int pos) {
return (Boolean) getValue(pos);
}
Get a short value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a short value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Short getShort(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Short) {
return (Short) val;
} else if (val instanceof Number) {
return ((Number) val).shortValue();
} else if (val instanceof Enum<?>) {
return (short)((Enum<?>) val).ordinal();
} else {
return (Short) val; // Throw CCE
}
}
Get an integer value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an integer value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Integer getInteger(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Integer) {
return (Integer) val;
} else if (val instanceof Number) {
return ((Number) val).intValue();
} else if (val instanceof Enum<?>) {
return ((Enum<?>) val).ordinal();
} else {
return (Integer) val; // Throw CCE
}
}
Get a long value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a long value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Long getLong(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Long) {
return (Long) val;
} else if (val instanceof Number) {
return ((Number) val).longValue();
} else if (val instanceof Enum<?>) {
return (long)((Enum<?>) val).ordinal();
} else {
return (Long) val; // Throw CCE
}
}
Get a float value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a float value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Float getFloat(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Float) {
return (Float) val;
} else if (val instanceof Number) {
return ((Number) val).floatValue();
} else if (val instanceof Enum<?>) {
return (float)((Enum<?>) val).ordinal();
} else {
return (Float) val; // Throw CCE
}
}
Get a double value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a double value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Double getDouble(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Double) {
return (Double) val;
} else if (val instanceof Number) {
return ((Number) val).doubleValue();
} else if (val instanceof Enum<?>) {
return (double)((Enum<?>) val).ordinal();
} else {
return (Double) val; // Throw CCE
}
}
Get Numeric
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get {@link Numeric} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Numeric getNumeric(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Numeric) {
return (Numeric) val;
} else if (val instanceof Number) {
return Numeric.create((Number) val);
} else {
return (Numeric) val; // Throw CCE
}
}
Get a string value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a string value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default String getString(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof String) {
return (String) val;
} else if (val instanceof Enum<?>) {
return ((Enum<?>) val).name();
} else {
throw new ClassCastException("Invalid String value type " + val.getClass());
}
}
Get a JsonObject
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a {@link JsonObject} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default JsonObject getJsonObject(int pos) {
return (JsonObject) getValue(pos);
}
Get a JsonArray
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a {@link JsonArray} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default JsonArray getJsonArray(int pos) {
return (JsonArray) getValue(pos);
}
Get a JSON element at pos
, the element might be null
or one of the following types:
- String
- Number
- JsonObject
- JsonArray
- Boolean
Params: - pos – the position
Returns: the value
/**
* Get a JSON element at {@code pos}, the element might be {@link io.vertx.sqlclient.Tuple#JSON_NULL null} or one of the following types:
* <ul>
* <li>String</li>
* <li>Number</li>
* <li>JsonObject</li>
* <li>JsonArray</li>
* <li>Boolean</li>
* </ul>
*
* @param pos the position
* @return the value
*/
default Object getJson(int pos) {
Object val = getValue(pos);
if (val == null ||
val == Tuple.JSON_NULL ||
val instanceof String ||
val instanceof Boolean ||
val instanceof Number ||
val instanceof JsonObject ||
val instanceof JsonArray) {
return val;
} else {
throw new ClassCastException("Invalid JSON value type " + val.getClass());
}
}
Get a Temporal
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a {@link java.time.temporal.Temporal} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Temporal getTemporal(int pos) {
return (Temporal) getValue(pos);
}
Params: - pos – the position
Returns: the value
/**
* Get {@link java.time.LocalDate} value at {@code pos}.
*
* <p>Target element instance of {@code LocalDateTime} will be
* coerced to {@code LocalDate}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default LocalDate getLocalDate(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof LocalDate) {
return (LocalDate) val;
} else if (val instanceof LocalDateTime) {
return ((LocalDateTime) val).toLocalDate();
} else {
return (LocalDate) val; // Throw CCE
}
}
Params: - pos – the position
Returns: the value
/**
* Get {@link java.time.LocalTime} value at {@code pos}.
*
* <p>Target element instance of {@code LocalDateTime} will be
* coerced to {@code LocalTime}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default LocalTime getLocalTime(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof LocalTime) {
return (LocalTime) val;
} else if (val instanceof LocalDateTime) {
return ((LocalDateTime) val).toLocalTime();
} else {
return (LocalTime) val; // Throw CCE
}
}
Get LocalDateTime
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get {@link java.time.LocalDateTime} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default LocalDateTime getLocalDateTime(int pos) {
return (LocalDateTime) getValue(pos);
}
Get OffsetTime
value at pos
. Target element instance of OffsetDateTime
will be coerced to OffsetTime
.
Params: - pos – the position
Returns: the value
/**
* Get {@link java.time.OffsetTime} value at {@code pos}.
*
* <p>Target element instance of {@code OffsetDateTime} will be
* coerced to {@code OffsetTime}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default OffsetTime getOffsetTime(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof OffsetTime) {
return (OffsetTime) val;
} else if (val instanceof OffsetDateTime) {
return ((OffsetDateTime)val).toOffsetTime();
} else {
return (OffsetTime) val; // Throw CCE
}
}
Get OffsetDateTime
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get {@link java.time.OffsetDateTime} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default OffsetDateTime getOffsetDateTime(int pos) {
return (OffsetDateTime) getValue(pos);
}
Get a buffer value at pos
. Params: - pos – the position
Returns: the value
/**
* Get a buffer value at {@code pos}.
*
* @param pos the position
* @return the value
*/
default Buffer getBuffer(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Buffer) {
return (Buffer) val;
} else if (val instanceof ByteBuf) {
return Buffer.buffer((ByteBuf) val);
} else if (val instanceof byte[]) {
return Buffer.buffer((byte[]) val);
} else {
return (Buffer) val; // Throw CCE
}
}
Get UUID
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get {@link java.util.UUID} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default UUID getUUID(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof UUID) {
return (UUID) val;
} else if (val instanceof String) {
return UUID.fromString((String) val);
} else {
return (UUID) val; // Throw CCE
}
}
Get BigDecimal
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get {@link BigDecimal} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default BigDecimal getBigDecimal(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof BigDecimal) {
return (BigDecimal) val;
} else if (val instanceof Number) {
return new BigDecimal(val.toString());
} else {
return (BigDecimal) val; // Throw CCE
}
}
Get an array of Boolean
value at pos
. Target element instance of Object[]
will be coerced to Boolean[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Boolean} value at {@code pos}.
*
* <p>Target element instance of {@code Object[]} will be
* coerced to {@code Boolean[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Boolean[] getArrayOfBooleans(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Boolean[]) {
return (Boolean[]) val;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Boolean[] booleanArray = new Boolean[array.length];
for (int i = 0;i < array.length;i++) {
booleanArray[i] = (Boolean) array[i];
}
return booleanArray;
} else {
return (Boolean[]) val; // Throw CCE
}
}
Get an array of Short
value at pos
. Target element instance of Number[]
or Object[]
will be coerced to Short[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Short} value at {@code pos}.
*
* <p>Target element instance of {@code Number[]} or {@code Object[]} will be
* coerced to {@code Short[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Short[] getArrayOfShorts(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Short[]) {
return (Short[]) val;
} else if (val instanceof Number[]) {
Number[] a = (Number[]) val;
int len = a.length;
Short[] arr = new Short[len];
for (int i = 0; i < len; i++) {
Number elt = a[i];
if (elt != null) {
arr[i] = elt.shortValue();
}
}
return arr;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
Short[] arr = new Short[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = (short)elt.ordinal();
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Short[] shortArray = new Short[array.length];
for (int i = 0;i < array.length;i++) {
shortArray[i] = ((Number) array[i]).shortValue();
}
return shortArray;
} else {
return (Short[]) val; // Throw CCE
}
}
Get an array of Integer
value at pos
. Target element instance of Number[]
or Object[]
will be coerced to Integer[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Integer} value at {@code pos}.
*
* <p>Target element instance of {@code Number[]} or {@code Object[]} will be
* coerced to {@code Integer[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Integer[] getArrayOfIntegers(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Integer[]) {
return (Integer[]) val;
} else if (val instanceof Number[]) {
Number[] a = (Number[]) val;
int len = a.length;
Integer[] arr = new Integer[len];
for (int i = 0; i < len; i++) {
Number elt = a[i];
if (elt != null) {
arr[i] = elt.intValue();
}
}
return arr;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
Integer[] arr = new Integer[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = elt.ordinal();
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Integer[] integerArray = new Integer[array.length];
for (int i = 0;i < array.length;i++) {
integerArray[i] = ((Number) array[i]).intValue();
}
return integerArray;
} else {
return (Integer[]) val; // Throw CCE
}
}
Get an array of Long
value at pos
. Target element instance of Number[]
or Object[]
will be coerced to Long[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Long} value at {@code pos}.
*
* <p>Target element instance of {@code Number[]} or {@code Object[]} will be
* coerced to {@code Long[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Long[] getArrayOfLongs(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Long[]) {
return (Long[]) val;
} else if (val instanceof Number[]) {
Number[] a = (Number[]) val;
int len = a.length;
Long[] arr = new Long[len];
for (int i = 0; i < len; i++) {
Number elt = a[i];
if (elt != null) {
arr[i] = elt.longValue();
}
}
return arr;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
Long[] arr = new Long[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = (long)elt.ordinal();
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Long[] longArray = new Long[array.length];
for (int i = 0;i < array.length;i++) {
longArray[i] = ((Number) array[i]).longValue();
}
return longArray;
} else {
return (Long[]) val; // Throw CCE
}
}
Get an array of Float
value at pos
. Target element instance of Number[]
or Object[]
will be coerced to Float[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Float} value at {@code pos}.
*
* <p>Target element instance of {@code Number[]} or {@code Object[]} will be
* coerced to {@code Float[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Float[] getArrayOfFloats(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Float[]) {
return (Float[]) val;
} else if (val instanceof Number[]) {
Number[] a = (Number[]) val;
int len = a.length;
Float[] arr = new Float[len];
for (int i = 0; i < len; i++) {
Number elt = a[i];
if (elt != null) {
arr[i] = elt.floatValue();
}
}
return arr;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
Float[] arr = new Float[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = (float)elt.ordinal();
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Float[] floatArray = new Float[array.length];
for (int i = 0;i < array.length;i++) {
floatArray[i] = ((Number) array[i]).floatValue();
}
return floatArray;
} else {
return (Float[]) val; // Throw CCE
}
}
Get an array of Double
value at pos
. Target element instance of Number[]
or Object[]
will be coerced to Double[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Double} value at {@code pos}.
*
* <p>Target element instance of {@code Number[]} or {@code Object[]} will be
* coerced to {@code Double[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Double[] getArrayOfDoubles(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Double[]) {
return (Double[]) val;
} else if (val instanceof Number[]) {
Number[] a = (Number[]) val;
int len = a.length;
Double[] arr = new Double[len];
for (int i = 0; i < len; i++) {
Number elt = a[i];
if (elt != null) {
arr[i] = elt.doubleValue();
}
}
return arr;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
Double[] arr = new Double[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = (double)elt.ordinal();
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Double[] doubleArray = new Double[array.length];
for (int i = 0;i < array.length;i++) {
doubleArray[i] = ((Number) array[i]).doubleValue();
}
return doubleArray;
} else {
return (Double[]) val; // Throw CCE
}
}
Get an array of Numeric
value at pos
. Params: - pos – the column
Returns: the value
/**
* Get an array of {@link Numeric} value at {@code pos}.
*
* @param pos the column
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Numeric[] getArrayOfNumerics(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof Numeric[]) {
return (Numeric[]) val;
} else if (val instanceof Number[]) {
Number[] a = (Number[]) val;
int len = a.length;
Numeric[] arr = new Numeric[len];
for (int i = 0; i < len; i++) {
Number elt = a[i];
if (elt != null) {
arr[i] = Numeric.create(elt);
}
}
return arr;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
Numeric[] arr = new Numeric[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = Numeric.create(elt.ordinal());
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
Numeric[] doubleArray = new Numeric[array.length];
for (int i = 0;i < array.length;i++) {
doubleArray[i] = Numeric.create((Number) array[i]);
}
return doubleArray;
} else {
throw new ClassCastException();
}
}
Get an array of String
value at pos
. Target element instance of Object[]
will be coerced to String[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link String} value at {@code pos}.
*
* <p>Target element instance of {@code Object[]} will be
* coerced to {@code String[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default String[] getArrayOfStrings(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof String[]) {
return (String[]) val;
} else if (val instanceof Enum[]) {
Enum<?>[] a = (Enum<?>[]) val;
int len = a.length;
String[] arr = new String[len];
for (int i = 0; i < len; i++) {
Enum<?> elt = a[i];
if (elt != null) {
arr[i] = elt.name();
}
}
return arr;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
String[] stringArray = new String[array.length];
for (int i = 0;i < array.length;i++) {
stringArray[i] = (String) array[i];
}
return stringArray;
} else {
return (String[]) val; // Throw CCE
}
}
Get an array of JsonObject
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an array of {@link JsonObject} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default JsonObject[] getArrayOfJsonObjects(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
JsonObject[] jsonObjectArray = new JsonObject[array.length];
for (int i = 0;i < array.length;i++) {
jsonObjectArray[i] = (JsonObject) array[i];
}
return jsonObjectArray;
} else {
return (JsonObject[]) val; // Throw CCE
}
}
Get an array of JsonArray
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an array of {@link JsonArray} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default JsonArray[] getArrayOfJsonArrays(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
JsonArray[] jsonObjectArray = new JsonArray[array.length];
for (int i = 0;i < array.length;i++) {
jsonObjectArray[i] = (JsonArray) array[i];
}
return jsonObjectArray;
} else {
return (JsonArray[]) val; // Throw CCE
}
}
Get an array of JSON elements at pos
, the element might be null
or one of the following types:
- String
- Number
- JsonObject
- JsonArray
- Boolean
Params: - pos – the position
Returns: the value
/**
* Get an array of JSON elements at {@code pos}, the element might be {@link io.vertx.sqlclient.Tuple#JSON_NULL null} or one of the following types:
* <ul>
* <li>String</li>
* <li>Number</li>
* <li>JsonObject</li>
* <li>JsonArray</li>
* <li>Boolean</li>
* </ul>
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Object[] getArrayOfJsons(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof JsonObject[]
|| val instanceof JsonArray[]
|| val instanceof Number[]
|| val instanceof Boolean[]
|| val instanceof String[]) {
return (Object[]) val;
} else if (val.getClass() == Object[].class) {
Object[] array = (Object[]) val;
for (int i = 0; i < array.length; i++) {
Object elt = Array.get(val, i);
if (elt != null && !(elt == Tuple.JSON_NULL ||
elt instanceof String ||
elt instanceof Boolean ||
elt instanceof Number ||
elt instanceof JsonObject ||
elt instanceof JsonArray)) {
throw new ClassCastException();
}
}
return array;
} else {
throw new ClassCastException();
}
}
Get an array of Temporal
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Temporal} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Temporal[] getArrayOfTemporals(int pos) {
return (Temporal[]) getValue(pos);
}
Get an array of LocalDate
value at pos
. Target element instance of LocalDateTime[]
will be coerced to LocalDate[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link LocalDate} value at {@code pos}.
*
* <p>Target element instance of {@code LocalDateTime[]} will be
* coerced to {@code LocalDate[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default LocalDate[] getArrayOfLocalDates(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof LocalDate[]) {
return (LocalDate[]) val;
} else if (val instanceof LocalDateTime[]) {
LocalDateTime[] a = (LocalDateTime[]) val;
int len = a.length;
LocalDate[] arr = new LocalDate[len];
for (int i = 0; i < len; i++) {
LocalDateTime elt = a[i];
if (elt != null) {
arr[i] = elt.toLocalDate();
}
}
return arr;
} else {
return (LocalDate[]) val; // Throw CCE
}
}
Get an array of LocalTime
value at pos
. Target element instance of LocalDateTime[]
will be coerced to LocalTime[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link LocalTime} value at {@code pos}.
*
* <p>Target element instance of {@code LocalDateTime[]} will be
* coerced to {@code LocalTime[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default LocalTime[] getArrayOfLocalTimes(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof LocalTime[]) {
return (LocalTime[]) val;
} else if (val instanceof LocalDateTime[]) {
LocalDateTime[] a = (LocalDateTime[]) val;
int len = a.length;
LocalTime[] arr = new LocalTime[len];
for (int i = 0; i < len; i++) {
LocalDateTime elt = a[i];
if (elt != null) {
arr[i] = elt.toLocalTime();
}
}
return arr;
} else {
return (LocalTime[]) val; // Throw CCE
}
}
Get an array of LocalDateTime
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an array of {@link LocalDateTime} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default LocalDateTime[] getArrayOfLocalDateTimes(int pos) {
return (LocalDateTime[]) getValue(pos);
}
Get an array of OffsetTime
value at pos
. Target element instance of OffsetDateTime[]
will be coerced to OffsetTime[]
.
Params: - pos – the position
Returns: the value
/**
* Get an array of {@link OffsetTime} value at {@code pos}.
*
* <p>Target element instance of {@code OffsetDateTime[]} will be
* coerced to {@code OffsetTime[]}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default OffsetTime[] getArrayOfOffsetTimes(int pos) {
Object val = getValue(pos);
if (val == null) {
return null;
} else if (val instanceof OffsetTime[]) {
return (OffsetTime[]) val;
} else if (val instanceof OffsetDateTime[]) {
OffsetDateTime[] a = (OffsetDateTime[]) val;
int len = a.length;
OffsetTime[] arr = new OffsetTime[len];
for (int i = 0; i < len; i++) {
OffsetDateTime elt = a[i];
if (elt != null) {
arr[i] = elt.toOffsetTime();
}
}
return arr;
} else {
return (OffsetTime[]) val; // Throw CCE
}
}
Get an array of OffsetDateTime
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an array of {@link OffsetDateTime} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default OffsetDateTime[] getArrayOfOffsetDateTimes(int pos) {
return (OffsetDateTime[]) getValue(pos);
}
Get an array of Buffer
value at pos
. Params: - pos – the position
Returns: the value
/**
* Get an array of {@link Buffer} value at {@code pos}.
*
* @param pos the position
* @return the value
*/
@GenIgnore
default Buffer[] getArrayOfBuffers(int pos) {
return (Buffer[]) getValue(pos);
}
Get an array of UUID
value at pos
. Params: - pos – the column
Returns: the value
/**
* Get an array of {@link UUID} value at {@code pos}.
*
* @param pos the column
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default UUID[] getArrayOfUUIDs(int pos) {
return (UUID[]) getValue(pos);
}
Get an array of BigDecimal
value at pos
. Params: - pos – the column
Returns: the value
/**
* Get an array of {@link BigDecimal} value at {@code pos}.
*
* @param pos the column
* @return the value
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default BigDecimal[] getArrayOfBigDecimals(int pos) {
return (BigDecimal[]) getValue(pos);
}
Add an object value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an object value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
Tuple addValue(Object value);
Add a boolean value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a boolean value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addBoolean(Boolean value) {
return addValue(value);
}
Add a short value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a short value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addShort(Short value) {
return addValue(value);
}
Add an integer value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an integer value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addInteger(Integer value) {
return addValue(value);
}
Add a long value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a long value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addLong(Long value) {
return addValue(value);
}
Add a float value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a float value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addFloat(Float value) {
return addValue(value);
}
Add a double value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a double value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addDouble(Double value) {
return addValue(value);
}
Add a string value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a string value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addString(String value) {
return addValue(value);
}
Add a JsonObject
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link JsonObject} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addJsonObject(JsonObject value) {
return addValue(value);
}
Add a JsonArray
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link JsonArray} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addJsonArray(JsonArray value) {
return addValue(value);
}
Add a Temporal
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.time.temporal.Temporal} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addTemporal(Temporal value) {
return addValue(value);
}
Add a LocalDate
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.time.LocalDate} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addLocalDate(LocalDate value) {
return addValue(value);
}
Add a LocalTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.time.LocalTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addLocalTime(LocalTime value) {
return addValue(value);
}
Add a LocalDateTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.time.LocalDateTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addLocalDateTime(LocalDateTime value) {
return addValue(value);
}
Add a OffsetTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.time.OffsetTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addOffsetTime(OffsetTime value) {
return addValue(value);
}
Add a OffsetDateTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.time.OffsetDateTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addOffsetDateTime(OffsetDateTime value) {
return addValue(value);
}
Add a buffer value at the end of the tuple.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a buffer value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@Fluent
default Tuple addBuffer(Buffer value) {
return addValue(value);
}
Add a UUID
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link java.util.UUID} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addUUID(UUID value) {
return addValue(value);
}
Add a BigDecimal
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add a {@link BigDecimal} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addBigDecimal(BigDecimal value) {
return addValue(value);
}
Add an array of Boolean
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@code Boolean} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfBoolean(Boolean[] value) {
return addValue(value);
}
Add an array of Short
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link Short} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfShort(Short[] value) {
return addValue(value);
}
Add an array of Integer
value at the end of the tuple. Target element instance of Number[]
will be coerced to Integer[]
.
Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@code Integer} value at the end of the tuple.
*
* <p>Target element instance of {@code Number[]} will be
* coerced to {@code Integer[]}.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfInteger(Integer[] value) {
return addValue(value);
}
Add an array of Long
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link Long} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfLong(Long[] value) {
return addValue(value);
}
Add an array of Float
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link Float} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfFloat(Float[] value) {
return addValue(value);
}
Add an array of Double
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link Double} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfDouble(Double[] value) {
return addValue(value);
}
Add an array of String
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link String} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfString(String[] value) {
return addValue(value);
}
Add an array of JsonObject
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link JsonObject} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfJsonObject(JsonObject[] value) {
return addValue(value);
}
Add an array of JsonArray
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link JsonArray} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfJsonArray(JsonArray[] value) {
return addValue(value);
}
Add an array of Temporal
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link Temporal} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfTemporal(Temporal[] value) {
return addValue(value);
}
Add an array of LocalDate
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link LocalDate} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfLocalDate(LocalDate[] value) {
return addValue(value);
}
Add an array of LocalTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link LocalTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfLocalTime(LocalTime[] value) {
return addValue(value);
}
Add an array of LocalDateTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link LocalDateTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfLocalDateTime(LocalDateTime[] value) {
return addValue(value);
}
Add an array of OffsetTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link OffsetTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfOffsetTime(OffsetTime[] value) {
return addValue(value);
}
Add an array of OffsetDateTime
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link OffsetDateTime} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfOffsetDateTime(OffsetDateTime[] value) {
return addValue(value);
}
Add an array of Buffer
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link Buffer} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore
default Tuple addArrayOfBuffer(Buffer[] value) {
return addValue(value);
}
Add an array of UUID
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link UUID} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfUUID(UUID[] value) {
return addValue(value);
}
Add an array of BigDecimal
value at the end of the tuple. Params: - value – the value
Returns: a reference to this, so the API can be used fluently
/**
* Add an array of {@link BigDecimal} value at the end of the tuple.
*
* @param value the value
* @return a reference to this, so the API can be used fluently
*/
@GenIgnore(GenIgnore.PERMITTED_TYPE)
default Tuple addArrayOfBigDecimal(BigDecimal[] value) {
return addValue(value);
}
Get the the at the specified position
and the specified type
. The type can be one of the types returned by the row (e.g String.class
) or an array of the type (e.g String[].class
)).
Params: - type – the expected value type
- position – the value position
Returns: the value if the value is not found or null.
/**
* Get the the at the specified {@code position} and the specified {@code type}.
*
* <p>The type can be one of the types returned by the row (e.g {@code String.class}) or an array
* of the type (e.g {@code String[].class})).
*
* @param type the expected value type
* @param position the value position
* @return the value if the value is not found or null.
*/
default <T> T get(Class<T> type, int position) {
if (type == null) {
throw new IllegalArgumentException("Accessor type can not be null");
}
Object value = getValue(position);
if (value != null && type.isAssignableFrom(value.getClass())) {
return type.cast(value);
}
return null;
}
Returns: the tuple size
/**
* @return the tuple size
*/
int size();
void clear();
Returns: the list of types built from the tuple
/**
* @return the list of types built from the tuple
*/
@GenIgnore
default List<Class<?>> types() {
int len = size();
List<Class<?>> types = new ArrayList<>();
for (int i = 0;i < len;i++) {
Object param = getValue(i);
if (param == null) {
types.add(Object.class);
} else {
types.add(param.getClass());
}
}
return types;
}
Returns: A String containing the Object.toString
value of each element, separated by a comma (,) character
/**
* @return A String containing the {@link Object#toString} value of each element,
* separated by a comma (,) character
*/
default String deepToString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
final int size = size();
for (int i = 0; i < size; i++) {
sb.append(getValue(i));
if (i + 1 < size)
sb.append(",");
}
sb.append("]");
return sb.toString();
}
}