--- a/jvm/src/net/tz/spss/SpssReader.scala Thu Sep 19 12:49:03 2019 +0200
+++ b/jvm/src/net/tz/spss/SpssReader.scala Thu Sep 19 13:00:31 2019 +0200
@@ -11,13 +11,23 @@
extends Iterator[Map[SpssVariable, SpssValue]] {
lazy val variables: List[SpssVariable] =
- r.getVariables.asScala.toList map(SpssVariable(_))
+ r.getVariables.asScala.toList map spssVarJtoS
override def hasNext: Boolean = r.readNextCase()
override def next(): Map[SpssVariable, SpssValue] =
- variables map(v => (v, SpssValue(r, v))) toMap
+ variables map(v => (v, asValue(v))) toMap
+ private def asValue(variable: SpssVariable): SpssValue = {
+ val i = variable.index
+ if (r.isSystemMissing(i))
+ SystemMissing
+ else
+ Option(r.getDoubleValue(i)) map(x =>
+ if (r.isValueMissing(i, x)) MissingDouble(x) else DoubleValue(x)
+ ) orElse (Option(r.getStringValue(i)) map StringValue
+ ) getOrElse SystemMissing
+ }
}
object SpssReader {