Esempio n. 1
0
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;
    }
Esempio n. 2
0
ZJsonObject ZDocPlayer::toJsonObject() const
{
  return ZJsonObject();
}