]> SALOME platform Git repositories - modules/gde.git/blob - projects/GDE_API_CPP/api/src/CommandTO.cpp
Salome HOME
FileService
[modules/gde.git] / projects / GDE_API_CPP / api / src / CommandTO.cpp
1 #include "CommandTO.hpp"
2 #include "JsonFormatter.hpp"
3
4 gde::CommandTO::CommandTO(const CommandTO& cto)
5   : _method(cto._method), _data(cto._data), _parameters(cto._parameters)
6 {
7 }
8
9 gde::CommandTO
10 gde::CommandTO::fromJson(const std::string& json)
11 {
12   Poco::JSON::Object::Ptr object = JsonFormatter::parse(json);
13   int method = JsonFormatter::extract<int>(object, "method");
14   std::string data = JsonFormatter::extract<std::string>(object, "data");
15
16   ParametersMap parameters;
17   //Poco::JSON::Object::Ptr objParameters = JsonFormatter::extract<Poco::JSON::Object::Ptr>(object, "parameters");
18   Poco::Dynamic::Var varParameters = object->get("parameters");
19   Poco::JSON::Object::Ptr objParameters = varParameters.extract<Poco::JSON::Object::Ptr>();
20
21   for (Poco::JSON::Object::ConstIterator itr = objParameters->begin(); itr != objParameters->end(); ++itr) {
22     std::string paramName = itr->first;
23     std::string paramValue = itr->second;
24     parameters[paramName] = paramValue;
25   }
26
27   return CommandTO(method, data, parameters);
28 }
29
30 std::string
31 gde::CommandTO::toJson() const
32 {
33   Poco::JSON::Object obj;
34   obj.set("method", Poco::Dynamic::Var(_method));
35   obj.set("data", Poco::Dynamic::Var(_data));
36
37   Poco::JSON::Object::Ptr objParameters = new Poco::JSON::Object(true);
38   typedef std::map<std::string, std::string>::const_iterator MapIterator;
39   for (MapIterator itr = _parameters.begin(); itr != _parameters.end(); ++itr) {
40     objParameters->set(itr->first, itr->second);
41   }
42   obj.set("parameters", objParameters);
43
44   return JsonFormatter::stringify(obj);
45 }