| author | Tomas Zeman <tzeman@volny.cz> |
| Thu, 14 Mar 2019 15:06:13 +0100 | |
| changeset 2 | 7461111ce9ed |
| child 5 | 44aad285dc66 |
| permissions | -rw-r--r-- |
|
2
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
1 |
package net.tz.spss |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
2 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
3 |
import com.bedatadriven.spss.SpssDataFileReader |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
4 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
5 |
sealed trait SpssValue |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
6 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
7 |
sealed trait Missing extends SpssValue |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
8 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
9 |
abstract class Value[T] extends SpssValue {
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
10 |
def v: T |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
11 |
} |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
12 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
13 |
abstract class MissingValue[T] extends Value[T] |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
14 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
15 |
case class StringValue(v: String) extends Value[String] |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
16 |
case class DoubleValue(v: Double) extends Value[Double] |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
17 |
case object SystemMissing extends Missing |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
18 |
// ??? case class MissingString(v: String) extends MissingValue[String] |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
19 |
case class MissingDouble(v: Double) extends MissingValue[Double] |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
20 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
21 |
object SpssValue {
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
22 |
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
23 |
def apply(r: SpssDataFileReader, variable: SpssVariable): SpssValue = {
|
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
24 |
val i = variable.index |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
25 |
if (r.isSystemMissing(i)) |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
26 |
SystemMissing |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
27 |
else |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
28 |
Option(r.getDoubleValue(i)) map(x => |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
29 |
if (r.isValueMissing(i, x)) MissingDouble(x) else DoubleValue(x) |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
30 |
) orElse (Option(r.getStringValue(i)) map StringValue |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
31 |
) getOrElse SystemMissing |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
32 |
} |
|
7461111ce9ed
Spss variable, value and reader wrapper.
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
33 |
} |