void ZDvidVersionDag::load(const ZJsonObject &obj, const std::string &uuid) { clear(); std::vector<std::string> keyList = obj.getAllKey(); std::string fullUuid; for (std::vector<std::string>::const_iterator iter = keyList.begin(); iter != keyList.end(); ++iter) { ZString key = *iter; if (key.startsWith(uuid)) { fullUuid = key; break; } } ZJsonObject dagJson = ZJsonObject(ZJsonObject(obj.value(fullUuid.c_str())).value("DAG")); if (!dagJson.isEmpty()) { std::queue<std::string> uuidQueue; std::string rootUuid = ZJsonParser::stringValue(dagJson["Root"]); RECORD_WARNING(rootUuid.empty(), "empty root uuid"); uuidQueue.push(rootUuid); setRoot(rootUuid.substr(0, 4)); ZJsonObject allNodeJson(dagJson.value("Nodes")); std::vector<ZDvidVersionNode> nodeList; //sorted uuid list const char* key; json_t *value; ZJsonObject_foreach (allNodeJson, key, value) { ZJsonObject nodeJson(value, ZJsonValue::SET_INCREASE_REF_COUNT); int versionId = ZJsonParser::integerValue(nodeJson["VersionID"]); if (versionId >= (int) nodeList.size()) { nodeList.resize(versionId + 1); } ZDvidVersionNode node; node.setUuid(key); if (ZJsonParser::booleanValue(nodeJson["Locked"])) { node.lock(); } nodeList[versionId] = node; }
ZJsonObject ZDocPlayer::toJsonObject() const { return ZJsonObject(); }