From 15d74838eb592c58bb0a912380f0ec1f537be333 Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Wed, 18 Oct 2017 13:51:47 +0700 Subject: TRIAL-54 Study designs as enum --- .../xyz/driver/pdsuidomain/entities/Trial.scala | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala index ac5feef..e734779 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Trial.scala @@ -7,9 +7,41 @@ import xyz.driver.pdsuicommon.logging._ import xyz.driver.pdsuicommon.utils.Utils import xyz.driver.pdsuidomain.entities.Trial.Status -final case class StudyDesign(id: LongId[StudyDesign], name: String) +import scalaz.syntax.equal._ +import scalaz.Scalaz.stringInstance + +sealed trait StudyDesign { + val id: LongId[StudyDesign] + val name: String +} object StudyDesign { + + final case object Randomized extends StudyDesign { + val id: LongId[StudyDesign] = LongId[StudyDesign](1) + val name: String = "Randomized" + } + + final case object NonRandomized extends StudyDesign { + val id: LongId[StudyDesign] = LongId[StudyDesign](2) + val name: String = "Non-randomized" + } + + final case object SingleGroupAssignment extends StudyDesign { + val id: LongId[StudyDesign] = LongId[StudyDesign](3) + val name: String = "Single-group assignment" + } + + val All = Seq[StudyDesign]( + Randomized, + NonRandomized, + SingleGroupAssignment + ) + + def fromString(txt: String): Option[StudyDesign] = { + All.find(_.name === txt) + } + implicit def toPhiString(x: StudyDesign): PhiString = { import x._ phi"StudyDesign(id=$id, category=${Unsafe(name)})" -- cgit v1.2.3