jvm/src/net/tz/spss/SpssReader.scala
author Tomas Zeman <tzeman@volny.cz>
Thu, 14 Mar 2019 15:06:13 +0100
changeset 2 7461111ce9ed
child 5 44aad285dc66
permissions -rw-r--r--
Spss variable, value and reader wrapper.

package net.tz.spss

import java.io.File

import com.bedatadriven.spss.SpssDataFileReader

import scala.collection.JavaConverters._
import scala.language.postfixOps

class SpssReader(private val r: SpssDataFileReader)
  extends Iterator[Map[SpssVariable, SpssValue]] {

  lazy val variables: List[SpssVariable] =
    r.getVariables.asScala.toList map(SpssVariable(_))

  override def hasNext: Boolean = r.readNextCase()

  override def next(): Map[SpssVariable, SpssValue] =
    variables map(v => (v, SpssValue(r, v))) toMap

}

object SpssReader {
  def apply(f: File): SpssReader = new SpssReader(new SpssDataFileReader(f))
}