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

com.vividsolutions.jts.io.oracle.OraUtil Maven / Gradle / Ivy

The newest version!
package com.vividsolutions.jts.io.oracle;

import java.sql.SQLException;

import oracle.jdbc.OracleConnection;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.Datum;
import oracle.sql.NUMBER;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;

/**
 * Utility methods for working with Oracle structures.
 * 
 * @author Martin Davis
 * 
 */
public class OraUtil
{
  /**
   * Converts an Oracle Datum into an int value, 
   * with a default value used if the datum is NULL.
   * 
   * @param datum the Oracle Datum
   * @param defaultValue the value to use for NULLs
   * @return an integer value
   * @throws SQLException if an error occurs
   */
  public static int toInteger(Datum datum, final int defaultValue)
      throws SQLException
  {
    if (datum == null)
      return defaultValue;
    return ((NUMBER) datum).intValue();
  }

  /**
   * Converts an Oracle ARRAY into a int array, 
   * with a default value used to represent NULL values.
   * 
   * @param array an Oracle ARRAY of integer values
   * @param defaultValue the value to use for NULL values
   * @return an array of ints
   * @throws SQLException if an error was encountered
   */
  public static int[] toIntArray(ARRAY array, int defaultValue) throws SQLException
  {
    if (array == null)
      return null;
    if (defaultValue == 0)
      return array.getIntArray();

    return toIntArray(array.getOracleArray(), defaultValue);
  }

  /** Presents Datum[] as a int[] */
  public static int[] toIntArray(Datum data[], final int defaultValue)
      throws SQLException
  {
    if (data == null)
      return null;
    int array[] = new int[data.length];
    for (int i = 0; i < data.length; i++) {
      array[i] = toInteger(data[i], defaultValue);
    }
    return array;
  }

  /** Presents Datum[] as a double[] */
  public static double[] toDoubleArray(Datum[] data, final double defaultValue)
  {
    if (data == null)
      return null;
    double array[] = new double[data.length];
    for (int i = 0; i < data.length; i++) {
      array[i] = toDouble(data[i], defaultValue);
    }
    return array;
  }

  /** Presents array as a double[] */
  public static double[] toDoubleArray(ARRAY array, final double defaultValue)
      throws SQLException
  {
    if (array == null)
      return null;
    if (defaultValue == 0)
      return array.getDoubleArray();

    return toDoubleArray(array.getOracleArray(), defaultValue);
  }

  /** Presents struct as a double[] */
  public static double[] toDoubleArray(STRUCT struct, final double defaultValue)
      throws SQLException
  {
    if (struct == null)
      return null;
    return toDoubleArray(struct.getOracleAttributes(), defaultValue);
  }

  /** Presents datum as a double */
  public static double toDouble(Datum datum, final double defaultValue)
  {
    if (datum == null)
      return defaultValue;
    return ((NUMBER) datum).doubleValue();
  }

  /**
   * Convenience method for NUMBER construction.
   * 

* Double.NaN is represented as NULL to agree with JTS use. *

*/ public static NUMBER toNUMBER(double number) throws SQLException { if (Double.isNaN(number)) { return null; } return new NUMBER(number); } /** * Convience method for ARRAY construction. *

*/ public static ARRAY toARRAY(double[] doubles, String dataType, OracleConnection connection) throws SQLException { ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor(dataType, connection); return new ARRAY(descriptor, connection, doubles); } /** * Convience method for ARRAY construction. */ public static ARRAY toARRAY(int[] ints, String dataType, OracleConnection connection) throws SQLException { ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor(dataType, connection); return new ARRAY(descriptor, connection, ints); } /** Convenience method for STRUCT construction. */ public static STRUCT toSTRUCT(Datum[] attributes, String dataType, OracleConnection connection) throws SQLException { //TODO: fix this to be more generic if (dataType.startsWith("*.")) { dataType = "DRA." + dataType.substring(2); } StructDescriptor descriptor = StructDescriptor.createDescriptor(dataType, connection); return new STRUCT(descriptor, connection, attributes); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy