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 + -
显示快捷键?