2
** ________ ___ / / ___ Scala API **
3
** / __/ __// _ | / / / _ | (c) 2003-2011, LAMP/EPFL **
4
** __\ \/ /__/ __ |/ /__/ __ | **
5
** /____/\___/_/ |_/____/_/ | | **
15
import java.math.BigInteger;
16
import java.math.BigDecimal;
18
@deprecated(DbcIsDeprecated, "2.9.0") object Factory {
20
def create (result: java.sql.ResultSet, index: Int, expectedDataType: DataType): Value = {
21
expectedDataType.nativeTypeId match {
22
case DataType.OBJECT =>
24
val dataType = expectedDataType.asInstanceOf[datatype.Unknown];
25
val nativeValue: AnyRef = result.getObject(index);
27
case DataType.STRING => {
28
expectedDataType match {
29
case t:datatype.Character =>
32
val nativeValue: String = result.getString(index);
34
case t:datatype.CharacterVarying =>
35
new value.CharacterVarying {
37
val nativeValue: String = result.getString(index);
39
case t:datatype.CharacterLargeObject =>
40
new value.CharacterLargeObject {
42
val nativeValue: String = result.getString(index);
46
case DataType.BOOLEAN =>
48
val dataType = expectedDataType.asInstanceOf[datatype.Boolean];
49
val nativeValue: scala.Boolean = result.getBoolean(index);
51
case DataType.FLOAT =>
52
new value.ApproximateNumeric[Float] {
53
val dataType = expectedDataType.asInstanceOf[datatype.ApproximateNumeric[Float]];
54
val nativeValue: Float = result.getFloat(index);
56
case DataType.DOUBLE =>
57
new value.ApproximateNumeric[Double] {
58
val dataType = expectedDataType.asInstanceOf[datatype.ApproximateNumeric[Double]];
59
val nativeValue: Double = result.getDouble(index);
62
new value.ExactNumeric[Byte] {
63
val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Byte]];
64
val nativeValue: Byte = result.getByte(index);
66
case DataType.SHORT =>
67
new value.ExactNumeric[Short] {
68
val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Short]];
69
val nativeValue: Short = result.getShort(index);
72
new value.ExactNumeric[Int] {
73
val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Int]];
74
val nativeValue: Int = result.getInt(index);
77
new value.ExactNumeric[Long] {
78
val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Long]];
79
val nativeValue:Long = result.getLong(index);
81
case DataType.BIG_INTEGER =>
82
new value.ExactNumeric[BigInteger] {
83
val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[BigInteger]];
84
val nativeValue: BigInteger = result.getBigDecimal(index).unscaledValue();
86
case DataType.BIG_DECIMAL =>
87
new value.ExactNumeric[BigDecimal] {
88
val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[BigDecimal]];
89
val nativeValue: BigDecimal = result.getBigDecimal(index);