aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-10-02 01:05:42 -0700
committervlad <vlad@driver.xyz>2017-10-02 01:05:42 -0700
commitd0482b45b6f9149f050c5e5a6dbab6f059229282 (patch)
treec82ce57536dc2ec51b34f1b6f8159835d95c2cc6 /src/main/scala/xyz/driver/pdsuidomain/formats
parentc5b7f009479930b82f0fb839971eeb2c457dcef0 (diff)
downloadrest-query-d0482b45b6f9149f050c5e5a6dbab6f059229282.tar.gz
rest-query-d0482b45b6f9149f050c5e5a6dbab6f059229282.tar.bz2
rest-query-d0482b45b6f9149f050c5e5a6dbab6f059229282.zip
DocumentType and ProviderType as enumsv0.5.3
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocumentType.scala9
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiProviderType.scala9
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/document.scala19
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/documenttype.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/providertype.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala19
6 files changed, 44 insertions, 36 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocumentType.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocumentType.scala
index 8b4974f..22bea6b 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocumentType.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocumentType.scala
@@ -2,15 +2,14 @@ package xyz.driver.pdsuidomain.formats.json.document
import play.api.libs.functional.syntax._
import play.api.libs.json.{Format, JsPath}
-import xyz.driver.pdsuicommon.domain.LongId
import xyz.driver.pdsuidomain.entities.DocumentType
final case class ApiDocumentType(id: Long, name: String) {
- def toDomain = DocumentType(
- id = LongId(this.id),
- name = this.name
- )
+ def toDomain: DocumentType =
+ DocumentType
+ .fromString(name)
+ .getOrElse(throw new IllegalArgumentException(s"Unknown document type name $name"))
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiProviderType.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiProviderType.scala
index c0eddad..9c0c216 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiProviderType.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiProviderType.scala
@@ -2,15 +2,14 @@ package xyz.driver.pdsuidomain.formats.json.document
import play.api.libs.functional.syntax._
import play.api.libs.json.{Format, JsPath}
-import xyz.driver.pdsuicommon.domain.LongId
import xyz.driver.pdsuidomain.entities.ProviderType
final case class ApiProviderType(id: Long, name: String) {
- def toDomain = ProviderType(
- id = LongId(this.id),
- name = this.name
- )
+ def toDomain: ProviderType =
+ ProviderType
+ .fromString(name)
+ .getOrElse(throw new IllegalArgumentException(s"Unknown provider type name $name"))
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/document.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/document.scala
index ff0603a..e3f6a9c 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/document.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/document.scala
@@ -28,7 +28,24 @@ object document {
implicit val documentMetaFormat: RootJsonFormat[Meta] = jsonFormat3(Meta.apply)
- implicit val documentTypeFormat: RootJsonFormat[DocumentType] = jsonFormat2(DocumentType.apply)
+ implicit val documentTypeFormat: RootJsonFormat[DocumentType] = new RootJsonFormat[DocumentType] {
+ override def read(json: JsValue): DocumentType = json match {
+ case JsObject(fields) =>
+ val name = fields
+ .get("name")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationError(s"Intervention type json object does not contain `name` field: $json"))
+
+ DocumentType
+ .fromString(name)
+ .getOrElse(deserializationError(s"Unknown document type: $name"))
+
+ case _ => deserializationError(s"Expected Json Object as Intervention type, but got $json")
+ }
+
+ override def write(obj: DocumentType) =
+ JsObject("id" -> obj.id.toJson, "name" -> obj.name.toJson)
+ }
implicit val fullDocumentMetaFormat = new RootJsonFormat[TextJson[Meta]] {
override def write(obj: TextJson[Meta]): JsValue = obj.content.toJson
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/documenttype.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/documenttype.scala
deleted file mode 100644
index 7ec6ef5..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/documenttype.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-package xyz.driver.pdsuidomain.formats.json.sprayformats
-
-import spray.json._
-import xyz.driver.pdsuidomain.entities.DocumentType
-
-object documenttype {
- import DefaultJsonProtocol._
- import common._
-
- implicit val format: RootJsonFormat[DocumentType] = jsonFormat2(DocumentType.apply)
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/providertype.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/providertype.scala
deleted file mode 100644
index 385feb2..0000000
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/providertype.scala
+++ /dev/null
@@ -1,12 +0,0 @@
-package xyz.driver.pdsuidomain.formats.json.sprayformats
-
-import spray.json._
-import xyz.driver.pdsuidomain.entities.ProviderType
-
-object providertype {
- import DefaultJsonProtocol._
- import common._
-
- implicit val providerTypeFormat: RootJsonFormat[ProviderType] = jsonFormat2(ProviderType.apply)
-
-}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala
index 6b69873..8eef44a 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala
@@ -36,7 +36,24 @@ object record {
}
}
- implicit val providerTypeFormat = jsonFormat2(ProviderType.apply)
+ implicit val providerTypeFormat: RootJsonFormat[ProviderType] = new RootJsonFormat[ProviderType] {
+ override def read(json: JsValue): ProviderType = json match {
+ case JsObject(fields) =>
+ val name = fields
+ .get("name")
+ .map(_.convertTo[String])
+ .getOrElse(deserializationError(s"Intervention type json object does not contain `name` field: $json"))
+
+ ProviderType
+ .fromString(name)
+ .getOrElse(deserializationError(s"Unknown provider type: $name"))
+
+ case _ => deserializationError(s"Expected Json Object as Intervention type, but got $json")
+ }
+
+ override def write(obj: ProviderType) =
+ JsObject("id" -> obj.id.toJson, "name" -> obj.name.toJson)
+ }
implicit val caseIdFormat = new RootJsonFormat[CaseId] {
override def write(caseId: CaseId): JsString = JsString(caseId.toString)