factory.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 96 行

SCALA
96
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2003-2006, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id:Factory.scala 6853 2006-03-20 16:58:47 +0100 (Mon, 20 Mar 2006) dubochet $package scala.dbc.value;import java.math.BigInteger;import java.math.BigDecimal;object Factory {    def create (result: java.sql.ResultSet, index: Int, expectedDataType: DataType): Value = {    expectedDataType.nativeTypeId match {      case DataType.OBJECT =>        new value.Unknown {          val dataType = expectedDataType.asInstanceOf[datatype.Unknown];          val nativeValue: AnyRef = result.getObject(index);        }      case DataType.STRING => {        expectedDataType match {          case t:datatype.Character =>              new value.Character {              val dataType = t;              val nativeValue: String = result.getString(index);            }          case t:datatype.CharacterVarying =>            new value.CharacterVarying {              val dataType = t;              val nativeValue: String = result.getString(index);            }          case t:datatype.CharacterLargeObject =>            new value.CharacterLargeObject {              val dataType = t;              val nativeValue: String = result.getString(index);            }        }      }      case DataType.BOOLEAN =>        new value.Boolean {          val dataType = expectedDataType.asInstanceOf[datatype.Boolean];          val nativeValue: scala.Boolean = result.getBoolean(index);        }      case DataType.FLOAT  =>        new value.ApproximateNumeric[Float] {          val dataType = expectedDataType.asInstanceOf[datatype.ApproximateNumeric[Float]];          val nativeValue: Float = result.getFloat(index);        }      case DataType.DOUBLE =>        new value.ApproximateNumeric[Double] {          val dataType = expectedDataType.asInstanceOf[datatype.ApproximateNumeric[Double]];           val nativeValue: Double = result.getDouble(index);        }      case DataType.BYTE =>        new value.ExactNumeric[Byte] {          val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Byte]];          val nativeValue: Byte = result.getByte(index);        }      case DataType.SHORT =>        new value.ExactNumeric[Short] {          val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Short]];          val nativeValue: Short = result.getShort(index);        }      case DataType.INT =>        new value.ExactNumeric[Int] {          val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Int]];          val nativeValue: Int = result.getInt(index);        }      case DataType.LONG =>        new value.ExactNumeric[Long] {          val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[Long]];          val nativeValue:Long = result.getLong(index);        }      case DataType.BIG_INTEGER =>        new value.ExactNumeric[BigInteger] {          val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[BigInteger]];          val nativeValue: BigInteger = result.getBigDecimal(index).unscaledValue();        }      case DataType.BIG_DECIMAL =>        new value.ExactNumeric[BigDecimal] {          val dataType = expectedDataType.asInstanceOf[datatype.ExactNumeric[BigDecimal]];          val nativeValue: BigDecimal = result.getBigDecimal(index);        }          }  }  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?