aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities/ExtractedData.scala
blob: 569375ab4559a6a5b429ea05e43956cf3503c472 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package xyz.driver.pdsuidomain.entities

import xyz.driver.entities.labels.{Label, LabelCategory, LabelValue}
import xyz.driver.pdsuicommon.domain.{LongId, TextJson}
import xyz.driver.pdsuicommon.logging._
import xyz.driver.pdsuidomain.entities.ExtractedData.Meta

final case class ExtractedData(id: LongId[ExtractedData] = LongId(0L),
                               documentId: LongId[Document],
                               keywordId: Option[LongId[Keyword]],
                               evidenceText: Option[String],
                               meta: Option[TextJson[Meta]]) {

  def isValid: Boolean = evidenceText.getOrElse("") != "" && meta.nonEmpty

}

object ExtractedData {

  final case class Meta(keyword: Option[Meta.Keyword], evidence: Option[Meta.Evidence])

  object Meta {
    final case class Evidence(pageRatio: Double, start: TextLayerPosition, end: TextLayerPosition)

    final case class TextLayerPosition(page: Integer, index: Integer, offset: Integer)

    final case class Keyword(page: Integer, pageRatio: Option[Double], index: Integer, sortIndex: String)
  }

  implicit def toPhiString(x: ExtractedData): PhiString = {
    import x._
    phi"ExtractedData(id=$id, documentId=$documentId, keywordId=$keywordId)"
  }
}

object ExtractedDataLabel {

  implicit def toPhiString(x: ExtractedDataLabel): PhiString = {
    import x._
    phi"ExtractedDataLabel(id=$id, dataId=$dataId, labelId=$labelId, categoryId=$categoryId, value=${Unsafe(value)})"
  }
}

final case class ExtractedDataLabel(id: LongId[ExtractedDataLabel],
                                    dataId: LongId[ExtractedData],
                                    labelId: Option[LongId[Label]],
                                    categoryId: Option[LongId[LabelCategory]],
                                    value: Option[LabelValue])