1 #include "FileService.hpp"
2 #include "HttpConnection.hpp"
3 #include "CommandTO.hpp"
4 #include "CommandResultTO.hpp"
5 #include "JsonFormatter.hpp"
6 #include "Credentials.hpp"
8 #include <Poco/DateTimeFormatter.h>
9 #include <Poco/Timestamp.h>
10 #include <Poco/DateTimeFormat.h>
13 * WARNING: keep enum values synchronized to WEB API (FileService)
23 std::string gde::FileService::_servletName = "FileService";
26 gde::FileService::createFile(const std::string& name)
28 // build JSON string for CommandTO data
29 Poco::JSON::Object obj;
30 obj.set("name", Poco::Dynamic::Var(name));
31 std::string creationDate = Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::SORTABLE_FORMAT);
32 obj.set("creationDate", Poco::Dynamic::Var(creationDate));
33 std::string data = JsonFormatter::stringify(obj);
35 CommandTO cto(CREATE_FILE, data);
36 const Credentials& credentials = _session.getCredentials();
37 std::string uri = _session.getServiceURI(_servletName);
38 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
40 // build File object from CommandResultTO data (json format)
42 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
43 int id = JsonFormatter::extract<int>(object, "id");
44 std::string name = JsonFormatter::extract<std::string>(object, "name");
45 int length = JsonFormatter::extract<int>(object, "length");
46 std::string checksum = JsonFormatter::extract<std::string>(object, "checksum");
47 Poco::Timestamp creationDate = JsonFormatter::extract(object, "creationDate");
48 Poco::Timestamp updateDate = JsonFormatter::extract(object, "updateDate");
49 bool valid = JsonFormatter::extract<bool>(object, "valid");
50 bool deleted = JsonFormatter::extract<bool>(object, "deleted");
51 Poco::Timestamp deletionDate = JsonFormatter::extract(object, "deletionDate");
52 int attributeGroupId = JsonFormatter::extract<int>(object, "attributeGroupId");
53 std::string data = JsonFormatter::extract<std::string>(object, "data");
54 int dataProfileId = JsonFormatter::extract<int>(object, "dataProfileId");
56 return gde::File(id, name, length, checksum, creationDate, updateDate, valid, deleted, deletionDate, attributeGroupId, data, dataProfileId);
61 gde::FileService::deleteFile(const File& file)
63 CommandTO cto(DELETE_FILE);
64 cto.setParameter("fileId", file.getId());
66 const Credentials& credentials = _session.getCredentials();
67 std::string uri = _session.getServiceURI(_servletName);
68 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
69 return crto.getCode() == CommandResultTO::OK;
73 gde::FileService::updateFile(const File& file)
75 // build JSON string for CommandTO data
76 Poco::JSON::Object obj;
77 obj.set("id", Poco::Dynamic::Var(file.getId()));
78 obj.set("name", Poco::Dynamic::Var(file.getName()));
79 obj.set("length", Poco::Dynamic::Var(file.getLength()));
80 obj.set("checksum", Poco::Dynamic::Var(file.getChecksum()));
81 obj.set("creationDate", Poco::Dynamic::Var(file.getCreationDate()));
82 obj.set("valid", Poco::Dynamic::Var(file.getValid()));
83 obj.set("deleted", Poco::Dynamic::Var(file.getDeleted()));
84 obj.set("deletionDate", Poco::Dynamic::Var(file.getDeletionDate()));
85 obj.set("attributeGroupId", Poco::Dynamic::Var(file.getAttributeGroupId()));
86 obj.set("data", Poco::Dynamic::Var(file.getData()));
87 obj.set("dataProfileId", Poco::Dynamic::Var(file.getDataProfileId()));
88 std::string updateDate = Poco::DateTimeFormatter::format(Poco::Timestamp(), Poco::DateTimeFormat::SORTABLE_FORMAT);
89 obj.set("updateDate", Poco::Dynamic::Var(updateDate));
90 std::string data = JsonFormatter::stringify(obj);
92 CommandTO cto(UPDATE_FILE, data);
93 const Credentials& credentials = _session.getCredentials();
94 std::string uri = _session.getServiceURI(_servletName);
95 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
97 // build File object from CommandResultTO data (json format)
99 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
100 int id = JsonFormatter::extract<int>(object, "id");
101 std::string name = JsonFormatter::extract<std::string>(object, "name");
102 int length = JsonFormatter::extract<int>(object, "length");
103 std::string checksum = JsonFormatter::extract<std::string>(object, "checksum");
104 Poco::Timestamp creationDate = JsonFormatter::extract(object, "creationDate");
105 Poco::Timestamp updateDate = JsonFormatter::extract(object, "updateDate");
106 bool valid = JsonFormatter::extract<bool>(object, "valid");
107 bool deleted = JsonFormatter::extract<bool>(object, "deleted");
108 Poco::Timestamp deletionDate = JsonFormatter::extract(object, "deletionDate");
109 int attributeGroupId = JsonFormatter::extract<int>(object, "attributeGroupId");
110 std::string data = JsonFormatter::extract<std::string>(object, "data");
111 int dataProfileId = JsonFormatter::extract<int>(object, "dataProfileId");
113 return gde::File(id, name, length, checksum, creationDate, updateDate, valid, deleted, deletionDate, attributeGroupId, data, dataProfileId);
118 gde::FileService::readFile(int fileId)
120 CommandTO cto(READ_FILE);
121 cto.setParameter("fileId", fileId);
123 const Credentials& credentials = _session.getCredentials();
124 std::string uri = _session.getServiceURI(_servletName);
125 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
127 // build File object from CommandResultTO data (json format)
129 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
130 int id = JsonFormatter::extract<int>(object, "id");
131 std::string name = JsonFormatter::extract<std::string>(object, "name");
132 int length = JsonFormatter::extract<int>(object, "length");
133 std::string checksum = JsonFormatter::extract<std::string>(object, "checksum");
134 Poco::Timestamp creationDate = JsonFormatter::extract(object, "creationDate");
135 Poco::Timestamp updateDate = JsonFormatter::extract(object, "updateDate");
136 bool valid = JsonFormatter::extract<bool>(object, "valid");
137 bool deleted = JsonFormatter::extract<bool>(object, "deleted");
138 Poco::Timestamp deletionDate = JsonFormatter::extract(object, "deletionDate");
139 int attributeGroupId = JsonFormatter::extract<int>(object, "attributeGroupId");
140 std::string data = JsonFormatter::extract<std::string>(object, "data");
141 int dataProfileId = JsonFormatter::extract<int>(object, "dataProfileId");
143 return gde::File(id, name, length, checksum, creationDate, updateDate, valid, deleted, deletionDate, attributeGroupId, data, dataProfileId);
148 gde::FileService::findByName(const std::string& name)
150 CommandTO cto(FIND_BY_NAME);
151 cto.setParameter("fileName", name);
153 const Credentials& credentials = _session.getCredentials();
154 std::string uri = _session.getServiceURI(_servletName);
155 CommandResultTO crto = gde::HttpConnection(Poco::URI(uri), credentials).doPost(cto);
157 // build File object from CommandResultTO data (json format)
159 Poco::JSON::Object::Ptr object = JsonFormatter::parse(crto.getData());
160 int id = JsonFormatter::extract<int>(object, "id");
161 std::string name = JsonFormatter::extract<std::string>(object, "name");
162 int length = JsonFormatter::extract<int>(object, "length");
163 std::string checksum = JsonFormatter::extract<std::string>(object, "checksum");
164 Poco::Timestamp creationDate = JsonFormatter::extract(object, "creationDate");
165 Poco::Timestamp updateDate = JsonFormatter::extract(object, "updateDate");
166 bool valid = JsonFormatter::extract<bool>(object, "valid");
167 bool deleted = JsonFormatter::extract<bool>(object, "deleted");
168 Poco::Timestamp deletionDate = JsonFormatter::extract(object, "deletionDate");
169 int attributeGroupId = JsonFormatter::extract<int>(object, "attributeGroupId");
170 std::string data = JsonFormatter::extract<std::string>(object, "data");
171 int dataProfileId = JsonFormatter::extract<int>(object, "dataProfileId");
173 return gde::File(id, name, length, checksum, creationDate, updateDate, valid, deleted, deletionDate, attributeGroupId, data, dataProfileId);