summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrii Kalinich (GitHub) <AKalinich@luxoft.com>2018-08-30 16:45:23 +0300
committerGitHub <noreply@github.com>2018-08-30 16:45:23 +0300
commit6aa1400309c2e7c56c77a9b067b0eee7fb8b9c94 (patch)
tree7c250dcccafbe239da176403d2d99eb4d7b7e029
parent28648f6012e225f3aa36e3a8263f9c8301ba3283 (diff)
parent8bba355ea5b8e13dbcdb7736f565e5d47557cd9c (diff)
downloadsdl_core-6aa1400309c2e7c56c77a9b067b0eee7fb8b9c94.tar.gz
Merge pull request #2540 from AKalinich-Luxoft/feature/revise_0122_to_exclude_synonyms
Implementation of Revise SDL-0122 to exclude synonyms
-rw-r--r--src/components/application_manager/src/help_prompt_manager_impl.cc68
1 files changed, 32 insertions, 36 deletions
diff --git a/src/components/application_manager/src/help_prompt_manager_impl.cc b/src/components/application_manager/src/help_prompt_manager_impl.cc
index 803a0e6743..40def63656 100644
--- a/src/components/application_manager/src/help_prompt_manager_impl.cc
+++ b/src/components/application_manager/src/help_prompt_manager_impl.cc
@@ -31,6 +31,10 @@
*/
#include "application_manager/help_prompt_manager_impl.h"
+
+#include <algorithm>
+#include <iterator>
+
#include "application_manager/application.h"
#include "application_manager/application_manager.h"
#include "application_manager/commands/command_impl.h"
@@ -66,6 +70,12 @@ bool HelpPromptManagerImpl::AddCommand(
return false;
}
+ const smart_objects::SmartObject& commands = command[strings::vr_commands];
+ if (commands.empty()) {
+ LOG4CXX_DEBUG(logger_, "vr_commands array is empty");
+ return false;
+ }
+
sync_primitives::AutoLock lock(vr_commands_lock_);
auto it = std::find_if(
vr_commands_.begin(),
@@ -73,31 +83,28 @@ bool HelpPromptManagerImpl::AddCommand(
[cmd_id](const VRCommandPair& pair) { return pair.first == cmd_id; });
if (vr_commands_.end() != it) {
- LOG4CXX_DEBUG(logger_, "Commands with id:" << cmd_id << " already exists");
+ LOG4CXX_DEBUG(logger_, "Command with id:" << cmd_id << " already exists");
return false;
}
- const smart_objects::SmartObject& commands = command[strings::vr_commands];
const size_t count_new_commands = commands.length();
const bool limit_exceeded =
kLimitCommand <= GetCommandsCount(vr_commands_.end());
- LOG4CXX_DEBUG(logger_, "Will be added " << count_new_commands << " commands");
+ LOG4CXX_DEBUG(logger_,
+ "Will be added first of " << count_new_commands << " commands");
smart_objects::SmartObjectSPtr vr_item =
std::make_shared<smart_objects::SmartObject>(
- smart_objects::SmartType_Array);
- smart_objects::SmartArray& ar_vr_cmd = *(vr_item->asArray());
+ smart_objects::SmartType_String);
smart_objects::SmartArray& ar_cmd = *(commands.asArray());
- ar_vr_cmd.reserve(count_new_commands);
- ar_vr_cmd.insert(
- ar_vr_cmd.end(), ar_cmd.begin(), ar_cmd.begin() + count_new_commands);
+ *vr_item = ar_cmd.front();
vr_commands_.push_back(std::make_pair(cmd_id, vr_item));
LOG4CXX_DEBUG(logger_,
- "VR commands with id: " << cmd_id << " added for appID: "
- << app_.app_id() << ". Total "
- << vr_commands_.size() << " in cache");
+ "VR command with id: " << cmd_id << " added for appID: "
+ << app_.app_id() << ". Total "
+ << vr_commands_.size() << " in cache");
return !limit_exceeded;
}
@@ -193,13 +200,7 @@ HelpPromptManagerImpl::SendingType HelpPromptManagerImpl::GetSendingType()
size_t HelpPromptManagerImpl::GetCommandsCount(
VRCommandPairs::const_iterator end_element) const {
- size_t commands_count = 0;
- std::for_each(vr_commands_.begin(),
- end_element,
- [&commands_count](const VRCommandPair& pair) {
- commands_count += pair.second->length();
- });
- return commands_count;
+ return std::distance(vr_commands_.begin(), end_element);
}
void HelpPromptManagerImpl::SendTTSRequest() {
@@ -303,18 +304,15 @@ void HelpPromptManagerImpl::CreatePromptMsg(
LOG4CXX_AUTO_TRACE(logger_);
out_msg_params[strings::help_prompt] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
- uint32_t index = 0;
- for (size_t i = 0; i < vr_commands_.size(); ++i) {
+ const size_t count_to_add = std::min(vr_commands_.size(), kLimitCommand);
+ for (size_t i = 0; i < count_to_add; ++i) {
const VRCommandPair& pair = vr_commands_[i];
- for (size_t j = 0; j < pair.second->length() && index < kLimitCommand;
- ++j) {
- smart_objects::SmartObject item(smart_objects::SmartType_Map);
- item[strings::text] = pair.second->getElement(j).asString();
- item[strings::type] = mobile_apis::SpeechCapabilities::SC_TEXT;
+ smart_objects::SmartObject item(smart_objects::SmartType_Map);
+ item[strings::text] = pair.second->asString();
+ item[strings::type] = mobile_apis::SpeechCapabilities::SC_TEXT;
- out_msg_params[strings::help_prompt][index++] = item;
- }
+ out_msg_params[strings::help_prompt][i] = item;
}
app_.set_help_prompt(out_msg_params[strings::help_prompt]);
}
@@ -329,20 +327,18 @@ void HelpPromptManagerImpl::CreateVRMsg(
out_msg_params[strings::vr_help_title] = app_.name();
}
}
+
out_msg_params[strings::vr_help] =
smart_objects::SmartObject(smart_objects::SmartType_Array);
- uint32_t index = 0;
- for (size_t i = 0; i < vr_commands_.size(); ++i) {
+ const size_t count_to_add = std::min(vr_commands_.size(), kLimitCommand);
+ for (size_t i = 0; i < count_to_add; ++i) {
const VRCommandPair& pair = vr_commands_[i];
- for (size_t j = 0; j < pair.second->length() && index < kLimitCommand;
- ++j) {
- smart_objects::SmartObject item(smart_objects::SmartType_Map);
- item[strings::text] = pair.second->getElement(j).asString();
- item[strings::position] = index + 1;
+ smart_objects::SmartObject item(smart_objects::SmartType_Map);
+ item[strings::text] = pair.second->asString();
+ item[strings::position] = i + 1;
- out_msg_params[strings::vr_help][index++] = item;
- }
+ out_msg_params[strings::vr_help][i] = item;
}
if (out_msg_params[strings::vr_help].empty()) {
out_msg_params.erase(strings::vr_help);