Package com.mckoi.database

## Class Caster

- java.lang.Object
- - com.mckoi.database.Caster

    public class Caster
    extends java.lang.Object

Methods to choose and perform casts from database type to Java types.

Author:
  Jim McBeath

### Field Summary

Fields
`static int` `OBJECT_COST` The cost to cast to the closes Java object type.
`static int` `PRIMITIVE_COST` The cost to cast to the closest Java primitive type.

### Constructor Summary

Constructors
`Caster()`

### Method Summary

All Methods Static Methods Concrete Methods
`static java.lang.Object[]` `castArgsToConstructor​(TObject[] args, java.lang.reflect.Constructor constructor)` Cast the given arguments to the specified constructors parameter types.
`static void` `deserializeJavaObjects​(TObject[] args)` Find any JAVA_OBJECTs in the args and deserialize them into real Java objects.
`static java.lang.reflect.Constructor` `findBestConstructor​(java.lang.reflect.Constructor[] constructs, TObject[] args)` Search for the best constructor that we can use with the given argument types.
`static java.lang.String` `getArgTypesString​(TObject[] args)` Get a string giving the database types of all of the arguments.
`static int` `getSqlType​(TObject arg)` Get the SQL type for a database argument.
`static int[]` `getSqlTypes​(TObject[] args)` Get the SQL types for the given database arguments.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### PRIMITIVE_COST

    public static final int PRIMITIVE_COST

The cost to cast to the closest Java primitive type.

See Also:
  Constant Field Values

#### OBJECT_COST

    public static final int OBJECT_COST

The cost to cast to the closes Java object type.

See Also:
  Constant Field Values

### Constructor Detail

#### Caster

    public Caster()

### Method Detail

#### deserializeJavaObjects

    public static void deserializeJavaObjects​(TObject[] args)

Find any JAVA_OBJECTs in the args and deserialize them into real Java objects.

Parameters:
  `args` - The args to deserialize. Any JAVA_OBJECT args are converted in-place to a new TObject with a value which is the deserialized object.

#### findBestConstructor

    public static java.lang.reflect.Constructor findBestConstructor​(java.lang.reflect.Constructor[] constructs,
                                                                    TObject[] args)

Search for the best constructor that we can use with the given argument types.

Parameters:
  `constructs` - The set of constructors from which to select.
  `argSqlTypes` - The SQL types of the database arguments to be passed to the constructor.
Returns:
  The constructor with the lowest cost, or null if there are no constructors that match the args.

#### getSqlTypes

    public static int[] getSqlTypes​(TObject[] args)

Get the SQL types for the given database arguments.

Parameters:
  `args` - The database args.
Returns:
  The SQL types of the args.

#### getSqlType

    public static int getSqlType​(TObject arg)

Get the SQL type for a database argument. If the actual value does not fit into the declared type, the returned type is widened as required for the value to fit.

Parameters:
  `arg` - The database argument.
Returns:
  The SQL type of the arg.

#### getArgTypesString

    public static java.lang.String getArgTypesString​(TObject[] args)

Get a string giving the database types of all of the arguments. Useful for error messages.

Parameters:
  `args` - The arguments.
Returns:
  A string with the types of all of the arguments, using comma as a separator.

#### castArgsToConstructor

    public static java.lang.Object[] castArgsToConstructor​(TObject[] args,
                                                           java.lang.reflect.Constructor constructor)

Cast the given arguments to the specified constructors parameter types. The caller must already have checked to make sure the argument count and types match the constructor.

Parameters:
  `args` - The database arguments from which to cast.
  `constructor` - The constructor to which to cast.
Returns:
  The cast arguments.