shared/net/tz/spss/SpssVariable.scala
author Tomas Zeman <tomas@functionals.cz>
Thu, 19 Sep 2019 12:42:48 +0200
changeset 3 a6bf3dddbb7c
parent 2 7461111ce9ed
child 5 44aad285dc66
permissions -rw-r--r--
Mill upgrade -> 0.5.1. Updated project links.

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)
}