21#ifndef MAPPING_CONFIGURATION_FROM_XML_FACTORY_H_INCLUDED
22#define MAPPING_CONFIGURATION_FROM_XML_FACTORY_H_INCLUDED
40template <
typename DomNodeType>
65 const std::string& attribute_name)
72 dom_node.getName() +
" tag has no mandatory '" + attribute_name +
"' attribute",
85 const std::string& attribute_name)
101 const std::string& tag_name,
102 const std::string& additional_info = {})
109 dom_node.getName() + additional_info +
" tag has no mandatory <" + tag_name +
"/> tag",
120 template <
typename T>
122 const std::string& tag_name)
137 if (file_mapping_version) {
158 return created_header;
167 template <
typename PropertiesType>
172 dom_node, *name, properties);
187 std::list<DomNodeType> properties;
188 if (dom_node.findNodes(
"properties//property", properties)) {
189 for (
const auto& current_property: properties) {
206 if (*type ==
"source") {
208 dom_node,
"source_name",
" with type='source' ");
212 else if (*type ==
"const") {
217 else if (*type ==
"internal") {
220 dom_node,
"value_name",
" with type='internal'");
224 throw Error(
"createParameterValue", {*name, *type},
"unsupported type for assignment");
238 if (*assignment_type ==
"source") {
239 const auto source_name =
245 else if (*assignment_type ==
"const") {
250 else if (*assignment_type ==
"call") {
251 const auto function_name =
257 std::list<DomNodeType> parameter_values;
258 dom_node.findNodes(
"parameter_value", parameter_values);
259 for (
const auto& current_param_node: parameter_values) {
264 throw Error(
"Mapping20::createAssignment",
265 {dom_node.getName()},
266 "assignment type='" + *assignment_type +
"' is unsupported");
276 const auto time_value =
278 const auto unit_value =
292 const auto value_name =
294 const auto operator_name =
323 const auto parse_trigger_node = [&]() {
324 if (*trigger_type ==
"source") {
327 else if (*trigger_type ==
"data") {
330 else if (*trigger_type ==
"periodic") {
334 throw Error(
"Mapping20::createTrigger",
335 {dom_node.getName()},
336 "trigger type='" + *trigger_type +
"' is unsupported");
346 return created_trigger;
370 const auto target_type =
376 std::list<DomNodeType> properties;
377 if (dom_node.findNodes(
"properties//property", properties)) {
378 for (
const auto& current_property: properties) {
383 std::list<DomNodeType> assignments;
384 if (dom_node.findNodes(
"assignments//assignment", assignments)) {
385 for (
const auto& current_assignment: assignments) {
389 std::list<DomNodeType> triggers;
390 if (dom_node.findNodes(
"triggers//trigger", triggers)) {
391 for (
const auto& current_trigger: triggers) {
423 std::list<DomNodeType> properties;
424 if (dom_node.findNodes(
"properties//property", properties)) {
425 for (
const auto& current_property: properties) {
429 return module_instance;
443 DomNodeType header_element;
445 if (dom_node.findNode(
"header", header_element)) {
449 if (current_version <
Version(2, 0)) {
457 std::list<DomNodeType> source_nodes;
458 if (dom_node.findNodes(
"//sources/source", source_nodes)) {
459 for (
const auto& current_source_node: source_nodes) {
464 std::list<DomNodeType> target_nodes;
465 if (dom_node.findNodes(
"//targets/target", target_nodes)) {
466 for (
const auto& current_target_node: target_nodes) {
472 std::list<DomNodeType> function_nodes;
473 if (dom_node.findNodes(
"//functions/function", function_nodes)) {
474 for (
const auto& current_func_node: function_nodes) {
static Version fromString(const std::string &version, const Version &default_val=Version(0, 0))
Creates the Version from a string.
void emplace(DDL_TYPE_TO_ACCESS &&type_to_add)
emplace the given item
Definition access_list.h:432
void emplace(DDL_TYPE_TO_ACCESS &&type_to_add)
emplaces the given item
Definition access_map.h:368
Mapping Version.
Definition mapping_version.h:32
static const Version getLatestVersion()
Get the Latest Version (this is 2.0)
Datamodel assignment class used in Target.
Definition datamodel_configuration_items.h:912
ParameterValue::ConstValue ConstValue
ConstValue type.
Definition datamodel_configuration_items.h:941
ParameterValue::SourceValue SourceValue
SourceValue type.
Definition datamodel_configuration_items.h:937
Datamodel function class used in MappingConfiguration.
Definition datamodel_configuration_items.h:1314
const Properties & getProperties() const
Get the Properties.
The mapping configuration datamodel.
Definition datamodel_configuration.h:38
const Functions & getFunctions() const
Get the Functions.
const Targets & getTargets() const
Get the Targets.
void setHeader(const Header &header)
Set the Header object.
const Sources & getSources() const
Get the Sources.
Datamodel parameter value class used within Assignment.
Definition datamodel_configuration_items.h:654
Datamodel source class used in MappingConfiguration.
Definition datamodel_configuration_items.h:262
const Properties & getProperties() const
Get the Properties.
Datamodel target class within MappingConfiguration.
Definition datamodel_configuration_items.h:1155
const Assignments & getAssignments() const
Get the Assignments.
const Triggers & getTriggers() const
Get the Triggers.
const Properties & getProperties() const
Get the Properties.
Datamodel trigger class use within Target.
Definition datamodel_configuration_items.h:376
void setTimeStrategy(const std::string &time_strategy)
void emplace(DDL_TYPE_TO_ACCESS &&type_to_add)
emplace the given item
Definition access_vector.h:276
definition of the mapping namespace
Definition ddl.h:50
ddl::utility::Error Error
mapping error definition
Definition mapping_configuration_types.h:35
definition of the ddl namespace
Definition codec.h:21
An optional template as long as the std::optional is not available here.
Definition access_optional.h:31
Factory to create a MappingConfiguration out of a XML based description. This factory uses a template...
Definition datamodel_xml_configurationfromxml_10.h:44
static datamodel::MappingConfiguration createConfiguration(const DomNodeType &dom_node, const datamodel::Header &header)
Creates a MappingConfiguration and read all sub node.
Definition datamodel_xml_configurationfromxml_10.h:450
Factory helper to create a MappingConfiguration out of a XML based description. This factory uses a t...
Definition datamodel_xml_configurationfromxml_base.h:48
Factory to create a MappingConfiguration out of a XML based description. This factory uses a template...
Definition datamodel_xml_configurationfromxml.h:41
static datamodel::Trigger createTrigger(const DomNodeType &dom_node)
Create a Trigger object.
Definition datamodel_xml_configurationfromxml.h:355
static datamodel::Trigger createSourceTrigger(const DomNodeType &dom_node)
Create a Trigger object as Trigger(Source)
Definition datamodel_xml_configurationfromxml.h:307
static datamodel::Target createTarget(const DomNodeType &dom_node, const Version &version)
Create a Target object.
Definition datamodel_xml_configurationfromxml.h:367
static datamodel::MappingConfiguration createConfiguration(const DomNodeType &dom_node, const Version &mapping_version=Version::getLatestVersion())
Creates a MappingConfiguration and read all sub node.
Definition datamodel_xml_configurationfromxml.h:440
static datamodel::Function createFunction(const DomNodeType &dom_node)
Create a Function.
Definition datamodel_xml_configurationfromxml.h:415
static datamodel::Trigger createPeriodTrigger(const DomNodeType &dom_node)
Create a Trigger object as Trigger(Period)
Definition datamodel_xml_configurationfromxml.h:274
static datamodel::ParameterValue createParameterValue(const DomNodeType &dom_node)
Create a ParameterValue object.
Definition datamodel_xml_configurationfromxml.h:202
static datamodel::Header createHeader(const DomNodeType &dom_node, const Version &version)
Create a Header object.
Definition datamodel_xml_configurationfromxml.h:133
static utility::Optional< T > getAttributeMandatory(const DomNodeType &dom_node, const std::string &attribute_name)
Get the mandatory attribute helper function.
Definition datamodel_xml_configurationfromxml.h:64
static constexpr auto mapping_reading_version
Error message definition string.
Definition datamodel_xml_configurationfromxml.h:53
static datamodel::Target createTarget(const DomNodeType &dom_node)
Create a Target object.
Definition datamodel_xml_configurationfromxml.h:405
MappingConfigurationFromXMLFactoryBase< DomNodeType > xml_base_type
base factory type for xml reading
Definition datamodel_xml_configurationfromxml.h:45
static utility::Optional< T > getDataSubNode(const DomNodeType &dom_node, const std::string &tag_name)
Get the mandatory sub node data helper function.
Definition datamodel_xml_configurationfromxml.h:121
static datamodel::Assignment createAssignment(const DomNodeType &dom_node)
Create a Assignment object.
Definition datamodel_xml_configurationfromxml.h:233
static utility::Optional< T > getDataSubNodeMandatory(const DomNodeType &dom_node, const std::string &tag_name, const std::string &additional_info={})
Get the mandatory sub node data helper function.
Definition datamodel_xml_configurationfromxml.h:100
static datamodel::Trigger createTrigger(const DomNodeType &dom_node, const Version &version)
Create a Trigger object.
Definition datamodel_xml_configurationfromxml.h:320
static void setDataOrSubNodesAsProperty(const DomNodeType &dom_node, PropertiesType &properties)
Set the Data Or Sub Nodes As Property.
Definition datamodel_xml_configurationfromxml.h:168
static datamodel::Source createSource(const DomNodeType &dom_node)
Create a Source object.
Definition datamodel_xml_configurationfromxml.h:180
static datamodel::Trigger createDataTrigger(const DomNodeType &dom_node)
Create a Trigger object as Trigger(Data)
Definition datamodel_xml_configurationfromxml.h:288
static utility::Optional< T > getAttribute(const DomNodeType &dom_node, const std::string &attribute_name)
Get the attribute.
Definition datamodel_xml_configurationfromxml.h:84
MappingConfigurationFromXMLFactory10< DomNodeType > xml_mapping10_type
mapping10 xml reading factory type for compatibility of mapping 1.0 definition
Definition datamodel_xml_configurationfromxml.h:49
FunctionCall type.
Definition datamodel_configuration_items.h:945
ConstValue type of the parameter.
Definition datamodel_configuration_items.h:694
InternalValue type of the parameter.
Definition datamodel_configuration_items.h:707
SourceValue type of the parameter.
Definition datamodel_configuration_items.h:680
Data type of the trigger.
Definition datamodel_configuration_items.h:414
Period type of the trigger.
Definition datamodel_configuration_items.h:437
Source type of the trigger.
Definition datamodel_configuration_items.h:403