diff --git a/pom.xml b/pom.xml index 6c235f7..10d896b 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.sanskrit-coders sanskrit-lttoolbox - 0.3 + 0.4 Language translation toolbox (lt toolbox) based utilities for Sanskrit. @@ -85,7 +85,7 @@ com.github.sanskrit-coders db-interface - 2.1 + 2.5 com.typesafe.akka diff --git a/sanskrit-lttoolbox.iml b/sanskrit-lttoolbox.iml index a059d2b..353710b 100644 --- a/sanskrit-lttoolbox.iml +++ b/sanskrit-lttoolbox.iml @@ -2,7 +2,7 @@ - + @@ -17,20 +17,16 @@ - + - - - - - - - - - - + + + + + + diff --git a/src/main/scala/sanskrit_coders/scl/Generators.scala b/src/main/scala/sanskrit_coders/scl/Generators.scala index 83b21a2..01a341f 100644 --- a/src/main/scala/sanskrit_coders/scl/Generators.scala +++ b/src/main/scala/sanskrit_coders/scl/Generators.scala @@ -1,9 +1,11 @@ package sanskrit_coders.scl +import akka.actor.{Actor, ActorLogging} +import dbSchema.grammar.{Subanta, Tinanta} import org.slf4j.{Logger, LoggerFactory} import sanskrit_coders.common.LtToolboxCommandWrapper -class SubantaGenerator(override val binFilePath: String) extends LtToolboxCommandWrapper(binFilePath=binFilePath) { +class SubantaGenerator(override val binFilePath: String) extends LtToolboxCommandWrapper(binFilePath = binFilePath) { override val log: Logger = LoggerFactory.getLogger(getClass.getName) final val prakaaraCodeMap = Map[String, String]( "sAXAraNa" -> "nA", @@ -24,7 +26,7 @@ class SubantaGenerator(override val binFilePath: String) extends LtToolboxComman ) // Example query: jFAna - def getQuery(root: String, prakAra: String, linga: String, vibhakti: Int, vachana: Int) : String = { + def getQuery(root: String, prakAra: String, linga: String, vibhakti: Int, vachana: Int): String = { s"${root}" + s"" + s"" + @@ -41,6 +43,7 @@ class SubantaGenerator(override val binFilePath: String) extends LtToolboxComman object subantaGeneratorTest { val log = LoggerFactory.getLogger(getClass.getName) + def main(args: Array[String]): Unit = { val subantaGenerator = new SubantaGenerator(binFilePath = "/home/vvasuki/scl/build/morph_bin/sup_gen.bin") var subanta = subantaGenerator.getSubanta("jFAna", "sAXAraNa", "napum", 2, 3) @@ -49,13 +52,13 @@ object subantaGeneratorTest { } -class TinantaGenerator(override val binFilePath: String) extends LtToolboxCommandWrapper(binFilePath=binFilePath) { +class TinantaGenerator(override val binFilePath: String) extends LtToolboxCommandWrapper(binFilePath = binFilePath) { override val log: Logger = LoggerFactory.getLogger(getClass.getName) // aMSa1 // cur1 def getQuery(root: String, kimpadI: String, dhAtu: String, gaNa: String, prayoga: String, - lakAra: String, puruSha: String, vachana: String) : String = { + lakAra: String, puruSha: String, vachana: String): String = { s"${root}" + s"" + s"" + @@ -69,8 +72,8 @@ class TinantaGenerator(override val binFilePath: String) extends LtToolboxComman // cur1 def getTinanta(root: String, kimpadI: String, dhAtu: String, gaNa: String, prayoga: String, - lakAra: String, puruSha: String, vachana: String) : Seq[String] = { - val result = queryBin(getQuery(root=root, kimpadI = kimpadI, dhAtu = dhAtu, gaNa = gaNa, prayoga = prayoga, lakAra = lakAra, puruSha = puruSha, vachana = vachana)) + lakAra: String, puruSha: String, vachana: String): Seq[String] = { + val result = queryBin(getQuery(root = root, kimpadI = kimpadI, dhAtu = dhAtu, gaNa = gaNa, prayoga = prayoga, lakAra = lakAra, puruSha = puruSha, vachana = vachana)) result.split("/") } @@ -81,6 +84,7 @@ class TinantaGenerator(override val binFilePath: String) extends LtToolboxComman //cur1 object tinantaGeneratorTest { val log = LoggerFactory.getLogger(getClass.getName) + def main(args: Array[String]): Unit = { val tinantaGenerator = new TinantaGenerator(binFilePath = "/home/vvasuki/scl/build/morph_bin/wif_gen.bin") var tinanta = tinantaGenerator.getTinanta(root = "cur1", kimpadI = "parasmEpaxI", dhAtu = "curaz", @@ -90,3 +94,26 @@ object tinantaGeneratorTest { } } + + +class GeneratorActor(subantaGenerator: SubantaGenerator, tinantaGenerator: TinantaGenerator) extends Actor with ActorLogging { + + def receive: Receive = { + case subanta: Subanta => { + var vibhaktiNum = subanta.vibhakti.get.vibhaktiNum + if(subanta.vibhakti.get.prakaara != None) { + vibhaktiNum = 8 + } + + val padas = subantaGenerator.getSubanta(root = subanta.praatipadika.get.root, prakAra = subanta.praatipadika.get.prakaara.get, linga = subanta.praatipadika.get.linga.get, vibhakti = vibhaktiNum, vachana = subanta.vachana.get) + sender() ! padas + } + case tinanta: Tinanta => { + val padas = tinantaGenerator.getTinanta(root = tinanta.dhaatu.get.sclCode.get, kimpadI = tinanta.vivaxaa.get.kimpadI.get, dhAtu = tinanta.dhaatu.get.aupadeshikaDhaatu.get, + gaNa = tinanta.dhaatu.get.gaNa.get, + prayoga = tinanta.vivaxaa.get.prayoga.get, lakAra = tinanta.vivaxaa.get.lakaara.get, puruSha = tinanta.vivaxaa.get.puruSha.get, vachana = tinanta.vivaxaa.get.vachana.get) + sender() ! padas + } + } +} +