1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/rds/model/DBEngineVersion.h>
7 #include <aws/core/utils/xml/XmlSerializer.h>
8 #include <aws/core/utils/StringUtils.h>
9 #include <aws/core/utils/memory/stl/AWSStringStream.h>
10 
11 #include <utility>
12 
13 using namespace Aws::Utils::Xml;
14 using namespace Aws::Utils;
15 
16 namespace Aws
17 {
18 namespace RDS
19 {
20 namespace Model
21 {
22 
DBEngineVersion()23 DBEngineVersion::DBEngineVersion() :
24     m_engineHasBeenSet(false),
25     m_engineVersionHasBeenSet(false),
26     m_dBParameterGroupFamilyHasBeenSet(false),
27     m_dBEngineDescriptionHasBeenSet(false),
28     m_dBEngineVersionDescriptionHasBeenSet(false),
29     m_defaultCharacterSetHasBeenSet(false),
30     m_supportedCharacterSetsHasBeenSet(false),
31     m_supportedNcharCharacterSetsHasBeenSet(false),
32     m_validUpgradeTargetHasBeenSet(false),
33     m_supportedTimezonesHasBeenSet(false),
34     m_exportableLogTypesHasBeenSet(false),
35     m_supportsLogExportsToCloudwatchLogs(false),
36     m_supportsLogExportsToCloudwatchLogsHasBeenSet(false),
37     m_supportsReadReplica(false),
38     m_supportsReadReplicaHasBeenSet(false),
39     m_supportedEngineModesHasBeenSet(false),
40     m_supportedFeatureNamesHasBeenSet(false),
41     m_statusHasBeenSet(false),
42     m_supportsParallelQuery(false),
43     m_supportsParallelQueryHasBeenSet(false),
44     m_supportsGlobalDatabases(false),
45     m_supportsGlobalDatabasesHasBeenSet(false)
46 {
47 }
48 
DBEngineVersion(const XmlNode & xmlNode)49 DBEngineVersion::DBEngineVersion(const XmlNode& xmlNode) :
50     m_engineHasBeenSet(false),
51     m_engineVersionHasBeenSet(false),
52     m_dBParameterGroupFamilyHasBeenSet(false),
53     m_dBEngineDescriptionHasBeenSet(false),
54     m_dBEngineVersionDescriptionHasBeenSet(false),
55     m_defaultCharacterSetHasBeenSet(false),
56     m_supportedCharacterSetsHasBeenSet(false),
57     m_supportedNcharCharacterSetsHasBeenSet(false),
58     m_validUpgradeTargetHasBeenSet(false),
59     m_supportedTimezonesHasBeenSet(false),
60     m_exportableLogTypesHasBeenSet(false),
61     m_supportsLogExportsToCloudwatchLogs(false),
62     m_supportsLogExportsToCloudwatchLogsHasBeenSet(false),
63     m_supportsReadReplica(false),
64     m_supportsReadReplicaHasBeenSet(false),
65     m_supportedEngineModesHasBeenSet(false),
66     m_supportedFeatureNamesHasBeenSet(false),
67     m_statusHasBeenSet(false),
68     m_supportsParallelQuery(false),
69     m_supportsParallelQueryHasBeenSet(false),
70     m_supportsGlobalDatabases(false),
71     m_supportsGlobalDatabasesHasBeenSet(false)
72 {
73   *this = xmlNode;
74 }
75 
operator =(const XmlNode & xmlNode)76 DBEngineVersion& DBEngineVersion::operator =(const XmlNode& xmlNode)
77 {
78   XmlNode resultNode = xmlNode;
79 
80   if(!resultNode.IsNull())
81   {
82     XmlNode engineNode = resultNode.FirstChild("Engine");
83     if(!engineNode.IsNull())
84     {
85       m_engine = Aws::Utils::Xml::DecodeEscapedXmlText(engineNode.GetText());
86       m_engineHasBeenSet = true;
87     }
88     XmlNode engineVersionNode = resultNode.FirstChild("EngineVersion");
89     if(!engineVersionNode.IsNull())
90     {
91       m_engineVersion = Aws::Utils::Xml::DecodeEscapedXmlText(engineVersionNode.GetText());
92       m_engineVersionHasBeenSet = true;
93     }
94     XmlNode dBParameterGroupFamilyNode = resultNode.FirstChild("DBParameterGroupFamily");
95     if(!dBParameterGroupFamilyNode.IsNull())
96     {
97       m_dBParameterGroupFamily = Aws::Utils::Xml::DecodeEscapedXmlText(dBParameterGroupFamilyNode.GetText());
98       m_dBParameterGroupFamilyHasBeenSet = true;
99     }
100     XmlNode dBEngineDescriptionNode = resultNode.FirstChild("DBEngineDescription");
101     if(!dBEngineDescriptionNode.IsNull())
102     {
103       m_dBEngineDescription = Aws::Utils::Xml::DecodeEscapedXmlText(dBEngineDescriptionNode.GetText());
104       m_dBEngineDescriptionHasBeenSet = true;
105     }
106     XmlNode dBEngineVersionDescriptionNode = resultNode.FirstChild("DBEngineVersionDescription");
107     if(!dBEngineVersionDescriptionNode.IsNull())
108     {
109       m_dBEngineVersionDescription = Aws::Utils::Xml::DecodeEscapedXmlText(dBEngineVersionDescriptionNode.GetText());
110       m_dBEngineVersionDescriptionHasBeenSet = true;
111     }
112     XmlNode defaultCharacterSetNode = resultNode.FirstChild("DefaultCharacterSet");
113     if(!defaultCharacterSetNode.IsNull())
114     {
115       m_defaultCharacterSet = defaultCharacterSetNode;
116       m_defaultCharacterSetHasBeenSet = true;
117     }
118     XmlNode supportedCharacterSetsNode = resultNode.FirstChild("SupportedCharacterSets");
119     if(!supportedCharacterSetsNode.IsNull())
120     {
121       XmlNode supportedCharacterSetsMember = supportedCharacterSetsNode.FirstChild("CharacterSet");
122       while(!supportedCharacterSetsMember.IsNull())
123       {
124         m_supportedCharacterSets.push_back(supportedCharacterSetsMember);
125         supportedCharacterSetsMember = supportedCharacterSetsMember.NextNode("CharacterSet");
126       }
127 
128       m_supportedCharacterSetsHasBeenSet = true;
129     }
130     XmlNode supportedNcharCharacterSetsNode = resultNode.FirstChild("SupportedNcharCharacterSets");
131     if(!supportedNcharCharacterSetsNode.IsNull())
132     {
133       XmlNode supportedNcharCharacterSetsMember = supportedNcharCharacterSetsNode.FirstChild("CharacterSet");
134       while(!supportedNcharCharacterSetsMember.IsNull())
135       {
136         m_supportedNcharCharacterSets.push_back(supportedNcharCharacterSetsMember);
137         supportedNcharCharacterSetsMember = supportedNcharCharacterSetsMember.NextNode("CharacterSet");
138       }
139 
140       m_supportedNcharCharacterSetsHasBeenSet = true;
141     }
142     XmlNode validUpgradeTargetNode = resultNode.FirstChild("ValidUpgradeTarget");
143     if(!validUpgradeTargetNode.IsNull())
144     {
145       XmlNode validUpgradeTargetMember = validUpgradeTargetNode.FirstChild("UpgradeTarget");
146       while(!validUpgradeTargetMember.IsNull())
147       {
148         m_validUpgradeTarget.push_back(validUpgradeTargetMember);
149         validUpgradeTargetMember = validUpgradeTargetMember.NextNode("UpgradeTarget");
150       }
151 
152       m_validUpgradeTargetHasBeenSet = true;
153     }
154     XmlNode supportedTimezonesNode = resultNode.FirstChild("SupportedTimezones");
155     if(!supportedTimezonesNode.IsNull())
156     {
157       XmlNode supportedTimezonesMember = supportedTimezonesNode.FirstChild("Timezone");
158       while(!supportedTimezonesMember.IsNull())
159       {
160         m_supportedTimezones.push_back(supportedTimezonesMember);
161         supportedTimezonesMember = supportedTimezonesMember.NextNode("Timezone");
162       }
163 
164       m_supportedTimezonesHasBeenSet = true;
165     }
166     XmlNode exportableLogTypesNode = resultNode.FirstChild("ExportableLogTypes");
167     if(!exportableLogTypesNode.IsNull())
168     {
169       XmlNode exportableLogTypesMember = exportableLogTypesNode.FirstChild("member");
170       while(!exportableLogTypesMember.IsNull())
171       {
172         m_exportableLogTypes.push_back(exportableLogTypesMember.GetText());
173         exportableLogTypesMember = exportableLogTypesMember.NextNode("member");
174       }
175 
176       m_exportableLogTypesHasBeenSet = true;
177     }
178     XmlNode supportsLogExportsToCloudwatchLogsNode = resultNode.FirstChild("SupportsLogExportsToCloudwatchLogs");
179     if(!supportsLogExportsToCloudwatchLogsNode.IsNull())
180     {
181       m_supportsLogExportsToCloudwatchLogs = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(supportsLogExportsToCloudwatchLogsNode.GetText()).c_str()).c_str());
182       m_supportsLogExportsToCloudwatchLogsHasBeenSet = true;
183     }
184     XmlNode supportsReadReplicaNode = resultNode.FirstChild("SupportsReadReplica");
185     if(!supportsReadReplicaNode.IsNull())
186     {
187       m_supportsReadReplica = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(supportsReadReplicaNode.GetText()).c_str()).c_str());
188       m_supportsReadReplicaHasBeenSet = true;
189     }
190     XmlNode supportedEngineModesNode = resultNode.FirstChild("SupportedEngineModes");
191     if(!supportedEngineModesNode.IsNull())
192     {
193       XmlNode supportedEngineModesMember = supportedEngineModesNode.FirstChild("member");
194       while(!supportedEngineModesMember.IsNull())
195       {
196         m_supportedEngineModes.push_back(supportedEngineModesMember.GetText());
197         supportedEngineModesMember = supportedEngineModesMember.NextNode("member");
198       }
199 
200       m_supportedEngineModesHasBeenSet = true;
201     }
202     XmlNode supportedFeatureNamesNode = resultNode.FirstChild("SupportedFeatureNames");
203     if(!supportedFeatureNamesNode.IsNull())
204     {
205       XmlNode supportedFeatureNamesMember = supportedFeatureNamesNode.FirstChild("member");
206       while(!supportedFeatureNamesMember.IsNull())
207       {
208         m_supportedFeatureNames.push_back(supportedFeatureNamesMember.GetText());
209         supportedFeatureNamesMember = supportedFeatureNamesMember.NextNode("member");
210       }
211 
212       m_supportedFeatureNamesHasBeenSet = true;
213     }
214     XmlNode statusNode = resultNode.FirstChild("Status");
215     if(!statusNode.IsNull())
216     {
217       m_status = Aws::Utils::Xml::DecodeEscapedXmlText(statusNode.GetText());
218       m_statusHasBeenSet = true;
219     }
220     XmlNode supportsParallelQueryNode = resultNode.FirstChild("SupportsParallelQuery");
221     if(!supportsParallelQueryNode.IsNull())
222     {
223       m_supportsParallelQuery = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(supportsParallelQueryNode.GetText()).c_str()).c_str());
224       m_supportsParallelQueryHasBeenSet = true;
225     }
226     XmlNode supportsGlobalDatabasesNode = resultNode.FirstChild("SupportsGlobalDatabases");
227     if(!supportsGlobalDatabasesNode.IsNull())
228     {
229       m_supportsGlobalDatabases = StringUtils::ConvertToBool(StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(supportsGlobalDatabasesNode.GetText()).c_str()).c_str());
230       m_supportsGlobalDatabasesHasBeenSet = true;
231     }
232   }
233 
234   return *this;
235 }
236 
OutputToStream(Aws::OStream & oStream,const char * location,unsigned index,const char * locationValue) const237 void DBEngineVersion::OutputToStream(Aws::OStream& oStream, const char* location, unsigned index, const char* locationValue) const
238 {
239   if(m_engineHasBeenSet)
240   {
241       oStream << location << index << locationValue << ".Engine=" << StringUtils::URLEncode(m_engine.c_str()) << "&";
242   }
243 
244   if(m_engineVersionHasBeenSet)
245   {
246       oStream << location << index << locationValue << ".EngineVersion=" << StringUtils::URLEncode(m_engineVersion.c_str()) << "&";
247   }
248 
249   if(m_dBParameterGroupFamilyHasBeenSet)
250   {
251       oStream << location << index << locationValue << ".DBParameterGroupFamily=" << StringUtils::URLEncode(m_dBParameterGroupFamily.c_str()) << "&";
252   }
253 
254   if(m_dBEngineDescriptionHasBeenSet)
255   {
256       oStream << location << index << locationValue << ".DBEngineDescription=" << StringUtils::URLEncode(m_dBEngineDescription.c_str()) << "&";
257   }
258 
259   if(m_dBEngineVersionDescriptionHasBeenSet)
260   {
261       oStream << location << index << locationValue << ".DBEngineVersionDescription=" << StringUtils::URLEncode(m_dBEngineVersionDescription.c_str()) << "&";
262   }
263 
264   if(m_defaultCharacterSetHasBeenSet)
265   {
266       Aws::StringStream defaultCharacterSetLocationAndMemberSs;
267       defaultCharacterSetLocationAndMemberSs << location << index << locationValue << ".DefaultCharacterSet";
268       m_defaultCharacterSet.OutputToStream(oStream, defaultCharacterSetLocationAndMemberSs.str().c_str());
269   }
270 
271   if(m_supportedCharacterSetsHasBeenSet)
272   {
273       unsigned supportedCharacterSetsIdx = 1;
274       for(auto& item : m_supportedCharacterSets)
275       {
276         Aws::StringStream supportedCharacterSetsSs;
277         supportedCharacterSetsSs << location << index << locationValue << ".CharacterSet." << supportedCharacterSetsIdx++;
278         item.OutputToStream(oStream, supportedCharacterSetsSs.str().c_str());
279       }
280   }
281 
282   if(m_supportedNcharCharacterSetsHasBeenSet)
283   {
284       unsigned supportedNcharCharacterSetsIdx = 1;
285       for(auto& item : m_supportedNcharCharacterSets)
286       {
287         Aws::StringStream supportedNcharCharacterSetsSs;
288         supportedNcharCharacterSetsSs << location << index << locationValue << ".CharacterSet." << supportedNcharCharacterSetsIdx++;
289         item.OutputToStream(oStream, supportedNcharCharacterSetsSs.str().c_str());
290       }
291   }
292 
293   if(m_validUpgradeTargetHasBeenSet)
294   {
295       unsigned validUpgradeTargetIdx = 1;
296       for(auto& item : m_validUpgradeTarget)
297       {
298         Aws::StringStream validUpgradeTargetSs;
299         validUpgradeTargetSs << location << index << locationValue << ".UpgradeTarget." << validUpgradeTargetIdx++;
300         item.OutputToStream(oStream, validUpgradeTargetSs.str().c_str());
301       }
302   }
303 
304   if(m_supportedTimezonesHasBeenSet)
305   {
306       unsigned supportedTimezonesIdx = 1;
307       for(auto& item : m_supportedTimezones)
308       {
309         Aws::StringStream supportedTimezonesSs;
310         supportedTimezonesSs << location << index << locationValue << ".Timezone." << supportedTimezonesIdx++;
311         item.OutputToStream(oStream, supportedTimezonesSs.str().c_str());
312       }
313   }
314 
315   if(m_exportableLogTypesHasBeenSet)
316   {
317       unsigned exportableLogTypesIdx = 1;
318       for(auto& item : m_exportableLogTypes)
319       {
320         oStream << location << index << locationValue << ".ExportableLogTypes.member." << exportableLogTypesIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
321       }
322   }
323 
324   if(m_supportsLogExportsToCloudwatchLogsHasBeenSet)
325   {
326       oStream << location << index << locationValue << ".SupportsLogExportsToCloudwatchLogs=" << std::boolalpha << m_supportsLogExportsToCloudwatchLogs << "&";
327   }
328 
329   if(m_supportsReadReplicaHasBeenSet)
330   {
331       oStream << location << index << locationValue << ".SupportsReadReplica=" << std::boolalpha << m_supportsReadReplica << "&";
332   }
333 
334   if(m_supportedEngineModesHasBeenSet)
335   {
336       unsigned supportedEngineModesIdx = 1;
337       for(auto& item : m_supportedEngineModes)
338       {
339         oStream << location << index << locationValue << ".SupportedEngineModes.member." << supportedEngineModesIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
340       }
341   }
342 
343   if(m_supportedFeatureNamesHasBeenSet)
344   {
345       unsigned supportedFeatureNamesIdx = 1;
346       for(auto& item : m_supportedFeatureNames)
347       {
348         oStream << location << index << locationValue << ".SupportedFeatureNames.member." << supportedFeatureNamesIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
349       }
350   }
351 
352   if(m_statusHasBeenSet)
353   {
354       oStream << location << index << locationValue << ".Status=" << StringUtils::URLEncode(m_status.c_str()) << "&";
355   }
356 
357   if(m_supportsParallelQueryHasBeenSet)
358   {
359       oStream << location << index << locationValue << ".SupportsParallelQuery=" << std::boolalpha << m_supportsParallelQuery << "&";
360   }
361 
362   if(m_supportsGlobalDatabasesHasBeenSet)
363   {
364       oStream << location << index << locationValue << ".SupportsGlobalDatabases=" << std::boolalpha << m_supportsGlobalDatabases << "&";
365   }
366 
367 }
368 
OutputToStream(Aws::OStream & oStream,const char * location) const369 void DBEngineVersion::OutputToStream(Aws::OStream& oStream, const char* location) const
370 {
371   if(m_engineHasBeenSet)
372   {
373       oStream << location << ".Engine=" << StringUtils::URLEncode(m_engine.c_str()) << "&";
374   }
375   if(m_engineVersionHasBeenSet)
376   {
377       oStream << location << ".EngineVersion=" << StringUtils::URLEncode(m_engineVersion.c_str()) << "&";
378   }
379   if(m_dBParameterGroupFamilyHasBeenSet)
380   {
381       oStream << location << ".DBParameterGroupFamily=" << StringUtils::URLEncode(m_dBParameterGroupFamily.c_str()) << "&";
382   }
383   if(m_dBEngineDescriptionHasBeenSet)
384   {
385       oStream << location << ".DBEngineDescription=" << StringUtils::URLEncode(m_dBEngineDescription.c_str()) << "&";
386   }
387   if(m_dBEngineVersionDescriptionHasBeenSet)
388   {
389       oStream << location << ".DBEngineVersionDescription=" << StringUtils::URLEncode(m_dBEngineVersionDescription.c_str()) << "&";
390   }
391   if(m_defaultCharacterSetHasBeenSet)
392   {
393       Aws::String defaultCharacterSetLocationAndMember(location);
394       defaultCharacterSetLocationAndMember += ".DefaultCharacterSet";
395       m_defaultCharacterSet.OutputToStream(oStream, defaultCharacterSetLocationAndMember.c_str());
396   }
397   if(m_supportedCharacterSetsHasBeenSet)
398   {
399       unsigned supportedCharacterSetsIdx = 1;
400       for(auto& item : m_supportedCharacterSets)
401       {
402         Aws::StringStream supportedCharacterSetsSs;
403         supportedCharacterSetsSs << location <<  ".CharacterSet." << supportedCharacterSetsIdx++;
404         item.OutputToStream(oStream, supportedCharacterSetsSs.str().c_str());
405       }
406   }
407   if(m_supportedNcharCharacterSetsHasBeenSet)
408   {
409       unsigned supportedNcharCharacterSetsIdx = 1;
410       for(auto& item : m_supportedNcharCharacterSets)
411       {
412         Aws::StringStream supportedNcharCharacterSetsSs;
413         supportedNcharCharacterSetsSs << location <<  ".CharacterSet." << supportedNcharCharacterSetsIdx++;
414         item.OutputToStream(oStream, supportedNcharCharacterSetsSs.str().c_str());
415       }
416   }
417   if(m_validUpgradeTargetHasBeenSet)
418   {
419       unsigned validUpgradeTargetIdx = 1;
420       for(auto& item : m_validUpgradeTarget)
421       {
422         Aws::StringStream validUpgradeTargetSs;
423         validUpgradeTargetSs << location <<  ".UpgradeTarget." << validUpgradeTargetIdx++;
424         item.OutputToStream(oStream, validUpgradeTargetSs.str().c_str());
425       }
426   }
427   if(m_supportedTimezonesHasBeenSet)
428   {
429       unsigned supportedTimezonesIdx = 1;
430       for(auto& item : m_supportedTimezones)
431       {
432         Aws::StringStream supportedTimezonesSs;
433         supportedTimezonesSs << location <<  ".Timezone." << supportedTimezonesIdx++;
434         item.OutputToStream(oStream, supportedTimezonesSs.str().c_str());
435       }
436   }
437   if(m_exportableLogTypesHasBeenSet)
438   {
439       unsigned exportableLogTypesIdx = 1;
440       for(auto& item : m_exportableLogTypes)
441       {
442         oStream << location << ".ExportableLogTypes.member." << exportableLogTypesIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
443       }
444   }
445   if(m_supportsLogExportsToCloudwatchLogsHasBeenSet)
446   {
447       oStream << location << ".SupportsLogExportsToCloudwatchLogs=" << std::boolalpha << m_supportsLogExportsToCloudwatchLogs << "&";
448   }
449   if(m_supportsReadReplicaHasBeenSet)
450   {
451       oStream << location << ".SupportsReadReplica=" << std::boolalpha << m_supportsReadReplica << "&";
452   }
453   if(m_supportedEngineModesHasBeenSet)
454   {
455       unsigned supportedEngineModesIdx = 1;
456       for(auto& item : m_supportedEngineModes)
457       {
458         oStream << location << ".SupportedEngineModes.member." << supportedEngineModesIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
459       }
460   }
461   if(m_supportedFeatureNamesHasBeenSet)
462   {
463       unsigned supportedFeatureNamesIdx = 1;
464       for(auto& item : m_supportedFeatureNames)
465       {
466         oStream << location << ".SupportedFeatureNames.member." << supportedFeatureNamesIdx++ << "=" << StringUtils::URLEncode(item.c_str()) << "&";
467       }
468   }
469   if(m_statusHasBeenSet)
470   {
471       oStream << location << ".Status=" << StringUtils::URLEncode(m_status.c_str()) << "&";
472   }
473   if(m_supportsParallelQueryHasBeenSet)
474   {
475       oStream << location << ".SupportsParallelQuery=" << std::boolalpha << m_supportsParallelQuery << "&";
476   }
477   if(m_supportsGlobalDatabasesHasBeenSet)
478   {
479       oStream << location << ".SupportsGlobalDatabases=" << std::boolalpha << m_supportsGlobalDatabases << "&";
480   }
481 }
482 
483 } // namespace Model
484 } // namespace RDS
485 } // namespace Aws
486