From f466bbbdb2cea1f64f7b3781795f890aaf390acf Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Fri, 13 Oct 2017 13:38:09 +0700 Subject: Fixed criterion and intervention formats --- .../formats/json/sprayformats/criterion.scala | 29 +++++++++++----------- .../formats/json/sprayformats/intervention.scala | 14 +++++------ 2 files changed, 21 insertions(+), 22 deletions(-) (limited to 'src/main/scala/xyz/driver') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala index 52d82dc..47a46d1 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/criterion.scala @@ -26,20 +26,21 @@ object criterion { case JsObject(fields) => val labelId = fields .get("labelId") - .map(_.convertTo[LongId[Label]]) + .flatMap(_.convertTo[Option[LongId[Label]]]) val categoryId = fields .get("categoryId") - .map(_.convertTo[LongId[LabelCategory]]) + .flatMap(_.convertTo[Option[LongId[LabelCategory]]]) val value = fields .get("value") - .map(_.convertTo[String] match { + .flatMap(_.convertTo[Option[String]]) + .map { case "Yes" => true - case "No" => false + case "No" => false case other => deserializationError(s"Unknown `value` of CriterionLabel object: expected `yes` or `no`, but got $other") - }) + } val isDefining = fields .get("isDefining") @@ -125,7 +126,7 @@ object criterion { val text = fields .get("text") - .map(_.convertTo[String]) + .flatMap(_.convertTo[Option[String]]) val isCompound = fields .get("isCompound") @@ -133,24 +134,22 @@ object criterion { val meta = fields .get("meta") - .map(_.convertTo[String]) - .getOrElse("") + .flatMap(_.convertTo[Option[String]]) val inclusion = fields .get("inclusion") - .map(_.convertTo[Option[Boolean]]) - .getOrElse(None) + .flatMap(_.convertTo[Option[Boolean]]) val arms = fields .get("arms") - .map(_.convertTo[List[LongId[EligibilityArm]]]) - .getOrElse(List.empty[LongId[EligibilityArm]]) + .map(_.convertTo[Seq[LongId[EligibilityArm]]]) + .getOrElse(Seq.empty[LongId[EligibilityArm]]) val labels = fields .get("labels") - .map(_.convertTo[List[JsValue]]) + .map(_.convertTo[Seq[JsValue]]) .map(_.map(l => jsValueToCriterionLabel(l, LongId(0)))) - .getOrElse(List.empty[CriterionLabel]) + .getOrElse(Seq.empty[CriterionLabel]) RichCriterion( criterion = Criterion( @@ -158,7 +157,7 @@ object criterion { trialId = trialId, text = text, isCompound = isCompound, - meta = meta, + meta = meta.getOrElse(""), inclusion = inclusion ), armIds = arms, diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala index 0fcc61f..f0d1a0a 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala @@ -34,7 +34,7 @@ object intervention { val typeId = fields .get("typeId") - .map(_.convertTo[LongId[InterventionType]]) + .flatMap(_.convertTo[Option[LongId[InterventionType]]]) val name = fields .get("name") @@ -44,7 +44,6 @@ object intervention { val dosage = fields .get("dosage") .map(_.convertTo[String]) - .getOrElse("") val isActive = fields .get("isActive") @@ -52,23 +51,24 @@ object intervention { val deliveryMethod = fields .get("deliveryMethod") - .map(_.convertTo[String]) + .flatMap(_.convertTo[Option[String]]) val arms = fields .get("arms") - .map(_.convertTo[List[LongId[SlotArm]]].map(x => InterventionArm(armId = x, interventionId = LongId(0)))) + .map(_.convertTo[List[LongId[SlotArm]]]) + .map(_ map(x => InterventionArm(armId = x, interventionId = LongId(0L)))) .getOrElse(List.empty[InterventionArm]) InterventionWithArms( intervention = Intervention( - id = LongId(0), + id = LongId(0L), trialId = trialId, name = name, originalName = name, typeId = typeId, originalType = None, - dosage = dosage, - originalDosage = dosage, + dosage = dosage.getOrElse(""), + originalDosage = dosage.getOrElse(""), isActive = isActive, deliveryMethod = deliveryMethod ), -- cgit v1.2.3