This is an automated email from the ASF dual-hosted git repository.

sergeykamov pushed a commit to branch NLPCRAFT-383
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git


The following commit(s) were added to refs/heads/NLPCRAFT-383 by this push:
     new b2a8eb8  WIP.
b2a8eb8 is described below

commit b2a8eb8194c0bf8be0c88f6148b5f63c86ecca1c
Author: Sergey Kamov <[email protected]>
AuthorDate: Fri Aug 6 15:28:36 2021 +0300

    WIP.
---
 .../examples/solarsystem/SolarSystemModel.scala    | 12 +++++++-
 .../loaders/SolarSystemDiscoversValueLoader.scala  |  4 +--
 .../loaders/SolarSystemPlanetsValueLoader.scala    |  4 +--
 ...taApi.scala => SolarSystemOpenApiService.scala} | 33 ++++++++++++++--------
 .../src/main/resources/solarsystem_model.yaml      |  2 ++
 .../solarsystem/NCSolarSystemModelSpec.scala       |  1 +
 6 files changed, 39 insertions(+), 17 deletions(-)

diff --git 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
index 720c4bd..d94531a 100644
--- 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
+++ 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/SolarSystemModel.scala
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.examples.solarsystem
 
 import com.typesafe.scalalogging.LazyLogging
-import org.apache.nlpcraft.model.NCModelFileAdapter
+import org.apache.nlpcraft.model.{NCIntent, NCIntentTerm, NCModelFileAdapter, 
NCResult, NCToken}
 
 class SolarSystemModel extends NCModelFileAdapter("solarsystem_model.yaml") 
