Fixed js build.
--- /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)
+
+}
--- 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 {
--- /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)
+}
--- 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
- }
-}
--- 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)
-}