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

com.github.tonivade.puredbc.JdbcRow Maven / Gradle / Ivy

There is a newer version: 1.0
Show newest version
/*
 * Copyright (c) 2020, Antonio Gabriel Muñoz Conejo 
 * Distributed under the terms of the MIT License
 */
package com.github.tonivade.puredbc;

import com.github.tonivade.puredbc.sql.Field;
import com.github.tonivade.purefun.Producer;
import com.github.tonivade.purefun.Recoverable;

import java.math.BigDecimal;
import java.sql.ResultSet;
import java.util.Date;

import static java.util.Objects.requireNonNull;

final class JdbcRow implements Row, Recoverable {

  private final ResultSet resultSet;

  protected JdbcRow(ResultSet resultSet) {
    this.resultSet = requireNonNull(resultSet);
  }
  
  @SuppressWarnings("unchecked")
  @Override
  public  T get(Field field) {
    return (T) run(() -> resultSet.getObject(field.name()));
  }

  @Override
  public String getString(Field field) {
    return run(() -> resultSet.getString(field.name()));
  }

  @Override
  public Integer getInteger(Field field) {
    return run(() -> resultSet.getObject(field.name(), Integer.class));
  }

  @Override
  public Long getLong(Field field) {
    return run(() -> resultSet.getObject(field.name(), Long.class));
  }

  @Override
  public Short getShort(Field field) {
    return run(() -> resultSet.getObject(field.name(), Short.class));
  }

  @Override
  public Byte getByte(Field field) {
    return run(() -> resultSet.getObject(field.name(), Byte.class));
  }

  @Override
  public Float getFloat(Field field) {
    return run(() -> resultSet.getObject(field.name(), Float.class));
  }

  @Override
  public Double getDouble(Field field) {
    return run(() -> resultSet.getObject(field.name(), Double.class));
  }

  @Override
  public BigDecimal getBigDecimal(Field field) {
    return run(() -> resultSet.getBigDecimal(field.name()));
  }

  @Override
  public Boolean getBoolean(Field field) {
    return run(() -> resultSet.getObject(field.name(), Boolean.class));
  }

  @Override
  public Date getTimestamp(Field field) {
    return run(() -> resultSet.getTimestamp(field.name()));
  }

  @Override
  public Date getDate(Field field) {
    return run(() -> resultSet.getDate(field.name()));
  }

  @Override
  public Date getTime(Field field) {
    return run(() -> resultSet.getTime(field.name()));
  }

  private static  T run(Producer producer) {
    return producer.get();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy