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

io.vertx.sqlclient.Row Maven / Gradle / Ivy

There is a newer version: 5.0.0.CR1
Show newest version
/*
 * 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.codegen.annotations.GenIgnore;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.sqlclient.data.Numeric;
import io.vertx.sqlclient.impl.Utils;

import java.math.BigDecimal;
import java.time.*;
import java.time.temporal.Temporal;
import java.util.NoSuchElementException;
import java.util.UUID;

/**
 * A single row of the {@link RowSet execution result rowset}.
 */
@VertxGen
public interface Row extends Tuple {

  /**
   * Get a column name at {@code pos}.
   *
   * @param pos the column position
   * @return the column name or {@code null}
   */
  String getColumnName(int pos);

  /**
   * Get a column position for the given @code column}.
   *
   * @param column the column name
   * @return the column name or {@code -1} if not found
   */
  int getColumnIndex(String column);

  /**
   * Get a value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Object getValue(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getValue(pos);
  }

  /**
   * Get a boolean value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Boolean getBoolean(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getBoolean(pos);
  }

  /**
   * Get a short value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Short getShort(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getShort(pos);
  }

  /**
   * Get an integer value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Integer getInteger(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getInteger(pos);
  }

  /**
   * Get a long value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Long getLong(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getLong(pos);
  }

  /**
   * Get a float value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Float getFloat(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getFloat(pos);
  }

  /**
   * Get a double value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default Double getDouble(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getDouble(pos);
  }

  /**
   * Get {@link Numeric} value for the given {@code column}.
   *
   * @param column the column
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  @GenIgnore(GenIgnore.PERMITTED_TYPE)
  default Numeric getNumeric(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getNumeric(pos);
  }

  /**
   * Get a string value for the given {@code column}.
   *
   * @param column the column name
   * @return the {@code column} value
   * @throws NoSuchElementException when the {@code column} does not exist
   */
  default String getString(String column) {
    int pos = getColumnIndex(column);
    if (pos == -1) {
      throw new NoSuchElementException("Column " + column + " does not exist");
    }
    return getString(pos);
  }

  /**
   * Get a JSON element for the given {@code column}, the element might be {@link io.vertx.sqlclient.Tuple#JSON_NULL null} or one of the following types:
   * 
    *
  • String
  • *
  • Number
  • *
  • JsonObject
  • *
  • JsonArray
  • *
  • Boolean
  • *
* * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ default Object getJson(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getJson(pos); } /** * Get a {@link JsonObject} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ default JsonObject getJsonObject(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getJsonObject(pos); } /** * Get a {@link JsonArray} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ default JsonArray getJsonArray(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getJsonArray(pos); } /** * Get a temporal value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Temporal getTemporal(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getTemporal(pos); } /** * Get {@link java.time.LocalDate} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default LocalDate getLocalDate(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getLocalDate(pos); } /** * Get {@link java.time.LocalTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default LocalTime getLocalTime(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getLocalTime(pos); } /** * Get {@link java.time.LocalDateTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default LocalDateTime getLocalDateTime(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getLocalDateTime(pos); } /** * Get {@link java.time.OffsetTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default OffsetTime getOffsetTime(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getOffsetTime(pos); } /** * Get {@link java.time.OffsetDateTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default OffsetDateTime getOffsetDateTime(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getOffsetDateTime(pos); } /** * Get a buffer value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ default Buffer getBuffer(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getBuffer(pos); } /** * Get {@link java.util.UUID} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default UUID getUUID(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getUUID(pos); } /** * Get {@link BigDecimal} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default BigDecimal getBigDecimal(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getBigDecimal(pos); } /** * Get an array of {@link Boolean} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Boolean[] getArrayOfBooleans(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfBooleans(pos); } /** * Get an array of {@link Short} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Short[] getArrayOfShorts(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfShorts(pos); } /** * Get an array of {@link Integer} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Integer[] getArrayOfIntegers(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfIntegers(pos); } /** * Get an array of {@link Long} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Long[] getArrayOfLongs(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfLongs(pos); } /** * Get an array of {@link Float} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Float[] getArrayOfFloats(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfFloats(pos); } /** * Get an array of {@link Double} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Double[] getArrayOfDoubles(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfDoubles(pos); } /** * Get an array of {@link Numeric} value for the given {@code column}. * * @param column the column * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Numeric[] getArrayOfNumerics(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfNumerics(pos); } /** * Get an array of {@link String} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default String[] getArrayOfStrings(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfStrings(pos); } /** * Get an array of {@link JsonObject} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default JsonObject[] getArrayOfJsonObjects(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfJsonObjects(pos); } /** * Get an array of {@link JsonArray} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default JsonArray[] getArrayOfJsonArrays(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfJsonArrays(pos); } /** * Get an array of {@link Temporal} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Temporal[] getArrayOfTemporals(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfTemporals(pos); } /** * Get an array of {@link LocalDate} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default LocalDate[] getArrayOfLocalDates(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfLocalDates(pos); } /** * Get an array of {@link LocalTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default LocalTime[] getArrayOfLocalTimes(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfLocalTimes(pos); } /** * Get an array of {@link LocalDateTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default LocalDateTime[] getArrayOfLocalDateTimes(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfLocalDateTimes(pos); } /** * Get an array of {@link OffsetTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default OffsetTime[] getArrayOfOffsetTimes(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfOffsetTimes(pos); } /** * Get an array of {@link OffsetDateTime} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default OffsetDateTime[] getArrayOfOffsetDateTimes(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfOffsetDateTimes(pos); } /** * Get an array of {@link Buffer} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore default Buffer[] getArrayOfBuffers(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfBuffers(pos); } /** * Get an array of {@link UUID} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default UUID[] getArrayOfUUIDs(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfUUIDs(pos); } /** * Get an array of {@link BigDecimal} value for the given {@code column}. * * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default BigDecimal[] getArrayOfBigDecimals(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfBigDecimals(pos); } /** * Get an array of JSON elements for the given {@code column}, the element might be {@link io.vertx.sqlclient.Tuple#JSON_NULL null} or one of the following types: *
    *
  • String
  • *
  • Number
  • *
  • JsonObject
  • *
  • JsonArray
  • *
  • Boolean
  • *
* * @param column the column name * @return the {@code column} value * @throws NoSuchElementException when the {@code column} does not exist */ @GenIgnore(GenIgnore.PERMITTED_TYPE) default Object[] getArrayOfJsons(String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return getArrayOfJsons(pos); } /** * Like {@link #get(Class, int)} but specifying the {@code column} instead of the position. */ default T get(Class type, String column) { int pos = getColumnIndex(column); if (pos == -1) { throw new NoSuchElementException("Column " + column + " does not exist"); } return get(type, pos); } /** * Return a JSON object representation of the row. * *

Column names are mapped to JSON keys. * *

The following rules are applied for the column values: * *

    *
  • number, boolean and string are preserved
  • *
  • the {@code null} value is preserved
  • *
  • JSON elements are preserved
  • *
  • {@code Buffer} are converted to base64 encoded strings
  • *
  • array is mapped {@code JsonArray}
  • *
  • otherwise the type converted to a string
  • *
* * @return the json representation */ default JsonObject toJson() { JsonObject json = new JsonObject(); int size = size(); for (int pos = 0;pos < size;pos++) { String name = getColumnName(pos); Object value = getValue(pos); json.put(name, Utils.toJson(value)); } return json; } /** * Signal the row can be recycled, this is only effective when dealing with a row in a collector * query and the row has already been processed and transformed. */ default void release() { } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy