summaryrefslogtreecommitdiff
path: root/src/components/formatters/include/formatters/CSmartFactory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/formatters/include/formatters/CSmartFactory.hpp')
-rw-r--r--src/components/formatters/include/formatters/CSmartFactory.hpp428
1 files changed, 0 insertions, 428 deletions
diff --git a/src/components/formatters/include/formatters/CSmartFactory.hpp b/src/components/formatters/include/formatters/CSmartFactory.hpp
deleted file mode 100644
index 55f9a30385..0000000000
--- a/src/components/formatters/include/formatters/CSmartFactory.hpp
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
- * @file CSmartFactory.hpp
- * @brief CSmartFactory header file.
- */
-// Copyright (c) 2013, Ford Motor Company
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-//
-// Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided with the
-// distribution.
-//
-// Neither the name of the Ford Motor Company nor the names of its contributors
-// may be used to endorse or promote products derived from this software
-// without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 'A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef __CSMARTFACTORY_HPP__
-#define __CSMARTFACTORY_HPP__
-
-#include "smart_objects/smart_object.h"
-#include "smart_objects/smart_schema.h"
-#include <map>
-#include <string>
-
-namespace NsSmartDeviceLink
-{
- namespace NsJSONHandler
- {
- /**
- * @brief String constants used by SmartFactory.
- */
- namespace strings
- {
- /**
- * @brief String constant for MSG_PARAMS.
- */
- extern const std::string S_MSG_PARAMS;
-
- /**
- * @brief String constant for PARAMS.
- */
- extern const std::string S_PARAMS;
-
- /**
- * @brief String constant for FUNCTION_ID.
- */
- extern const std::string S_FUNCTION_ID;
-
- /**
- * @brief String constant for MESSAGE_TYPE.
- */
- extern const std::string S_MESSAGE_TYPE;
-
- /**
- * @brief String constant for PROTOCOL_VERSION.
- */
- extern const std::string S_PROTOCOL_VERSION;
-
- /**
- * @brief String constant for PROTOCOL_TYPE.
- */
- extern const std::string S_PROTOCOL_TYPE;
-
- /**
- * @brief String constant for CORRELATION_ID.
- */
- extern const std::string S_CORRELATION_ID;
-
- /**
- * @brief String constant for "code" param name.
- */
- extern const std::string kCode;
-
- /**
- * @brief String constant for "message" param name.
- */
- extern const std::string kMessage;
- }
-
- /**
- * @brief Smart Schema key.
- *
- * @tparam FunctionIdEnum Type of function ID enum.
- * @tparam MessageTypeEnum Type of messageType enum.
- */
- template <class FunctionIdEnum, class MessageTypeEnum>
- struct SmartSchemaKey
- {
- /**
- * @brief Value of function ID for the key.
- */
- FunctionIdEnum functionId;
-
- /**
- * @brief Value of messageType for the key.
- */
- MessageTypeEnum messageType;
-
- /**
- * @brief Constructor.
- *
- * @param functionIdParam Value of function ID.
- * @param messageTypeParam Value of message type.
- */
- SmartSchemaKey(FunctionIdEnum functionIdParam, MessageTypeEnum messageTypeParam);
- };
-
- /**
- * @brief Smart Factory.
- *
- * This class is used as base class for generated factories.
- * Clients should use methods of this class to access all
- * SmartSchema validation features.
- *
- * @tparam FunctionIdEnum Type of function ID enum.
- * @tparam MessageTypeEnum Type of messageType enum.
- * @tparam StructIdEnum Type of StructId enum.
- */
- template <class FunctionIdEnum, class MessageTypeEnum, class StructIdEnum>
- class CSmartFactory
- {
- public:
-
- /**
- * @brief Constructor.
- */
- CSmartFactory(void);
-
- /**
- * @brief Attach schema to the function SmartObject.
- *
- * @param object SmartObject to attach schema for.
- *
- * @param RemoveFakeParameters contains true if need
- * to remove fake parameters from smart object otherwise contains false.
- *
- * @return True if operation was successful or false otherwise.
- */
- bool attachSchema(NsSmartDeviceLink::NsSmartObjects::SmartObject& object,
- const bool RemoveFakeParameters);
-
- /**
- * @brief Attach schema to the struct SmartObject.
- *
- * @param struct_id Identifier of the struct.
- * @param object SmartObject to attach schema for.
- *
- * @return True if operation was successful of false otherwise.
- */
- bool AttachSchema(const StructIdEnum struct_id,
- NsSmartDeviceLink::NsSmartObjects::SmartObject &object);
-
-
- /**
- * @brief Create new SmartObject with attached function SmartSchema.
- *
- * @param function_id FunctionID of the function.
- * @param message_type messageType of the function.
- *
- * @return If function succeeded it returns new SmartObject with
- * map type and attached SmartSchema. Client can use such
- * object to store specific function and perform validation.
- * Otherwise (if SmartSchema was not attached to the
- * SmartObject) function returns empty SmartObject with
- * null type.
- */
- NsSmartDeviceLink::NsSmartObjects::SmartObject CreateSmartObject(
- const FunctionIdEnum function_id,
- const MessageTypeEnum message_type);
-
- /**
- * @brief Create new SmartObject with attached struct SmartSchema.
- *
- * @param struct_id Identifier of the struct.
- *
- * @return If function succeeded it returns new SmartObject with
- * map type and attached SmartSchema. Client can use such
- * object to store specific struct and perform validation.
- * Otherwise (if SmartSchema was not attached to the
- * SmartObject) function returns empty SmartObject with
- * null type.
- */
- NsSmartDeviceLink::NsSmartObjects::SmartObject CreateSmartObject(
- const StructIdEnum struct_id);
-
- /**
- * @brief Get SmartSchema for specific function.
- *
- * @param function_id FunctionID of the function.
- * @param message_type messageType of the function.
- * @param[out] result This value will be copy of the desired
- * function SmartSchema if it found (this
- * function returns true) or unmodified if
- * SmartSchema is not found (this function
- * returns false).
- *
- * @return True if function schema for specified input parameters
- * is found or false otherwise.
- */
- bool GetSchema(
- const FunctionIdEnum function_id,
- const MessageTypeEnum message_type,
- NsSmartDeviceLink::NsSmartObjects::CSmartSchema &result);
-
- /**
- * @brief Get SmartSchema for specific struct.
- *
- * @param struct_id Identifier of the struct.
- *
- * @param[out] result This value will be copy of the desired
- * struct SmartSchema if it found (this
- * function returns true) or unmodified if
- * SmartSchema is not found (this function
- * returns false).
- *
- * @return True if struct schema for specified input parameter is
- * found or false otherwise.
- */
- bool GetSchema(
- const StructIdEnum struct_id,
- NsSmartDeviceLink::NsSmartObjects::CSmartSchema &result);
-
- protected:
-
- /**
- * @brief Defines map of SmartSchemaKeys to the SmartSchemes.
- *
- * This container type should be used to store SmartSchemes of
- * functions.
- */
- typedef std::map<SmartSchemaKey<FunctionIdEnum, MessageTypeEnum>,
- NsSmartDeviceLink::NsSmartObjects::CSmartSchema>
- FuncionsSchemesMap;
-
- /**
- * @brief Defines map of StructIdEnum to the SmartSchemes.
- *
- * This container type should be used to store SmartSchemes of
- * structs.
- */
- typedef std::map<StructIdEnum,
- NsSmartDeviceLink::NsSmartObjects::CSmartSchema>
- StructsSchemesMap;
-
- /**
- * @brief Map of all function schemes for this factory.
- */
- FuncionsSchemesMap functions_schemes_;
-
- /**
- * @brief Map of all struct shemes for this factory.
- */
- StructsSchemesMap structs_schemes_;
- };
-
- template <class FunctionIdEnum, class MessageTypeEnum, class StructIdEnum>
- CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::CSmartFactory(void)
- : functions_schemes_(),
- structs_schemes_()
- {
- }
-
- template <class FunctionIdEnum, class MessageTypeEnum, class StructIdEnum>
- bool CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::
- attachSchema(NsSmartDeviceLink::NsSmartObjects::SmartObject &object,
- const bool RemoveFakeParameters)
- {
- if(false == object.keyExists(strings::S_PARAMS)) return false;
- if(false == object[strings::S_PARAMS].keyExists(strings::S_MESSAGE_TYPE)) return false;
- if(false == object[strings::S_PARAMS].keyExists(strings::S_FUNCTION_ID)) return false;
-
- MessageTypeEnum msgtype((MessageTypeEnum)object[strings::S_PARAMS][strings::S_MESSAGE_TYPE].asInt());
- FunctionIdEnum fid((FunctionIdEnum)object[strings::S_PARAMS][strings::S_FUNCTION_ID].asInt());
-
- SmartSchemaKey<FunctionIdEnum, MessageTypeEnum> key(fid, msgtype);
-
- typename FuncionsSchemesMap::iterator schemaIterator = functions_schemes_.find(key);
-
- if(schemaIterator == functions_schemes_.end())
- {
- // Schema was not found
- return false;
- }
-
- object.setSchema(schemaIterator->second);
- schemaIterator->second.applySchema(object, RemoveFakeParameters);
-
- return true;
- }
-
- template <class FunctionIdEnum,
- class MessageTypeEnum,
- class StructIdEnum>
- bool CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::
- AttachSchema(
- const StructIdEnum struct_id,
- NsSmartDeviceLink::NsSmartObjects::SmartObject &object) {
- typename StructsSchemesMap::iterator structs_iterator =
- structs_schemes_.find(struct_id);
-
- if (structs_iterator == structs_schemes_.end()) {
- return false;
- }
-
- object.setSchema(structs_iterator->second);
- structs_iterator->second.applySchema(object, false);
-
- return true;
- }
-
- template <class FunctionIdEnum,
- class MessageTypeEnum,
- class StructIdEnum>
- NsSmartDeviceLink::NsSmartObjects::SmartObject
- CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::
- CreateSmartObject(
- const FunctionIdEnum function_id,
- const MessageTypeEnum message_type) {
- SmartSchemaKey<FunctionIdEnum, MessageTypeEnum> key(
- function_id, message_type);
-
- typename FuncionsSchemesMap::iterator schema_iterator =
- functions_schemes_.find(key);
-
- if(schema_iterator != functions_schemes_.end()) {
- NsSmartDeviceLink::NsSmartObjects::SmartObject function_object(
- NsSmartDeviceLink::NsSmartObjects::SmartType_Map);
- function_object.setSchema(schema_iterator->second);
- schema_iterator->second.applySchema(function_object, false);
- return function_object;
- }
-
- return NsSmartDeviceLink::NsSmartObjects::SmartObject();
- }
-
- template <class FunctionIdEnum,
- class MessageTypeEnum,
- class StructIdEnum>
- NsSmartDeviceLink::NsSmartObjects::SmartObject
- CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::
- CreateSmartObject(const StructIdEnum struct_id) {
- NsSmartDeviceLink::NsSmartObjects::SmartObject struct_object(
- NsSmartDeviceLink::NsSmartObjects::SmartType_Map);
- if (AttachSchema(struct_id, struct_object)) {
- return struct_object;
- }
-
- return NsSmartDeviceLink::NsSmartObjects::SmartObject();
- }
-
- template <class FunctionIdEnum,
- class MessageTypeEnum,
- class StructIdEnum>
- bool CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::
- GetSchema(const FunctionIdEnum function_id,
- const MessageTypeEnum message_type,
- NsSmartDeviceLink::NsSmartObjects::CSmartSchema &result) {
- SmartSchemaKey<FunctionIdEnum, MessageTypeEnum> key(function_id,
- message_type);
-
- typename FuncionsSchemesMap::iterator schema_iterator =
- functions_schemes_.find(key);
-
- if(schema_iterator != functions_schemes_.end()) {
- result = schema_iterator->second;
- return true;
- }
-
- return false;
- }
-
- template <class FunctionIdEnum,
- class MessageTypeEnum,
- class StructIdEnum>
- bool CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::
- GetSchema(const StructIdEnum struct_id,
- NsSmartDeviceLink::NsSmartObjects::CSmartSchema &result) {
- typename StructsSchemesMap::iterator structs_iterator =
- structs_schemes_.find(struct_id);
-
- if(structs_iterator != structs_schemes_.end()) {
- result = structs_iterator->second;
- return true;
- }
-
- return false;
- }
-
- template <class FunctionIdEnum, class MessageTypeEnum>
- SmartSchemaKey<FunctionIdEnum, MessageTypeEnum>::SmartSchemaKey(FunctionIdEnum functionIdParam, MessageTypeEnum messageTypeParam)
- : functionId(functionIdParam)
- , messageType(messageTypeParam)
- {
-
- }
-
- template <class FunctionIdEnum, class MessageTypeEnum>
- bool operator<(const SmartSchemaKey< FunctionIdEnum, MessageTypeEnum >& l, const SmartSchemaKey< FunctionIdEnum, MessageTypeEnum >& r)
- {
- if (l.functionId < r.functionId) return true;
- if (l.functionId > r.functionId) return false;
-
- if (l.messageType < r.messageType) return true;
- if (l.messageType > r.messageType) return false;
-
- return false;
- }
- }
-}
-#endif //__CSMARTFACTORY_HPP__