shared/net/tz/spss/SpssValue.scala
changeset 5 44aad285dc66
parent 2 7461111ce9ed
equal deleted inserted replaced
4:dbc63b7c43ce 5:44aad285dc66
     1 package net.tz.spss
     1 package net.tz.spss
     2 
       
     3 import com.bedatadriven.spss.SpssDataFileReader
       
     4 
     2 
     5 sealed trait SpssValue
     3 sealed trait SpssValue
     6 
     4 
     7 sealed trait Missing extends SpssValue
     5 sealed trait Missing extends SpssValue
     8 
     6 
    15 case class StringValue(v: String) extends Value[String]
    13 case class StringValue(v: String) extends Value[String]
    16 case class DoubleValue(v: Double) extends Value[Double]
    14 case class DoubleValue(v: Double) extends Value[Double]
    17 case object SystemMissing extends Missing
    15 case object SystemMissing extends Missing
    18 // ??? case class MissingString(v: String) extends MissingValue[String]
    16 // ??? case class MissingString(v: String) extends MissingValue[String]
    19 case class MissingDouble(v: Double) extends MissingValue[Double]
    17 case class MissingDouble(v: Double) extends MissingValue[Double]
    20 
       
    21 object SpssValue {
       
    22 
       
    23   def apply(r: SpssDataFileReader, variable: SpssVariable): SpssValue = {
       
    24     val i = variable.index
       
    25     if (r.isSystemMissing(i))
       
    26       SystemMissing
       
    27     else
       
    28       Option(r.getDoubleValue(i)) map(x =>
       
    29         if (r.isValueMissing(i, x)) MissingDouble(x) else DoubleValue(x)
       
    30         ) orElse (Option(r.getStringValue(i)) map StringValue
       
    31         ) getOrElse SystemMissing
       
    32   }
       
    33 }