Spss variable, value and reader wrapper.
package net.tz.spss
import net.tz.spss.SpssVariable.DoubleRange
import com.bedatadriven.spss.{SpssVariable => JVar}
import scala.collection.JavaConverters._
import scala.language.postfixOps
case class SpssVariable(name: String, shortName: String, isNumeric: Boolean,
index: Int, label: String,
missingRange: Option[DoubleRange] = None,
missing: List[Double] = Nil,
missingStrings: List[String] = Nil,
labels: Map[Double, String] = Map())
object SpssVariable {
type DoubleRange = (Double, Double)
def apply(v: JVar): SpssVariable = SpssVariable(
name = v.getVariableName,
shortName = v.getShortName,
isNumeric = v.isNumeric,
index = v.getIndex,
label = v.getVariableLabel,
missingRange = if (v.isHasMissingRange)
Some((v.getMissingMin.doubleValue(), v.getMissingMax.doubleValue()))
else None,
missing = v.getMissing.asScala.map(_.doubleValue()).toList,
missingStrings = v.getMissingStrings.asScala.toList,
labels = v.getValueLabels.asScala.map { case (k,x) =>
(k.doubleValue(), x) } toMap)
}