aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/entities/ExtractedData.scala
blob: fbd468f7bd3737a6d4f183df1aae941b17e37b01 (plain) (tree)
1
2
3

                                       
                                                        


















                                                                          























                                                                                                           
                                                                              
                                                              
package xyz.driver.pdsuidomain.entities

import xyz.driver.entities.labels.{Label, LabelCategory}
import xyz.driver.pdsuicommon.domain.{FuzzyValue, 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: Meta.Keyword, evidence: 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=$value)"
  }
}

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