У меня запрос, возвращающий следующее:
RETURN COLLECT(DISTINCT({itemNode: ruleAsset.aid, rules: rule, sourceRules: sourceRule})) AS itemRules
Мне удалось получить значение itemNode. Теперь я хочу получить значения правила и sourceRule, но мне пока не удалось этого сделать.
val itemRulesChain = storeAPI.NeoQuery(getItemsWithRulesAndSourceRules).resultList().map {
result =>
result.map {
record =>
val itemRules = record.get("itemRules")
val ruleRecord = record.get("itemRules")
val sourceRuleRecord = record.get("itemRules")
itemRules.asList(Values.ofMap).asScala.map {
itemRuleChain =>
val test = itemRuleChain.get("rules") // is of type AnyRef - I need it to be of type Node to pass it to the neoFormat.neoResultToModel() call
val itemAID = AID.fromString(itemRuleChain.get("itemNode").toString)
val rule = if(ruleRecord.isNull) {None} else Option(neoFormat.neoResultToModel(ruleRecord.asNode, storeAPI.groupRecordRelationshipResults(record, "rs", "pn"))) // should return type Rule
val sourceRule = if(sourceRuleRecord.isNull) {None} else Option(neoFormat.neoResultToModel(sourceRuleRecord.asNode, storeAPI.groupRecordRelationshipResults(record, "rs", "pn"))) // should return type Rule
ItemRuleChain(itemAID, rule, sourceRule) // ItemRuleChain(aid:AID, rule :Rule, sourceRule :Rule)
}.toList
}
}.map(_.flatten).recover {
case e: Exception =>
logger.error(s"Failure in *** : ", e)
throw e
}
Запрос, переданный NeoQuery
, возвращает элемент с его правилами и правилами источника. Я могу легко получить aid
правила, как показано в itemAID
val. Тем не менее, я не могу получить правило или исходное правило, они просто приводят как None
из-за условия оператора if - оно должно получать значения NULL, но откуда? Как получить значения в самом внутреннем блоке кода?
Спасибо.