Skip to content

Commit

Permalink
Add Actor
Browse files Browse the repository at this point in the history
  • Loading branch information
vvasuki committed Sep 22, 2017
1 parent eb16489 commit 3fe8853
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 20 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Expand Up @@ -6,7 +6,7 @@

<groupId>com.github.sanskrit-coders</groupId>
<artifactId>sanskrit-lttoolbox</artifactId>
<version>0.3</version>
<version>0.4</version>

<description>
Language translation toolbox (lt toolbox) based utilities for Sanskrit.
Expand Down Expand Up @@ -85,7 +85,7 @@
<dependency>
<groupId>com.github.sanskrit-coders</groupId>
<artifactId>db-interface</artifactId>
<version>2.1</version>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
Expand Down
20 changes: 8 additions & 12 deletions sanskrit-lttoolbox.iml
Expand Up @@ -2,7 +2,7 @@
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
<perl5 />
<output url="file://$MODULE_DIR$/target/sanskrit-lttoolbox-0.3/classes" />
<output url="file://$MODULE_DIR$/target/sanskrit-lttoolbox-0.4/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
Expand All @@ -17,20 +17,16 @@
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:0.9.29" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.6.1" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:0.9.29" level="project" />
<orderEntry type="library" name="Maven: com.github.sanskrit-coders:db-interface:2.1" level="project" />
<orderEntry type="module" module-name="db-interface" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-xml:2.11.0-M4" level="project" />
<orderEntry type="library" name="Maven: com.github.sanskrit-coders:indic-transliteration:1.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.4" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s_2.11:3.2.11" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-native_2.11:3.2.11" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-core_2.11:3.2.11" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-ast_2.11:3.2.11" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.6" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scalap:2.11.0" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-compiler:2.11.0" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-reflect:2.11.0" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang.modules:scala-xml_2.11:1.0.1" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-ast_2.12:3.5.2" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-native_2.12:3.5.2" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-core_2.12:3.5.2" level="project" />
<orderEntry type="library" name="Maven: org.json4s:json4s-scalap_2.12:3.5.2" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.8" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang.modules:scala-xml_2.12:1.0.6" level="project" />
<orderEntry type="library" name="Maven: com.typesafe.akka:akka-actor_2.12.0-M5:2.4.8" level="project" />
<orderEntry type="library" name="Maven: com.typesafe:config:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang.modules:scala-java8-compat_2.12.0-M5:0.8.0-RC3" level="project" />
Expand Down
39 changes: 33 additions & 6 deletions 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",
Expand All @@ -24,7 +26,7 @@ class SubantaGenerator(override val binFilePath: String) extends LtToolboxComman
)

// Example query: jFAna<vargaH:nA><lifgam:napuM><viBakwiH:1><vacanam:bahu><level:1>
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"<vargaH:${prakaaraCodeMap.get(prakAra).get}>" +
s"<lifgam:${lingaCodeMap.get(linga).get}>" +
Expand All @@ -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)
Expand All @@ -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<prayogaH:karwari><lakAraH:lat><puruRaH:pra><vacanam:eka><paxI:AwmanepaxI><XAwuH:aMSa><gaNaH:curAxiH><level:1>
// cur1<prayogaH:karwari><lakAraH:lat><puruRaH:pra><vacanam:bahu><paxI:parasmEpaxI><XAwuH:curaz><gaNaH:curAxiH><level:1>
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"<prayogaH:${prayoga}>" +
s"<lakAraH:${lakAra}>" +
Expand All @@ -69,8 +72,8 @@ class TinantaGenerator(override val binFilePath: String) extends LtToolboxComman

// cur1<prayogaH:karwari><lakAraH:lat><puruRaH:pra><vacanam:bahu><paxI:parasmEpaxI><XAwuH:curaz><gaNaH:curAxiH><level:1>
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("/")
}

Expand All @@ -81,6 +84,7 @@ class TinantaGenerator(override val binFilePath: String) extends LtToolboxComman
//cur1<prayogaH:karwari><lakAraH:lat><puruRaH:pra><vacanam:bahu><paxI:parasmEpaxI><XAwuH:curaz><gaNaH:curAxiH><level:1>
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",
Expand All @@ -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
}
}
}

0 comments on commit 3fe8853

Please sign in to comment.