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
)