with LazyLogging {
     override def onInit(): Unit = {
@@ -28,4 +28,14 @@ class SolarSystemModel extends 
NCModelFileAdapter("solarsystem_model.yaml") with
     override def onDiscard(): Unit = {
         super.onDiscard()
     }
+
+    @NCIntent(
+        "intent=i1 " +
+            "term(planet)~{tok_id() == 'prop:moon'}"
+    )
+    def onCustomSortReport(
+        @NCIntentTerm("planet") sortTok: NCToken,
+    ): NCResult = {
+        NCResult.json("OK")
+    }
 }
diff --git 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
index 6afef19..d676775 100644
--- 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
+++ 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemDiscoversValueLoader.scala
@@ -17,8 +17,8 @@
 
 package org.apache.nlpcraft.examples.solarsystem.loaders
 
-import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenDataApi
+import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenApiService
 
 class SolarSystemDiscoversValueLoader extends SolarSystemValueLoader  {
-    override def getData: Seq[String] = 
SolarSystemOpenDataApi.getInstance().getAllDiscovers
+    override def getData: Seq[String] = 
SolarSystemOpenApiService.getInstance().getAllDiscovers
 }
diff --git 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
index dd3c661..5659d97 100644
--- 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
+++ 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/loaders/SolarSystemPlanetsValueLoader.scala
@@ -17,8 +17,8 @@
 
 package org.apache.nlpcraft.examples.solarsystem.loaders
 
-import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenDataApi
+import org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenApiService
 
 class SolarSystemPlanetsValueLoader extends SolarSystemValueLoader {
-    override def getData: Seq[String] = 
SolarSystemOpenDataApi.getInstance().getAllPlanets
+    override def getData: Seq[String] = 
SolarSystemOpenApiService.getInstance().getAllPlanets
 }
diff --git 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenDataApi.scala
 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenApiService.scala
similarity index 73%
rename from 
nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenDataApi.scala
rename to 
nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenApiService.scala
index 70b4f84..3bff72d 100644
--- 
a/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenDataApi.scala
+++ 
b/nlpcraft-examples/solarsystem/src/main/java/org/apache/nlpcraft/examples/solarsystem/tools/SolarSystemOpenApiService.scala
@@ -19,21 +19,22 @@ package org.apache.nlpcraft.examples.solarsystem.tools
 
 import com.fasterxml.jackson.databind.ObjectMapper
 import com.fasterxml.jackson.module.scala.DefaultScalaModule
-import 
org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenDataApi.BodiesBean
+import com.typesafe.scalalogging.LazyLogging
+import 
org.apache.nlpcraft.examples.solarsystem.tools.SolarSystemOpenApiService.BodiesBean
 
 import java.net.URI
-import java.net.http.{HttpClient, HttpRequest, HttpResponse}
 import java.net.http.HttpClient.Version
+import java.net.http.{HttpClient, HttpRequest, HttpResponse}
 
-object SolarSystemOpenDataApi {
+object SolarSystemOpenApiService {
     case class BodiesBean(bodies: Seq[Map[String, Object]])
 
-    private var s: SolarSystemOpenDataApi = _
+    private var s: SolarSystemOpenApiService = _
 
-    def getInstance(): SolarSystemOpenDataApi = {
+    def getInstance(): SolarSystemOpenApiService = {
         this.synchronized {
             if (s == null) {
-                s = new SolarSystemOpenDataApi
+                s = new SolarSystemOpenApiService
 
                 s.start()
             }
@@ -43,7 +44,7 @@ object SolarSystemOpenDataApi {
     }
 }
 
-class SolarSystemOpenDataApi {
+class SolarSystemOpenApiService extends LazyLogging {
     private final val URL_BODIES = 
"https://api.le-systeme-solaire.net/rest/bodies";
     private final val MAPPER = new 
ObjectMapper().registerModule(DefaultScalaModule)
 
@@ -52,10 +53,11 @@ class SolarSystemOpenDataApi {
     private var discovers: Seq[String] = _
 
     private def getBody(params: String*): Seq[Map[String, Object]] = {
-        val req = 
HttpRequest.newBuilder(URI.create(s"$URL_BODIES?data=${params.mkString(",")}")).
-            header("Content-Type", "application/json").
-            GET().
-            build()
+        val req =
+            
HttpRequest.newBuilder(URI.create(s"$URL_BODIES?data=${params.mkString(",")}")).
+                header("Content-Type", "application/json").
+                GET().
+                build()
 
         val respJs = client.sendAsync(req, 
HttpResponse.BodyHandlers.ofString()).get().body()
 
@@ -68,10 +70,15 @@ class SolarSystemOpenDataApi {
         val res = getBody("englishName,discoveredBy")
 
         def extract(name: String): Seq[String] =
-            
res.map(_(name).asInstanceOf[String]).map(_.strip()).filter(_.nonEmpty).distinct
+            
res.map(_(name).asInstanceOf[String]).map(_.strip).filter(_.nonEmpty).distinct
 
         planets = extract("englishName")
         discovers = extract("discoveredBy")
+
+        logger.info(
+            s"Solar System Open Api Service started. " +
+            s"Initial data discovered [planets=${planets.size}, 
discovers=${discovers.size}]"
+        )
     }
 
     def stop(): Unit = {
@@ -79,6 +86,8 @@ class SolarSystemOpenDataApi {
         discovers = null
 
         client = null
+
+        logger.info(s"Solar System Open Api Service stopped.")
     }
 
     def getAllPlanets: Seq[String] = planets
diff --git 
a/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml 
b/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
index 954f2c0..32745a9 100644
--- a/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
+++ b/nlpcraft-examples/solarsystem/src/main/resources/solarsystem_model.yaml
@@ -83,9 +83,11 @@ elements:
 
   - id: "enum:planet"
     description: "..."
+    valueLoader: 
"org.apache.nlpcraft.examples.solarsystem.loaders.SolarSystemPlanetsValueLoader"
 
   - id: "enum:discoverer"
     description: "..."
+    valueLoader: 
"org.apache.nlpcraft.examples.solarsystem.loaders.SolarSystemDiscoversValueLoader"
 
 intents:
   - "intent=ls term(act)={has(tok_groups(), 'prop')}"
\ No newline at end of file
diff --git 
a/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
 
b/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
index 1bd102f..9dae572 100644
--- 
a/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
+++ 
b/nlpcraft-examples/solarsystem/src/test/java/org/apache/nlpcraft/examples/solarsystem/NCSolarSystemModelSpec.scala
@@ -27,5 +27,6 @@ import org.junit.jupiter.api.Test
 class NCSolarSystemModelSpec extends NCTestContext {
     @Test
     def test(): Unit = {
+        checkIntent("moon", "i1")
     }
 }

Reply via email to