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

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


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

commit e8090b6c9f775483e86404bba1b48d6fa6e23bbc
Author: Sergey Kamov <[email protected]>
AuthorDate: Thu Mar 18 11:46:35 2021 +0300

    WIP.
---
 .../probe/mgrs/nlp/impl/NCRequestImpl.scala        | 14 +++++---
 .../nlpcraft/server/mdo/NCCompanyPropertyMdo.scala | 41 ++++++++++++++++++++++
 .../nlpcraft/server/probe/NCProbeManager.scala     | 29 ++++++++-------
 .../nlpcraft/server/query/NCQueryManager.scala     | 13 +++++--
 4 files changed, 78 insertions(+), 19 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
index 97f60a5..6b067e2 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
@@ -17,12 +17,12 @@
 
 package org.apache.nlpcraft.probe.mgrs.nlp.impl
 
-import java.util.Optional
-
+import java.util.{Collections, Optional}
 import org.apache.nlpcraft.common._
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.impl._
 
+import java.util
 import scala.collection._
 import scala.collection.JavaConverters._
 import scala.compat.java8.OptionConverters._
@@ -55,7 +55,7 @@ case class NCRequestImpl(meta: Map[String, Any], srvReqId: 
String) extends NCReq
         getOpt("COMPANY_CITY"),
         getOpt("COMPANY_ADDRESS"),
         getOpt("COMPANY_POSTAL"),
-        Map.empty[String, AnyRef].asJava, // TODO
+        getMap("COMPANY_META")
     )
     override lazy val getUser: NCUser = new NCUserImpl(
         meta("USER_ID").asInstanceOf[Long],
@@ -63,7 +63,7 @@ case class NCRequestImpl(meta: Map[String, Any], srvReqId: 
String) extends NCReq
         getOpt("LAST_NAME"),
         getOpt("EMAIL"),
         getOpt("AVATAR_URL"),
-        Map.empty[String, AnyRef].asJava, // TODO
+        getMap("META"),
         meta("IS_ADMIN").asInstanceOf[Boolean],
         meta("SIGNUP_TSTAMP").asInstanceOf[Long]
     )
@@ -73,4 +73,10 @@ case class NCRequestImpl(meta: Map[String, Any], srvReqId: 
String) extends NCReq
             case Some(v) ⇒ Optional.of(v.asInstanceOf[T])
             case None ⇒ Optional.empty()
         }
+
+    private def getMap(key: String): util.Map[String, AnyRef] = {
+        val m: Optional[Map[String, AnyRef]] = getOpt(key)
+
+        if (m.isPresent) m.get().asJava else Collections.emptyMap()
+    }
 }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/mdo/NCCompanyPropertyMdo.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/mdo/NCCompanyPropertyMdo.scala
