From 3b7f126e45fa2de82b095e6162fbb17b6622ba6b Mon Sep 17 00:00:00 2001 From: andrea formica <andrea.formica@cern.ch> Date: Thu, 15 Aug 2024 18:31:27 +0200 Subject: [PATCH] Clean up and correct streamer info following M.Mineev suggestion --- src/CrestModel.cxx | 1270 +++++++++++++++++++++----------------------- 1 file changed, 605 insertions(+), 665 deletions(-) diff --git a/src/CrestModel.cxx b/src/CrestModel.cxx index 05e30d8..7ff7030 100644 --- a/src/CrestModel.cxx +++ b/src/CrestModel.cxx @@ -3,694 +3,634 @@ #include <string> #include <iomanip> - json RespPage::to_json() const - { - return { - {"size", size}, - {"totalElements", totalElements}, - {"totalPages", totalPages}, - {"number", number}}; - } - RespPage RespPage::from_json(const json &j) - { - RespPage respPage; - respPage.size = j.value("size", 0); - respPage.totalElements = j.value("totalElements", 0); - respPage.totalPages = j.value("totalPages", 0); - respPage.number = j.value("number", 0); - return respPage; - } - json GenericMap::to_json() const - { - json additionalPropertiesJson; - for (const auto &entry : additionalProperties) +json RespPage::to_json() const +{ + return { + {"size", size}, + {"totalElements", totalElements}, + {"totalPages", totalPages}, + {"number", number}}; +} +RespPage RespPage::from_json(const json &j) +{ + RespPage respPage; + respPage.size = j.value("size", 0); + respPage.totalElements = j.value("totalElements", 0); + respPage.totalPages = j.value("totalPages", 0); + respPage.number = j.value("number", 0); + return respPage; +} +json GenericMap::to_json() const +{ + json additionalPropertiesJson; + for (const auto &entry : additionalProperties) + { + additionalPropertiesJson[entry.first] = entry.second; + } + + return { + additionalPropertiesJson}; +} + +GenericMap GenericMap::from_json(const json &j) +{ + GenericMap genericMap; + + json additionalPropertiesJson = j.value("additionalProperties", json::object()); + for (auto it = additionalPropertiesJson.begin(); it != additionalPropertiesJson.end(); ++it) + { + genericMap.additionalProperties[it.key()] = it.value(); + } + + return genericMap; +} + +json CrestBaseResponse::to_json() const +{ + json result = {}; + if (datatype.has_value()) + result["datatype"] = datatype.value(); + result["format"] = getFormat(); + result["size"] = getSize(); + + // Check if the 'page' optional contains a value + if (page.has_value()) + { + // Check if the value of 'page' is not null + if (!page.value().to_json().is_null()) { - additionalPropertiesJson[entry.first] = entry.second; + result["page"] = page.value().to_json(); } - - return { - additionalPropertiesJson - }; } - GenericMap GenericMap::from_json(const json &j) + // Check if the 'filter' optional contains a value + if (filter.has_value()) { - GenericMap genericMap; - - json additionalPropertiesJson = j.value("additionalProperties", json::object()); - for (auto it = additionalPropertiesJson.begin(); it != additionalPropertiesJson.end(); ++it) + // Check if the value of 'filter' is not null + if (!filter.value().to_json().is_null()) { - genericMap.additionalProperties[it.key()] = it.value(); - } - - return genericMap; - } - - json CrestBaseResponse::to_json() const - { - json result={}; - if(datatype.has_value()) - result["datatype"] = datatype.value(); - result["format"]=getFormat(); - result["size"]=getSize(); -// json result = { -// {"size", m_size}, -// {"datatype", datatype}, -// {"format", format} -// }; - - // Check if the 'page' optional contains a value - if (page.has_value()) { - // Check if the value of 'page' is not null - if (!page.value().to_json().is_null()) { - result["page"] = page.value().to_json(); - } + result["filter"] = filter.value().to_json(); } - - // Check if the 'filter' optional contains a value - if (filter.has_value()) { - // Check if the value of 'filter' is not null - if (!filter.value().to_json().is_null()) { - result["filter"] = filter.value().to_json(); - } - } - - return result; } - void CrestBaseResponse::load_from_json(const json &j) - { - if (j.contains("datatype")) - datatype = j.value("datatype", ""); - //crestResponse.setSize(j.value("size", 0)); - //crestResponse.setFormat(j.value("format", "")); - - // Check for the presence of "page" key and create an optional - if (j.contains("page")){ - if (!j["page"].is_null()){ - page = std::make_optional((RespPage::from_json(j["page"]))); - } - } - //else { - // crestResponse.page = std::nullopt; - //} - - // Check for the presence of "filter" key and create an optional - filter = j.contains("filter") ? std::make_optional(GenericMap::from_json(j["filter"])) : std::nullopt; + return result; +} - } - json GlobalTagSetDto::to_json() const +void CrestBaseResponse::load_from_json(const json &j) +{ + if (j.contains("datatype")) + datatype = j.value("datatype", ""); + // Check for the presence of "page" key and create an optional + if (j.contains("page")) { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) - { - jsonResources.push_back(((GlobalTagDto)resource).to_json()); - } - baseJson["resources"] = jsonResources; - return baseJson; - } - - GlobalTagSetDto GlobalTagSetDto::from_json(const json &j) - { - GlobalTagSetDto globalTagSet; - globalTagSet.load_from_json(j); - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) - { - globalTagSet.resources.push_back(GlobalTagDto::from_json(*it)); - } - //globalTagSet.setSize(j.value("size", 0)); - //globalTagSet.datatype = j.value("datatype", ""); - //globalTagSet.format = j.value("format", "GlobalTagSetDto"); - -/* CrestBaseResponse cbr = CrestBaseResponse::from_json(j); - if (cbr.page.has_value()) { - globalTagSet.page = cbr.page.value(); - } - if (cbr.filter.has_value()) { - globalTagSet.filter = cbr.filter.value(); - }*/ - return globalTagSet; - } - - GlobalTagDto::GlobalTagDto(): name(""), validity(0), description(""), release(""), - snapshotTime(""), scenario(""), workflow(""), type("T"), - snapshotTimeMilli(0), insertionTimeMilli(0){ - } - - GlobalTagDto::GlobalTagDto(const char* l_name, const char* l_description, const char* l_release, const char* l_workflow): - name(l_name), validity(0), description(l_description), release(l_release), - snapshotTime(""), scenario(""), workflow(l_workflow), type("T"), - snapshotTimeMilli(0), insertionTimeMilli(0){ - } - - json GlobalTagDto::to_json() const { - json js={}; - js["name"]=name; - js["validity"]=validity; - js["description"]=description; - js["release"]=release; - if(insertionTime.has_value()) - js["insertionTime"]=insertionTime.value(); - js["snapshotTime"]=snapshotTime; - js["scenario"]=scenario; - js["workflow"]=workflow; - js["type"]=type; - js["snapshotTimeMilli"]=snapshotTimeMilli; - js["insertionTimeMilli"]=insertionTimeMilli; - return js; - } - GlobalTagDto GlobalTagDto::from_json(const json &j) - { - GlobalTagDto globalTag; - globalTag.name = j.value("name", ""); - globalTag.validity = j.value<long_t>("validity", 0); - globalTag.description = j.value("description", ""); - globalTag.release = j.value("release", ""); - if(j.contains(std::string{"insertionTime" })) - globalTag.insertionTime = j.value("insertionTime", ""); - globalTag.snapshotTime = j.value("snapshotTime", ""); - globalTag.scenario = j.value("scenario", ""); - globalTag.workflow = j.value("workflow", ""); - globalTag.type = j.value("type", ""); - globalTag.snapshotTimeMilli = j.value("snapshotTimeMilli", 0); - globalTag.insertionTimeMilli = j.value("insertionTimeMilli", 0); - return globalTag; - } - json TagDto::to_json() const - { - json js={}; - js["name"]=name; - js["timeType"]=timeType; - js["payloadSpec"]=objectType; - js["synchronization"]=synchronization; - if(insertionTime.has_value()) - js["insertionTime"]=insertionTime.value(); - js["description"]=description; - js["lastValidatedTime"]=lastValidatedTime; - js["endOfValidity"]=endOfValidity; - if(modificationTime.has_value()) - js["modificationTime"]=modificationTime.value(); - return js; - } - TagDto TagDto::from_json(const json &j) - { - TagDto tag; - auto it = j.find("name"); - if (it != j.end()) + if (!j["page"].is_null()) { - tag.name = j["name"]; - } - else + page = std::make_optional((RespPage::from_json(j["page"]))); + } + } + + // Check for the presence of "filter" key and create an optional + filter = j.contains("filter") ? std::make_optional(GenericMap::from_json(j["filter"])) : std::nullopt; +} +json GlobalTagSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((GlobalTagDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} + +GlobalTagSetDto GlobalTagSetDto::from_json(const json &j) +{ + GlobalTagSetDto globalTagSet; + globalTagSet.load_from_json(j); + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + globalTagSet.resources.push_back(GlobalTagDto::from_json(*it)); + } + + return globalTagSet; +} + +GlobalTagDto::GlobalTagDto() : name(""), validity(0), description(""), release(""), + snapshotTime(""), scenario(""), workflow(""), type("T"), + snapshotTimeMilli(0), insertionTimeMilli(0) +{ +} + +GlobalTagDto::GlobalTagDto(const char *l_name, const char *l_description, const char *l_release, const char *l_workflow) : name(l_name), validity(0), description(l_description), release(l_release), + snapshotTime(""), scenario(""), workflow(l_workflow), type("T"), + snapshotTimeMilli(0), insertionTimeMilli(0) +{ +} + +json GlobalTagDto::to_json() const +{ + json js = {}; + js["name"] = name; + js["validity"] = validity; + js["description"] = description; + js["release"] = release; + if (insertionTime.has_value()) + js["insertionTime"] = insertionTime.value(); + js["snapshotTime"] = snapshotTime; + js["scenario"] = scenario; + js["workflow"] = workflow; + js["type"] = type; + js["snapshotTimeMilli"] = snapshotTimeMilli; + js["insertionTimeMilli"] = insertionTimeMilli; + return js; +} +GlobalTagDto GlobalTagDto::from_json(const json &j) +{ + GlobalTagDto globalTag; + globalTag.name = j.value("name", ""); + globalTag.validity = j.value<long_t>("validity", 0); + globalTag.description = j.value("description", ""); + globalTag.release = j.value("release", ""); + if (j.contains(std::string{"insertionTime"})) + globalTag.insertionTime = j.value("insertionTime", ""); + globalTag.snapshotTime = j.value("snapshotTime", ""); + globalTag.scenario = j.value("scenario", ""); + globalTag.workflow = j.value("workflow", ""); + globalTag.type = j.value("type", ""); + globalTag.snapshotTimeMilli = j.value("snapshotTimeMilli", 0); + globalTag.insertionTimeMilli = j.value("insertionTimeMilli", 0); + return globalTag; +} +json TagDto::to_json() const +{ + json js = {}; + js["name"] = name; + js["timeType"] = timeType; + js["payloadSpec"] = objectType; + js["synchronization"] = synchronization; + if (insertionTime.has_value()) + js["insertionTime"] = insertionTime.value(); + js["description"] = description; + js["lastValidatedTime"] = lastValidatedTime; + js["endOfValidity"] = endOfValidity; + if (modificationTime.has_value()) + js["modificationTime"] = modificationTime.value(); + return js; +} +TagDto TagDto::from_json(const json &j) +{ + TagDto tag; + auto it = j.find("name"); + if (it != j.end()) + { + tag.name = j["name"]; + } + else + { + throw Crest::CrestException("ERROR in TagDto.from_json: JSON contains no tag name."); + } + + tag.timeType = j.value("timeType", ""); + tag.objectType = j.value("payloadSpec", ""); + tag.synchronization = j.value("synchronization", "none"); + tag.description = j.value("description", ""); + tag.lastValidatedTime = j.value<long_t>("lastValidatedTime", 0); + tag.endOfValidity = j.value<long_t>("endOfValidity", 0); + if (j.contains(std::string{"insertionTime"})) + tag.insertionTime = j.value("insertionTime", ""); + tag.modificationTime = j.value("modificationTime", ""); + return tag; +} +json TagSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((TagDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} +TagSetDto TagSetDto::from_json(const json &j) +{ + TagSetDto tagSet; + tagSet.load_from_json(j); + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + tagSet.resources.push_back(TagDto::from_json(*it)); + } + + return tagSet; +} +json GlobalTagMapDto::to_json() const +{ + return { + {"tagName", tagName}, + {"globalTagName", globalTagName}, + {"record", record}, + {"label", label}}; +} +GlobalTagMapDto GlobalTagMapDto::from_json(const json &j) +{ + GlobalTagMapDto tagmap; + tagmap.tagName = j.value("tagName", ""); + tagmap.globalTagName = j.value("globalTagName", ""); + tagmap.record = j.value("record", "none"); + tagmap.label = j.value("label", "none"); + return tagmap; +} + +json GlobalTagMapSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((GlobalTagMapDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} +GlobalTagMapSetDto GlobalTagMapSetDto::from_json(const json &j) +{ + GlobalTagMapSetDto tagMapSet; + tagMapSet.load_from_json(j); + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + tagMapSet.resources.push_back(GlobalTagMapDto::from_json(*it)); + } + + return tagMapSet; +} + +GlobalTagMapSetDto GlobalTagMapSetDto::from_fs_json(const json &j) +{ + GlobalTagMapSetDto tagMapSet; + tagMapSet.load_from_json(j); + // int n = j.size(); + + for (auto it = j.begin(); it != j.end(); ++it) + { + tagMapSet.resources.push_back(GlobalTagMapDto::from_json(*it)); + } + + tagMapSet.datatype = "maps"; + + return tagMapSet; +} + +void ChannelSetDto::add(std::string id, std::string name) +{ + m_channels.push_back(std::pair<std::string, std::string>(id, name)); +} +ChannelSetDto ChannelSetDto::from_json(const json &j) +{ + ChannelSetDto chDto; + for (unsigned int i = 0; i < j.size(); i++) + { + for (auto &el : j[i].items()) { - throw Crest::CrestException("ERROR in TagDto.from_json: JSON contains no tag name."); - } - - tag.timeType = j.value("timeType", ""); - tag.objectType = j.value("payloadSpec", ""); - tag.synchronization = j.value("synchronization", "none"); - tag.description = j.value("description", ""); - tag.lastValidatedTime = j.value<long_t>("lastValidatedTime", 0); - tag.endOfValidity = j.value<long_t>("endOfValidity", 0); - if(j.contains(std::string{"insertionTime" })) - tag.insertionTime = j.value("insertionTime", ""); - tag.modificationTime = j.value("modificationTime", ""); - return tag; - } - json TagSetDto::to_json() const - { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) + chDto.add(el.key(), el.value()); + break; + } + } + return chDto; +} +json ChannelSetDto::to_json() const +{ + json chJson = json::array(); + for (auto &ch : m_channels) + { + json obj = {}; + obj[ch.first] = ch.second; + chJson.push_back(obj); + } + return chJson; +} +void PayloadSpecDto::add(std::string name, std::string type) +{ + m_row.push_back(std::pair<std::string, std::string>(name, type)); +} +PayloadSpecDto PayloadSpecDto::from_json(const json &j) +{ + PayloadSpecDto chDto; + for (unsigned int i = 0; i < j.size(); i++) + { + for (auto &el : j[i].items()) { - jsonResources.push_back(((TagDto)resource).to_json()); - } - baseJson["resources"] = jsonResources; - return baseJson; - } - TagSetDto TagSetDto::from_json(const json &j) - { - TagSetDto tagSet; - tagSet.load_from_json(j); - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + chDto.add(el.key(), el.value()); + break; + } + } + return chDto; +} +json PayloadSpecDto::to_json() const +{ + json chJson = json::array(); + for (auto &ch : m_row) + { + json obj = {}; + obj[ch.first] = ch.second; + chJson.push_back(obj); + } + return chJson; +} +json TagInfoDto::to_json() const +{ + json tagInfo = {}; + tagInfo["node_description"] = m_node_description; + tagInfo["payload_spec"] = m_payload_spec.to_json(); + tagInfo["channel_list"] = m_channel_list.to_json(); + return tagInfo; +} +TagInfoDto TagInfoDto::from_json(const json &j) +{ + std::string node_description = j.value("node_description", ""); + json jsonSpec = j.value("payload_spec", json::array()); + if (jsonSpec.is_string()) + jsonSpec = json::parse(to_string(jsonSpec)); + PayloadSpecDto payload_spec = PayloadSpecDto::from_json(jsonSpec); + json jsonCh = j.value("channel_list", json::array()); + if (jsonCh.is_string()) + jsonCh = json::parse(to_string(jsonCh)); + ChannelSetDto channel_list = ChannelSetDto::from_json(jsonCh); + TagInfoDto dto(node_description, payload_spec, channel_list); + return dto; +} + +json TagMetaDto::to_json() const +{ + json tagMeta = {}; + tagMeta["tagName"] = tagName; + tagMeta["description"] = description; + tagMeta["chansize"] = tagInfo.getChannelSize(); + tagMeta["colsize"] = tagInfo.getColumnSize(); + tagMeta["tagInfo"] = tagInfo.to_json().dump(); + if (insertionTime.has_value()) + tagMeta["insertionTime"] = insertionTime.value(); + return tagMeta; +} +TagMetaDto TagMetaDto::from_json(const json &j) +{ + TagMetaDto tag; + tag.tagName = j.value("tagName", ""); + json infoJs = j["tagInfo"]; + if (infoJs.is_string()) + { + std::istringstream ss(to_string(infoJs)); + std::string st; + ss >> std::quoted(st); + infoJs = json::parse(st); + } + tag.tagInfo = TagInfoDto::from_json(infoJs); + + tag.description = j.value("description", ""); + if (j.contains(std::string{"insertionTime"})) + tag.insertionTime = j.value("insertionTime", ""); + return tag; +} + +json TagMetaSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((TagMetaDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} +TagMetaSetDto TagMetaSetDto::from_json(const json &j) +{ + TagMetaSetDto tagSet; + tagSet.load_from_json(j); + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + tagSet.resources.push_back(TagMetaDto::from_json(*it)); + } + + return tagSet; +} + +json IovDto::to_json() const +{ + json iov = {}; + iov["tagName"] = tagName; + iov["since"] = since; + if (insertionTime.has_value()) + iov["insertionTime"] = insertionTime.value(); + iov["payloadHash"] = payloadHash; + return iov; +} + +IovDto IovDto::from_json(const json &j) +{ + IovDto iov; + iov.tagName = j.value("tagName", ""); + iov.since = j.value<long_t>("since", 0); + + if (j.contains("insertionTime")) + { + if (!j["insertionTime"].is_null()) { - tagSet.resources.push_back(TagDto::from_json(*it)); + iov.insertionTime = j["insertionTime"]; } - - //tagSet.setSize(j.value("size", 0)); - //tagSet.datatype = j.value("datatype", ""); - //tagSet.format = j.value("format", "TagSetDto"); -/* - CrestBaseResponse cbr = CrestBaseResponse::from_json(j); - if (cbr.page.has_value()) { - tagSet.page = cbr.page.value(); - } - if (cbr.filter.has_value()) { - tagSet.filter = cbr.filter.value(); - }*/ - return tagSet; - } - json GlobalTagMapDto::to_json() const - { - return { - {"tagName", tagName}, - {"globalTagName", globalTagName}, - {"record", record}, - {"label", label}}; - } - GlobalTagMapDto GlobalTagMapDto::from_json(const json &j) - { - GlobalTagMapDto tagmap; - tagmap.tagName = j.value("tagName", ""); - tagmap.globalTagName = j.value("globalTagName", ""); - tagmap.record = j.value("record", "none"); - tagmap.label = j.value("label", "none"); - return tagmap; - } - - json GlobalTagMapSetDto::to_json() const - { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) - { - jsonResources.push_back(((GlobalTagMapDto)resource).to_json()); - } - baseJson["resources"] = jsonResources; - return baseJson; - } - GlobalTagMapSetDto GlobalTagMapSetDto::from_json(const json &j) - { - GlobalTagMapSetDto tagMapSet; - tagMapSet.load_from_json(j); - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) - { - tagMapSet.resources.push_back(GlobalTagMapDto::from_json(*it)); - } -/* - tagMapSet.setSize(j.value("size", 0)); - tagMapSet.datatype = j.value("datatype", ""); - tagMapSet.format = j.value("format", "GlobalTagMapSetDto"); - - CrestBaseResponse cbr = CrestBaseResponse::from_json(j); - if (cbr.page.has_value()) { - tagMapSet.page = cbr.page.value(); - } - if (cbr.filter.has_value()) { - tagMapSet.filter = cbr.filter.value(); - }*/ - return tagMapSet; - } - - GlobalTagMapSetDto GlobalTagMapSetDto::from_fs_json(const json &j) - { - GlobalTagMapSetDto tagMapSet; - tagMapSet.load_from_json(j); - //int n = j.size(); - - for (auto it = j.begin(); it != j.end(); ++it) - { - tagMapSet.resources.push_back(GlobalTagMapDto::from_json(*it)); - } - - //tagMapSet.setSize(n); - tagMapSet.datatype = "maps"; - //tagMapSet.format = "GlobalTagMapSetDto"; - - return tagMapSet; - } - - void ChannelSetDto::add(std::string id,std::string name){ - m_channels.push_back(std::pair<std::string,std::string>(id,name)); - } - ChannelSetDto ChannelSetDto::from_json(const json &j) - { - ChannelSetDto chDto; - for(unsigned int i=0;i<j.size();i++) - { - for (auto& el : j[i].items()) - { - chDto.add(el.key(),el.value()); - break; - } - } - return chDto; - } - json ChannelSetDto::to_json() const{ - json chJson=json::array(); - for (auto &ch : m_channels) - { - json obj={}; - obj[ch.first]=ch.second; - chJson.push_back(obj); - } - return chJson; - } - void PayloadSpecDto::add(std::string name,std::string type){ - m_row.push_back(std::pair<std::string,std::string>(name,type)); - } - PayloadSpecDto PayloadSpecDto::from_json(const json &j) - { - PayloadSpecDto chDto; - for(unsigned int i=0;i<j.size();i++) - { - for (auto& el : j[i].items()) - { - chDto.add(el.key(),el.value()); - break; - } - } - return chDto; - } - json PayloadSpecDto::to_json() const{ - json chJson=json::array(); - for (auto &ch : m_row) - { - json obj={}; - obj[ch.first]=ch.second; - chJson.push_back(obj); - } - return chJson; - } - json TagInfoDto::to_json() const{ - json tagInfo={}; - tagInfo["node_description"]=m_node_description; - tagInfo["payload_spec"]=m_payload_spec.to_json(); - tagInfo["channel_list"]=m_channel_list.to_json(); - return tagInfo; - } - TagInfoDto TagInfoDto::from_json(const json &j){ - std::string node_description=j.value("node_description", ""); - json jsonSpec = j.value("payload_spec", json::array()); - if(jsonSpec.is_string()) - jsonSpec=json::parse(to_string(jsonSpec)); - PayloadSpecDto payload_spec=PayloadSpecDto::from_json(jsonSpec); - json jsonCh = j.value("channel_list", json::array()); - if(jsonCh.is_string()) - jsonCh=json::parse(to_string(jsonCh)); - ChannelSetDto channel_list=ChannelSetDto::from_json(jsonCh); - TagInfoDto dto(node_description,payload_spec,channel_list); - return dto; - } - - - json TagMetaDto::to_json() const - { - json tagMeta={}; - tagMeta["tagName"]=tagName; - tagMeta["description"]=description; - tagMeta["chansize"]=tagInfo.getChannelSize(); - tagMeta["colsize"]=tagInfo.getColumnSize(); - tagMeta["tagInfo"]=tagInfo.to_json().dump(); - if(insertionTime.has_value()) - tagMeta["insertionTime"]=insertionTime.value(); - return tagMeta; - } - TagMetaDto TagMetaDto::from_json(const json &j) - { - TagMetaDto tag; - tag.tagName = j.value("tagName", ""); - json infoJs=j["tagInfo"]; - if(infoJs.is_string()){ - std::istringstream ss( to_string(infoJs) ); - std::string st; - ss >> std::quoted(st); - infoJs=json::parse(st); - } - tag.tagInfo = TagInfoDto::from_json(infoJs); - - tag.description = j.value("description", ""); - if(j.contains(std::string{"insertionTime" })) - tag.insertionTime = j.value("insertionTime", ""); - return tag; - } - - json TagMetaSetDto::to_json() const - { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) - { - jsonResources.push_back(((TagMetaDto)resource).to_json()); - } - baseJson["resources"] = jsonResources; - return baseJson; - } - TagMetaSetDto TagMetaSetDto::from_json(const json &j) - { - TagMetaSetDto tagSet; - tagSet.load_from_json(j); - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) - { - tagSet.resources.push_back(TagMetaDto::from_json(*it)); - } -/* - tagSet.setSize(j.value("size", 0)); - tagSet.datatype = j.value("datatype", ""); - tagSet.format = j.value("format", ""); - - CrestBaseResponse cbr = CrestBaseResponse::from_json(j); - if (cbr.page.has_value()) { - tagSet.page = cbr.page.value(); - } - if (cbr.filter.has_value()) { - tagSet.filter = cbr.filter.value(); - }*/ - return tagSet; - } - - json IovDto::to_json() const - { - json iov={}; - iov["tagName"]=tagName; - iov["since"]=since; - if(insertionTime.has_value()) - iov["insertionTime"]=insertionTime.value(); - iov["payloadHash"]=payloadHash; - return iov; - } - - IovDto IovDto::from_json(const json &j) - { - IovDto iov; - iov.tagName = j.value("tagName", ""); - iov.since = j.value<long_t>("since", 0); - - if (j.contains("insertionTime")){ - if (!j["insertionTime"].is_null()){ - iov.insertionTime = j["insertionTime"]; - } - else { - iov.insertionTime = ""; - } - } - else { - iov.insertionTime = ""; - } - - if (j.contains("payloadHash")){ - if (!j["payloadHash"].is_null()){ - iov.payloadHash = j["payloadHash"]; - } - else { - iov.payloadHash = ""; - } - } - else { - iov.payloadHash = ""; - } - - return iov; - } - - json IovSetDto::to_json() const - { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) - { - jsonResources.push_back(((IovDto)resource).to_json()); - } - baseJson["resources"] = jsonResources; - return baseJson; - } - - IovSetDto IovSetDto::from_json(const json &j) - { - IovSetDto iovSet; - iovSet.load_from_json(j); - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) - { - iovSet.resources.push_back(IovDto::from_json(*it)); - } -/* - iovSet.setSize(j.value("size", iovSet.resources.size())); - iovSet.datatype = j.value("datatype", ""); - iovSet.format = j.value("format", ""); - CrestBaseResponse cbr = CrestBaseResponse::from_json(j); - if (cbr.page.has_value()) { - iovSet.page = cbr.page.value(); - } - if (cbr.filter.has_value()) { - iovSet.filter = cbr.filter.value(); - }*/ - return iovSet; - } - - IovSetDto IovSetDto::from_fs_json(const json &j) - { - IovSetDto iovSet; - iovSet.load_from_json(j); - //int n = j.size(); - - for (auto it = j.begin(); it != j.end(); ++it) - { - iovSet.resources.push_back(IovDto::from_json(*it)); - } - -// iovSet.setSize(n); - iovSet.datatype = "iovs"; -// iovSet.format = "IovSetDto"; - - return iovSet; - } - - json StoreDto::to_json() const - { - json dto={}; - dto["hash"]=hash; - dto["since"]=since; - dto["data"]=data; - dto["streamerInfo"]=getStreamerInfo(); - return dto; - } - json StoreDto::getStreamerInfo() const{ - json js={}; - if(m_app_version.has_value()) - js["app_version"]=m_app_version.value(); - if(m_app_name.has_value()) - js["app_name"]=m_app_name.value(); - return js; - } - - StoreDto StoreDto::from_json(const json &j) - { - StoreDto storeDto; - storeDto.hash = j.value("hash", ""); - storeDto.since = j.value("since", 0.0); - storeDto.data = j.value("data", ""); - //storeDto.streamerInfo = j.value("streamerInfo", ""); - return storeDto; - } - - json StoreSetDto::to_json() const - { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) + else { - jsonResources.push_back(((StoreDto)resource).to_json()); + iov.insertionTime = ""; } - baseJson["resources"] = jsonResources; - return baseJson; } - void StoreSetDto::push_back(StoreDto dto){ - resources.push_back(dto); - //setSize(size()); - } - void StoreSetDto::clear(){ - resources.clear(); - //setSize(size()); - } - - StoreSetDto StoreSetDto::from_json(const json &j) + else { - StoreSetDto storeSetDto; - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) - { - storeSetDto.push_back(StoreDto::from_json(*it)); - } - - //storeSetDto.size = j.value("size", storeSetDto.resources.size()); - //storeSetDto.datatype = j.value("datatype", "data"); - //storeSetDto.format = j.value("format", "StoreSetDto"); - // we are skipping the parse of RespPage for page, and GenericMap for filters - - return storeSetDto; + iov.insertionTime = ""; } - // Function to serialize the object to JSON - - json PayloadDto::to_json() const + if (j.contains("payloadHash")) { - json payloadDto={}; - payloadDto["hash"]=hash; - payloadDto["version"]=version; - payloadDto["objectType"]=objectType; - payloadDto["objectName"]=objectName; - payloadDto["compressionType"]=compressionType; - payloadDto["checkSum"]=checkSum; - payloadDto["size"]=size; - if(insertionTime.has_value()) - payloadDto["insertionTime"]=insertionTime.value(); - return payloadDto; - } - - // Function to deserialize the object from JSON - - PayloadDto PayloadDto::from_json(const json &j) - { - PayloadDto payloadDto; - payloadDto.hash = j.value("hash", ""); - payloadDto.version = j.value("version", ""); - payloadDto.objectType = j.value("objectType", ""); - payloadDto.objectName = j.value("objectName", ""); - payloadDto.compressionType = j.value("compressionType", ""); - payloadDto.checkSum = j.value("checkSum", ""); - payloadDto.size = j.value("size", 0); - if(j.contains(std::string{"insertionTime" })) - payloadDto.insertionTime = j.value("insertionTime", ""); - return payloadDto; - } - - // Function to serialize the object to JSON - - json PayloadSetDto::to_json() const - { - json baseJson = CrestBaseResponse::to_json(); - json jsonResources = json::array(); - for (const auto &resource : resources) + if (!j["payloadHash"].is_null()) { - jsonResources.push_back(((PayloadDto)resource).to_json()); + iov.payloadHash = j["payloadHash"]; } - baseJson["resources"] = jsonResources; - return baseJson; - } - - // Function to deserialize the object from JSON - - PayloadSetDto PayloadSetDto::from_json(const json &j) - { - PayloadSetDto payloadSetDto; - payloadSetDto.load_from_json(j); - json jsonResources = j.value("resources", json::array()); - for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + else { - payloadSetDto.resources.push_back(PayloadDto::from_json(*it)); - } - // Deserialize CrestBaseResponse part - - //payloadSetDto.setSize(j.value("size", payloadSetDto.resources.size())); - //payloadSetDto.datatype = j.value("datatype", "data"); - //payloadSetDto.format = j.value("format", "PayloadSetDto"); - // we are skipping the parse of RespPage for page, and GenericMap for filters - - return payloadSetDto; - } - + iov.payloadHash = ""; + } + } + else + { + iov.payloadHash = ""; + } + + return iov; +} + +json IovSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((IovDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} + +IovSetDto IovSetDto::from_json(const json &j) +{ + IovSetDto iovSet; + iovSet.load_from_json(j); + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + iovSet.resources.push_back(IovDto::from_json(*it)); + } + + return iovSet; +} + +IovSetDto IovSetDto::from_fs_json(const json &j) +{ + IovSetDto iovSet; + iovSet.load_from_json(j); + // int n = j.size(); + + for (auto it = j.begin(); it != j.end(); ++it) + { + iovSet.resources.push_back(IovDto::from_json(*it)); + } + + iovSet.datatype = "iovs"; + + return iovSet; +} + +json StoreDto::to_json() const +{ + json dto = {}; + dto["hash"] = hash; + dto["since"] = since; + dto["data"] = data; + dto["streamerInfo"] = getStreamerInfo().dump(); + return dto; +} +json StoreDto::getStreamerInfo() const +{ + json js = {}; + if (m_app_version.has_value()) + js["app_version"] = m_app_version.value(); + if (m_app_name.has_value()) + js["app_name"] = m_app_name.value(); + return js; +} + +StoreDto StoreDto::from_json(const json &j) +{ + StoreDto storeDto; + storeDto.hash = j.value("hash", ""); + storeDto.since = j.value("since", 0.0); + storeDto.data = j.value("data", ""); + return storeDto; +} + +json StoreSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((StoreDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} +void StoreSetDto::push_back(StoreDto dto) +{ + resources.push_back(dto); +} +void StoreSetDto::clear() +{ + resources.clear(); +} + +StoreSetDto StoreSetDto::from_json(const json &j) +{ + StoreSetDto storeSetDto; + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + storeSetDto.push_back(StoreDto::from_json(*it)); + } + + return storeSetDto; +} + +// Function to serialize the object to JSON + +json PayloadDto::to_json() const +{ + json payloadDto = {}; + payloadDto["hash"] = hash; + payloadDto["version"] = version; + payloadDto["objectType"] = objectType; + payloadDto["objectName"] = objectName; + payloadDto["compressionType"] = compressionType; + payloadDto["checkSum"] = checkSum; + payloadDto["size"] = size; + if (insertionTime.has_value()) + payloadDto["insertionTime"] = insertionTime.value(); + return payloadDto; +} + +// Function to deserialize the object from JSON + +PayloadDto PayloadDto::from_json(const json &j) +{ + PayloadDto payloadDto; + payloadDto.hash = j.value("hash", ""); + payloadDto.version = j.value("version", ""); + payloadDto.objectType = j.value("objectType", ""); + payloadDto.objectName = j.value("objectName", ""); + payloadDto.compressionType = j.value("compressionType", ""); + payloadDto.checkSum = j.value("checkSum", ""); + payloadDto.size = j.value("size", 0); + if (j.contains(std::string{"insertionTime"})) + payloadDto.insertionTime = j.value("insertionTime", ""); + return payloadDto; +} + +// Function to serialize the object to JSON + +json PayloadSetDto::to_json() const +{ + json baseJson = CrestBaseResponse::to_json(); + json jsonResources = json::array(); + for (const auto &resource : resources) + { + jsonResources.push_back(((PayloadDto)resource).to_json()); + } + baseJson["resources"] = jsonResources; + return baseJson; +} + +// Function to deserialize the object from JSON + +PayloadSetDto PayloadSetDto::from_json(const json &j) +{ + PayloadSetDto payloadSetDto; + payloadSetDto.load_from_json(j); + json jsonResources = j.value("resources", json::array()); + for (auto it = jsonResources.begin(); it != jsonResources.end(); ++it) + { + payloadSetDto.resources.push_back(PayloadDto::from_json(*it)); + } + + return payloadSetDto; +} -- GitLab