|
|
@@ -3,20 +3,39 @@ package models
|
|
|
sealed trait Measure {
|
|
|
def productPrefix: String
|
|
|
def name: String = this.productPrefix.split("\\.").last
|
|
|
- def primaryUnit: Unit
|
|
|
+ // def primaryUnit: Uni
|
|
|
}
|
|
|
|
|
|
-case object Mass extends Measure
|
|
|
-{
|
|
|
- val primaryUnit = Gram
|
|
|
+object Measure {
|
|
|
+ import play.api.libs.json._
|
|
|
+
|
|
|
+ implicit val measureFormat = new Format[Measure] {
|
|
|
+ def writes(m: Measure): JsValue = Json.toJson(m.name.toLowerCase)
|
|
|
+
|
|
|
+ def reads(jsValue: JsValue): JsResult[Measure] =
|
|
|
+ jsValue.validate[String] match {
|
|
|
+ case s: JsSuccess[String] => s.get match {
|
|
|
+ case "mass" => JsSuccess(Mass)
|
|
|
+ case "volume" => JsSuccess(Volume)
|
|
|
+ case "number" => JsSuccess(Number)
|
|
|
+ }
|
|
|
+ case e: JsError => e
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+case object Mass extends Measure
|
|
|
+// {
|
|
|
+// val primaryUnit = Gram
|
|
|
+// }
|
|
|
+
|
|
|
case object Volume extends Measure
|
|
|
-{
|
|
|
- val primaryUnit = Liter
|
|
|
-}
|
|
|
+// {
|
|
|
+// val primaryUnit = Liter
|
|
|
+// }
|
|
|
|
|
|
case object Number extends Measure
|
|
|
-{
|
|
|
- val primaryUnit = Count
|
|
|
-}
|
|
|
+// {
|
|
|
+// val primaryUnit = Count
|
|
|
+// }
|
|
|
+
|