X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=service%2Fnative%2Fframework_unified%2Fclient%2FNS_ConfigParser%2Fsrc%2Fns_config_writer.cpp;fp=service%2Fnative%2Fframework_unified%2Fclient%2FNS_ConfigParser%2Fsrc%2Fns_config_writer.cpp;h=601500de6701f855ae3c73ae3943eff749264e6e;hb=17cf21bcf8a2e29d2cbcf0a313474d2a4ee44f5d;hp=0000000000000000000000000000000000000000;hpb=9e86046cdb356913ae026f616e5bf17f6f238aa5;p=staging%2Fbasesystem.git diff --git a/service/native/framework_unified/client/NS_ConfigParser/src/ns_config_writer.cpp b/service/native/framework_unified/client/NS_ConfigParser/src/ns_config_writer.cpp new file mode 100755 index 0000000..601500d --- /dev/null +++ b/service/native/framework_unified/client/NS_ConfigParser/src/ns_config_writer.cpp @@ -0,0 +1,227 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed 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. + */ + +//////////////////////////////////////////////////////////////////////////////////////////////////// +/// \ingroup tag_NS_ConfigParser +/// \brief This file contains implementation of CNSConfigWriter class. +/// +//////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Include Files +//////////////////////////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include "ns_cfg_writer.h" +#include "ns_config_parser_frameworkunifiedlog.h" + + +CNSConfigWriter::CNSConfigWriter(): m_pWriter(NULL) { +} + +CNSConfigWriter::CNSConfigWriter(const std::string &f_c_filepath): m_pWriter(NULL) { + FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "File Path %s", f_c_filepath.c_str()); + + Parse(f_c_filepath); +} + +CNSConfigWriter::CNSConfigWriter(const std::string &f_c_filepath, BOOL f_b_noload): m_pWriter(NULL) { + FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "File Path %s", f_c_filepath.c_str()); + + Create(f_c_filepath); +} + +CNSConfigWriter::~CNSConfigWriter() { + FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "Destructor"); + + if (NULL != m_pWriter) { + delete m_pWriter; // LCOV_EXCL_BR_LINE 11:except branch + m_pWriter = NULL; + } + // TODO(my_username): dlclose. +} + +EFrameworkunifiedStatus CNSConfigWriter::Parse(const std::string &f_c_filepath) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + delete m_pWriter; // LCOV_EXCL_BR_LINE 11:except branch + m_pWriter = NULL; + } + + // create parser object depending on file extension + if (std::strstr(f_c_filepath.c_str(), ".cfg") != NULL) { + m_pWriter = new(std::nothrow) CCFGWriter(); // LCOV_EXCL_BR_LINE 11:except branch + } else { + // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Not CFG"); + // LCOV_EXCL_BR_STOP + } + + if (NULL != m_pWriter) { + l_e_status = m_pWriter->ParseFile(f_c_filepath); + } else { + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +EFrameworkunifiedStatus CNSConfigWriter::Create(const std::string &f_c_filepath) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + delete m_pWriter; // LCOV_EXCL_BR_LINE 11:except branch + m_pWriter = NULL; + } + + // create parser object depending on file extension + if (std::strstr(f_c_filepath.c_str(), ".cfg") != NULL) { + m_pWriter = new(std::nothrow) CCFGWriter(); // LCOV_EXCL_BR_LINE 11:except branch + } else { + // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Not CFG"); + // LCOV_EXCL_BR_STOP + l_e_status = eFrameworkunifiedStatusFail; + } + + if (NULL != m_pWriter) { + l_e_status = m_pWriter->SetPath(f_c_filepath); + } else { + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +VOID CNSConfigWriter::SetDataPtr(PVOID f_p_data) { + if (NULL != m_pWriter) { + m_pWriter->SetDataPtr(f_p_data); + } else { + // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "m_pWriter is NULL"); + // LCOV_EXCL_BR_STOP + } +} + +EFrameworkunifiedStatus CNSConfigWriter::Save() { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + // save the updated config file + l_e_status = m_pWriter->SaveData(); + } else { + // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Config Writer (m_pWriter) is NULL"); + // LCOV_EXCL_BR_STOP + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +EFrameworkunifiedStatus CNSConfigWriter::SetBool(const std::string &f_c_key, BOOL f_b_value) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + std::string l_c_temp = ""; + + if (TRUE == f_b_value) { + l_c_temp = "TRUE"; + l_e_status = m_pWriter->SetValue(f_c_key, l_c_temp); // LCOV_EXCL_BR_LINE 11:except branch + } else if (FALSE == f_b_value) { // LCOV_EXCL_BR_LINE 11:except branch + l_c_temp = "FALSE"; + l_e_status = m_pWriter->SetValue(f_c_key, l_c_temp); // LCOV_EXCL_BR_LINE 11:except branch + } else { + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "received bool value is not proper:: %d", f_b_value); + l_e_status = eFrameworkunifiedStatusInvldParam; + } + } else { + // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Config Writer (m_pWriter) is NULL"); + // LCOV_EXCL_BR_STOP + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +EFrameworkunifiedStatus CNSConfigWriter::Set(const std::string &f_cKey, F_64 f_f_value) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + std::stringstream l_cStream; + l_cStream << f_f_value; + + l_e_status = m_pWriter->SetValue(f_cKey, l_cStream.str()); // LCOV_EXCL_BR_LINE 11:except branch + } else { + // LCOV_EXCL_BR_START 15:marco defined in "native_service/ns_logger_if.h" + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Config Writer (m_pWriter) is NULL"); + // LCOV_EXCL_BR_STOP + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +EFrameworkunifiedStatus CNSConfigWriter::Set(const std::string &f_cKey, F_32 f_fValue) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { // LCOV_EXCL_BR_LINE 11:except branch + std::stringstream l_cStream; + l_cStream << f_fValue; + + l_e_status = m_pWriter->SetValue(f_cKey, l_cStream.str()); // LCOV_EXCL_BR_LINE 11:except branch + } else { + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Config Writer (m_pWriter) is NULL"); + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +EFrameworkunifiedStatus CNSConfigWriter::Set(const std::string &f_cKey, SI_32 f_si_value) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + std::stringstream l_cStream; + l_cStream << f_si_value; // LCOV_EXCL_BR_LINE 11:except branch + + l_e_status = m_pWriter->SetValue(f_cKey, l_cStream.str()); // LCOV_EXCL_BR_LINE 11:except branch + } else { + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Config Writer (m_pWriter) is NULL"); // LCOV_EXCL_BR_LINE 11:except branch + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +} + +EFrameworkunifiedStatus CNSConfigWriter::Set(const std::string &f_cKey, const std::string &f_s_value) { + EFrameworkunifiedStatus l_e_status = eFrameworkunifiedStatusOK; + + if (NULL != m_pWriter) { + l_e_status = m_pWriter->SetValue(f_cKey, f_s_value); // LCOV_EXCL_BR_LINE 11:except branch + } else { + FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Config Writer (m_pWriter) is NULL"); // LCOV_EXCL_BR_LINE 11:except branch + l_e_status = eFrameworkunifiedStatusNullPointer; + } + + return l_e_status; +}