new file mode 100644
index 0000000..695a41c
--- /dev/null
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/mdo/NCCompanyPropertyMdo.scala
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nlpcraft.server.mdo
+
+import org.apache.nlpcraft.server.mdo.impl._
+import org.apache.nlpcraft.server.sql.NCSql.Implicits.RsParser
+
+import java.sql.Timestamp
+
+/**
+  * Company property MDO.
+  */
+@NCMdoEntity(table = "nc_company_property")
+case class NCCompanyPropertyMdo(
+    @NCMdoField(column = "id", pk = true) id: Long,
+    @NCMdoField(column = "company_id") userId: Long,
+    @NCMdoField(column = "property") property: String,
+    @NCMdoField(column = "value") value: String,
+    @NCMdoField(column = "created_on") createdOn: Timestamp,
+    @NCMdoField(column = "last_modified_on") lastModifiedOn: Timestamp
+) extends NCAnnotatedMdo[NCCompanyPropertyMdo]
+
+object NCCompanyPropertyMdo {
+    implicit val x: RsParser[NCCompanyPropertyMdo] =
+        NCAnnotatedMdo.mkRsParser(classOf[NCCompanyPropertyMdo])
+}
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
index 20902a8..a64d231 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala
@@ -824,16 +824,19 @@ object NCProbeManager extends NCService {
 
     /**
       *
-      * @param srvReqId Server request ID.
+      * @param srvReqId
       * @param usr
       * @param company
+      * @param mdlId
       * @param txt
       * @param nlpSen
       * @param usrAgent
       * @param rmtAddr
       * @param data
+      * @param usrMeta
+      * @param companyMeta
       * @param logEnable
-      * @param parent Optional parent span.
+      * @param parent
       */
     @throws[NCE]
     def askProbe(
@@ -846,18 +849,19 @@ object NCProbeManager extends NCService {
         usrAgent: Option[String],
         rmtAddr: Option[String],
         data: Option[String],
-        usrPropsOpt: Option[Map[String, String]],
+        usrMeta: Option[Map[String, String]],
+        companyMeta: Option[Map[String, String]],
         logEnable: Boolean,
         parent: Span = null): Unit = {
         startScopedSpan("askProbe", parent, "srvReqId" → srvReqId, "usrId" → 
usr.id, "mdlId" → mdlId, "txt" → txt) { span ⇒
-            val userProps =
-                usrPropsOpt match {
-                    case Some(props) ⇒
-                        val m = new util.HashMap[String, String]()
-    
-                        props.foreach { case (k, v) ⇒ m.put(k, v) }
+            def convertMeta(metaOpt: Option[Map[String, String]]): 
util.HashMap[String, String] =
+                metaOpt match {
+                    case Some(meta) ⇒
+                        val map = new util.HashMap[String, String]()
+
+                        meta.foreach { case (k, v) ⇒ map.put(k, v) }
     
-                        m
+                        map
                     case None ⇒ null
                 }
 
@@ -876,7 +880,7 @@ object NCProbeManager extends NCService {
                 "IS_ADMIN" → usr.isAdmin,
                 "AVATAR_URL" → usr.avatarUrl.orNull,
                 "DATA" → data.orNull,
-                "USER_PROPS" → userProps,
+                "META" → convertMeta(usrMeta),
                 "COMPANY_ID" → company.id,
                 "COMPANY_NAME" → company.name,
                 "COMPANY_WEBSITE" → company.website.orNull,
@@ -884,7 +888,8 @@ object NCProbeManager extends NCService {
                 "COMPANY_REGION" → company.region.orNull,
                 "COMPANY_CITY" → company.city.orNull,
                 "COMPANY_ADDRESS" → company.address.orNull,
-                "COMPANY_POSTAL" → company.postalCode.orNull
+                "COMPANY_POSTAL" → company.postalCode.orNull,
+                "COMPANY_META" → convertMeta(companyMeta)
             ).
                 filter(_._2 != null).
                 foreach(p ⇒ senMeta.put(p._1, 
p._2.asInstanceOf[java.io.Serializable]))
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
index 411651e..572ecfb 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
@@ -221,12 +221,18 @@ object NCQueryManager extends NCService with 
NCIgniteInstance with NCOpenCensusS
         val usr = NCUserManager.getUserById(usrId, parent).getOrElse(throw new 
NCE(s"Unknown user ID: $usrId"))
         val company = NCCompanyManager.getCompany(usr.companyId, 
parent).getOrElse(throw new NCE(s"Unknown company ID: ${usr.companyId}"))
 
-        val usrProps = {
+        val usrMeta = {
             val m = NCUserManager.getUserProperties(usrId, parent)
 
             if (m.isEmpty) None else Some(m.map(p ⇒ p.property → 
p.value).toMap)
         }
-        
+
+        val compMeta = {
+            val m = NCCompanyManager.getCompanyProperties(usr.companyId, 
parent)
+
+            if (m.isEmpty) None else Some(m.map(p ⇒ p.property → 
p.value).toMap)
+        }
+
         // Check input length.
         if (txt0.split(" ").length > MAX_WORDS)
             throw new NCE(s"User input is too long (max is $MAX_WORDS words).")
@@ -290,7 +296,8 @@ object NCQueryManager extends NCService with 
NCIgniteInstance with NCOpenCensusS
                     usrAgent,
                     rmtAddr,
                     data,
-                    usrProps,
+                    usrMeta,
+                    compMeta,
                     enabledLog,
                     span
                 )

Reply via email to