# HG changeset patch # User Tomas Zeman # Date 1568890831 -7200 # Node ID 44aad285dc6622bf88fc98d6f2eaf6bd96229af1 # Parent dbc63b7c43cead3fffdc4e46d8bf190d48dc32c6 Fixed js build. diff -r dbc63b7c43ce -r 44aad285dc66 js/src/net/tz/spss/package.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/net/tz/spss/package.scala Thu Sep 19 13:00:31 2019 +0200 @@ -0,0 +1,7 @@ +package net.tz + +package object spss { + + type DoubleRange = (Double, Double) + +} diff -r dbc63b7c43ce -r 44aad285dc66 jvm/src/net/tz/spss/SpssReader.scala --- 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 { diff -r dbc63b7c43ce -r 44aad285dc66 jvm/src/net/tz/spss/package.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jvm/src/net/tz/spss/package.scala Thu Sep 19 13:00:31 2019 +0200 @@ -0,0 +1,25 @@ +package net.tz + +import com.bedatadriven.spss.{SpssVariable => JVar} + +import scala.collection.JavaConverters._ +import scala.language.{implicitConversions, postfixOps} + +package object spss { + + type DoubleRange = (Double, Double) + + implicit def spssVarJtoS(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) +} diff -r dbc63b7c43ce -r 44aad285dc66 shared/net/tz/spss/SpssValue.scala --- a/shared/net/tz/spss/SpssValue.scala Thu Sep 19 12:49:03 2019 +0200 +++ b/shared/net/tz/spss/SpssValue.scala Thu Sep 19 13:00:31 2019 +0200 @@ -1,7 +1,5 @@ package net.tz.spss -import com.bedatadriven.spss.SpssDataFileReader - sealed trait SpssValue sealed trait Missing extends SpssValue @@ -17,17 +15,3 @@ case object SystemMissing extends Missing // ??? case class MissingString(v: String) extends MissingValue[String] case class MissingDouble(v: Double) extends MissingValue[Double] - -object SpssValue { - - def apply(r: SpssDataFileReader, 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 - } -} diff -r dbc63b7c43ce -r 44aad285dc66 shared/net/tz/spss/SpssVariable.scala --- a/shared/net/tz/spss/SpssVariable.scala Thu Sep 19 12:49:03 2019 +0200 +++ b/shared/net/tz/spss/SpssVariable.scala Thu Sep 19 13:00:31 2019 +0200 @@ -1,32 +1,8 @@ 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) -}