aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala1
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala6
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/document.scala6
-rw-r--r--src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala3
-rw-r--r--src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/DocumentFormatSuite.scala5
8 files changed, 26 insertions, 13 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala
index 258aa03..fa5f4ce 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/entities/Document.scala
@@ -456,7 +456,8 @@ final case class Document(id: LongId[Document] = LongId(0L),
meta: Option[TextJson[Meta]], // not null
startDate: Option[LocalDate], // not null
endDate: Option[LocalDate],
- lastUpdate: LocalDateTime) {
+ lastUpdate: LocalDateTime,
+ labelVersion: Int) {
import Document.Status._
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala
index d2a648c..8ba1d82 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/recordprocessing.scala
@@ -182,7 +182,8 @@ object recordprocessing {
meta = nextOption(nextDocumentMetaJson()),
startDate = startDate,
endDate = endDate,
- lastUpdate = nextLocalDateTime
+ lastUpdate = nextLocalDateTime,
+ labelVersion = generators.nextInt(100)
)
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/fakes/entities/rep/DocumentGen.scala
@@ -0,0 +1 @@
+
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala
index 3f1ecfe..250e650 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala
@@ -25,7 +25,8 @@ final case class ApiDocument(id: Long,
assignee: Option[String],
previousAssignee: Option[String],
lastActiveUser: Option[String],
- meta: Option[String]) {
+ meta: Option[String],
+ labelVersion: Int) {
private def extractStatus(status: String): Document.Status =
Document.Status.fromString(status).getOrElse(throw new NoSuchElementException(s"Status $status unknown"))
@@ -50,7 +51,8 @@ final case class ApiDocument(id: Long,
meta = this.meta.map(x => TextJson(JsonSerializer.deserialize[Document.Meta](x))),
startDate = this.startDate,
endDate = this.endDate,
- lastUpdate = this.lastUpdate.toLocalDateTime()
+ lastUpdate = this.lastUpdate.toLocalDateTime(),
+ labelVersion = this.labelVersion
)
}
@@ -83,7 +85,8 @@ object ApiDocument {
(JsPath \ "lastActiveUser").formatNullable[String] and
(JsPath \ "meta").formatNullable(Format(Reads { x =>
JsSuccess(Json.stringify(x))
- }, Writes[String](Json.parse)))
+ }, Writes[String](Json.parse))) and
+ (JsPath \ "labelVersion").format[Int]
)(ApiDocument.apply, unlift(ApiDocument.unapply))
def fromDomain(document: Document): ApiDocument = {
@@ -104,7 +107,8 @@ object ApiDocument {
assignee = document.assignee.map(_.id),
previousAssignee = document.previousAssignee.map(_.id),
lastActiveUser = document.lastActiveUserId.map(_.id),
- meta = document.meta.map(meta => JsonSerializer.serialize(meta.content))
+ meta = document.meta.map(meta => JsonSerializer.serialize(meta.content)),
+ labelVersion = document.labelVersion
)
}
}
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala
index 032ddf6..ecbdaed 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala
@@ -47,7 +47,8 @@ final case class ApiPartialDocument(recordId: Option[Long],
meta = meta.cata(x => Some(TextJson(JsonSerializer.deserialize[Meta](x))), None, orig.meta),
startDate = startDate.cata(Some(_), None, orig.startDate),
endDate = endDate.cata(Some(_), None, orig.endDate),
- lastUpdate = LocalDateTime.MIN // Should update internally in a business logic module
+ lastUpdate = LocalDateTime.MIN, // Should update internally in a business logic module,
+ labelVersion = orig.labelVersion
)
def toDomain: Try[Document] = Try {
@@ -75,7 +76,8 @@ final case class ApiPartialDocument(recordId: Option[Long],
assignee = None,
previousAssignee = None,
lastActiveUserId = None,
- lastUpdate = LocalDateTime.MIN
+ lastUpdate = LocalDateTime.MIN,
+ labelVersion = 0
)
} else {
throw new JsonValidationException(validationErrors)
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 f742915..c584b96 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
@@ -126,7 +126,8 @@ object document {
"previousAssignee" -> document.previousAssignee.toJson,
"meta" -> document.meta.toJson,
"lastActiveUser" -> document.lastActiveUserId.toJson,
- "lastUpdate" -> document.lastUpdate.toJson
+ "lastUpdate" -> document.lastUpdate.toJson,
+ "labelVersion" -> document.labelVersion.toJson
)
override def read(json: JsValue): Document = json match {
@@ -185,7 +186,8 @@ object document {
assignee = None,
previousAssignee = None,
lastActiveUserId = None,
- lastUpdate = LocalDateTime.MIN
+ lastUpdate = LocalDateTime.MIN,
+ labelVersion = 0
)
case _ => deserializationError(s"Expected Json Object as Document, but got $json")
diff --git a/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala
index 7d8a418..915e4e7 100644
--- a/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuidomain/DocumentSuite.scala
@@ -82,7 +82,8 @@ class DocumentSuite extends BaseSuite {
startDate = Some(lastUpdate.toLocalDate.minusDays(2)),
endDate = None,
lastUpdate = lastUpdate,
- meta = Some(TextJson(Document.Meta(1.1, 2.2)))
+ meta = Some(TextJson(Document.Meta(1.1, 2.2))),
+ labelVersion = 1
)
}
}
diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/DocumentFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/DocumentFormatSuite.scala
index e6dd4a1..111da6e 100644
--- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/DocumentFormatSuite.scala
+++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/DocumentFormatSuite.scala
@@ -28,14 +28,15 @@ class DocumentFormatSuite extends FlatSpec with Matchers {
requiredType = Some(Document.RequiredType.OPN),
meta = None,
startDate = None,
- endDate = None
+ endDate = None,
+ labelVersion = 0
)
val writtenJson = documentFormat.write(orig)
writtenJson should be(
"""{"id":1,"recordId":101,"physician":"physician","typeId":10,"provider":"provider 21","providerTypeId":21,
"requiredType":"OPN","institutionName":"institution name","startDate":null,"endDate":null,"status":"New","assignee":null,"previousStatus":null,
- "previousAssignee":null,"lastActiveUser":null,"lastUpdate":"2017-08-10T18:00Z","meta":null}""".parseJson)
+ "previousAssignee":null,"lastActiveUser":null,"lastUpdate":"2017-08-10T18:00Z","meta":null,"labelVersion":0}""".parseJson)
val createDocumentJson =
"""{"recordId":101,"physician":"physician","typeId":10,"provider":"provider 21","providerTypeId":21}""".parseJson