QString ApiEntryPrivate::kUrlFromGuid(const QString& strToken, const QString& strKbGUID) { Q_ASSERT(!strToken.isEmpty()); if (m_mapkUrl.contains(strKbGUID)) return m_mapkUrl.value(strKbGUID); WIZUSERINFO info = Token::info(); m_mapkUrl.insert(info.strKbGUID, info.strDatabaseServer); qDebug() << "user: "******" kbUrl: " << info.strDatabaseServer; CWizKMAccountsServer asServer(syncUrl()); asServer.SetUserInfo(info); CWizGroupDataArray arrayGroup; if (asServer.GetGroupList(arrayGroup)) { CWizGroupDataArray::const_iterator it = arrayGroup.begin(); for (; it != arrayGroup.end(); it++) { const WIZGROUPDATA& group = *it; m_mapkUrl.insert(group.strGroupGUID, group.strDatabaseServer); qDebug() << "group:" << group.strGroupGUID << " kburl: " << group.strDatabaseServer; } } else { qDebug() << asServer.GetLastErrorMessage(); } return m_mapkUrl.value(strKbGUID, 0); }
bool CWizDatabaseManager::openAll() { // first, open private db if (!open()) { TOLOG("open user private database failed"); return false; } // second, get groups info CWizGroupDataArray arrayGroup; if (!m_dbPrivate->GetUserGroupInfo(arrayGroup)) { TOLOG("Failed to get user group info"); return true; } // third, open groups one by one CWizGroupDataArray::const_iterator it; for (it = arrayGroup.begin(); it != arrayGroup.end(); it++) { WIZGROUPDATA group = *it; if (!open(group.strGroupGUID)) { TOLOG1("failed to open group: %1", group.strGroupName); } } return true; }
void CWizObjectDataDownloadWorker::startDownload() { // FIXME CWizKMAccountsServer asServer(WizKMGetAccountsServerURL(true)); QString strUserId = m_dbMgr.db().GetUserId(); QString strPassword = m_dbMgr.db().GetPassword(); // FIXME: hard-coded "normal" if (!asServer.Login(strUserId, strPassword, "normal")) { Q_EMIT downloaded(false); return; } WIZUSERINFOBASE info = asServer.GetUserInfo(); info.strKbGUID = m_data.strKbGUID; bool bOk = false; // reset info kb_guid and server url for downloading if (m_data.strKbGUID != m_dbMgr.db().kbGUID()) { CWizGroupDataArray arrayGroup; if (!asServer.GetGroupList(arrayGroup) || arrayGroup.empty()) { Q_EMIT downloaded(false); } CWizGroupDataArray::const_iterator it = arrayGroup.begin(); for (; it != arrayGroup.end(); it++) { const WIZGROUPDATA& group = *it; if (group.strGroupGUID == m_data.strKbGUID) { info.strDatabaseServer = group.strDatabaseServer; bOk = true; break; } } } else { bOk = true; } if (!bOk) { Q_EMIT downloaded(false); return; } CWizKMDatabaseServer ksServer(info); // FIXME: should we query object before download data? if (!ksServer.data_download(m_data.strObjectGUID, WIZOBJECTDATA::ObjectTypeToTypeString(m_data.eObjectType), m_data.arrayData, m_data.strDisplayName)) { Q_EMIT downloaded(false); return; } m_dbMgr.db(m_data.strKbGUID).UpdateObjectData(m_data.strObjectGUID, WIZOBJECTDATA::ObjectTypeToTypeString(m_data.eObjectType), m_data.arrayData); Q_EMIT downloaded(true); }
void CWizDownloadObjectData::onGetGroupList(const CWizGroupDataArray& arrayGroup) { CWizGroupDataArray::const_iterator it; for (it = arrayGroup.begin(); it != arrayGroup.end(); it++) { const WIZGROUPDATA& group = *it; if (group.strGroupGUID == m_data.strKbGUID) { setKbUrl(group.strDatabaseServer); startDownloadObjectData(); return; } } }
void CWizApi::onGetGroupList(const CWizGroupDataArray& arrayGroup) { if (!arrayGroup.size()) return; m_db->setUserGroupInfo(arrayGroup); }
bool CWizDatabase::getUserGroupInfo(CWizGroupDataArray& arrayGroup) { CString strTotal; bool bExist; if (!GetMeta(g_strGroupSection, "Count", strTotal, "", &bExist)) { return false; } if (!bExist) { return false; } int nTotal = strTotal.toInt(); for (int i = 0; i < nTotal; i++) { QString strGroupGUID = GetMetaDef(g_strGroupSection, QString::number(i)); QString strGroupName = GetMetaDef(g_strGroupSection, strGroupGUID); WIZGROUPDATA group; group.strGroupGUID = strGroupGUID; group.strGroupName = strGroupName; arrayGroup.push_back(group); } return true; }
bool CWizDatabase::setUserGroupInfo(const CWizGroupDataArray& arrayGroup) { if (!deleteMetasByName(g_strGroupSection)) return false; int nTotal = arrayGroup.size(); if (!nTotal) { return false; } if (!SetMeta(g_strGroupSection, "Count", QString::number(nTotal))) { return false; } int nErrors = 0; for (int i = 0; i < nTotal; i++) { WIZGROUPDATA group(arrayGroup[i]); if (!SetMeta(g_strGroupSection, QString::number(i), group.strGroupGUID)) { nErrors++; } if (!SetMeta(g_strGroupSection, group.strGroupGUID, group.strGroupName)) { nErrors++; } } if (nErrors > 0) { return false; } return true; }
bool CWizDatabase::getUserGroupInfo(CWizGroupDataArray& arrayGroup) { CString strTotal; bool bExist; if (!GetMeta(g_strGroupSection, "Count", strTotal, "", &bExist)) { return false; } // it's ok, user has no group data if (!bExist) { return true; } int nTotal = strTotal.toInt(); for (int i = 0; i < nTotal; i++) { WIZGROUPDATA group; group.strGroupGUID = GetMetaDef(g_strGroupSection, QString::number(i)); group.strGroupName = GetMetaDef(g_strGroupSection, group.strGroupGUID); group.bizGUID = GetMetaDef(g_strBizGroupSection, group.strGroupGUID); if (!group.bizGUID.isEmpty()) group.bizName = GetMetaDef(g_strBizGroupSection, group.bizGUID); arrayGroup.push_back(group); } return true; }
void CWizDatabaseManager::on_groupsInfoDownloaded(const CWizGroupDataArray& arrayGroups) { qDebug() << "[CWizDatabaseManager] Group info downloaded..."; // set database info CWizGroupDataArray::const_iterator it; for (it = arrayGroups.begin(); it != arrayGroups.end(); it++) { const WIZGROUPDATA& group = *it; WIZDATABASEINFO info; info.bizGUID = group.bizGUID; info.bizName = group.bizName; info.name = group.strGroupName; info.nPermission = group.nUserGroup; db(group.strGroupGUID).SetDatabaseInfo(info); } // FIXME : close database not inside group list }
void CWizSync::on_getGroupListDone(const CWizGroupDataArray& arrayGroup) { m_arrayGroup.assign(arrayGroup.begin(), arrayGroup.end()); // reset database info CWizGroupDataArray::const_iterator it; for (it = m_arrayGroup.begin(); it != m_arrayGroup.end(); it++) { const WIZGROUPDATA& group = *it; if (!m_dbMgr.isOpened(group.strGroupGUID)) { if (!m_dbMgr.open(group.strGroupGUID)) { TOLOG("FATAL: can't open group db for sync!"); continue; } } m_dbMgr.db(group.strGroupGUID).setDatabaseInfo(group.strGroupGUID, group.strDatabaseServer, group.strGroupName, group.nUserGroup); } // close group database not in the list QStringList groups; m_dbMgr.Guids(groups); for (int i = 0; i < groups.size(); i++) { bool found = false; CWizGroupDataArray::const_iterator it; for (it = m_arrayGroup.begin(); it != m_arrayGroup.end(); it++) { const WIZGROUPDATA& group = *it; if (group.strGroupGUID == groups.at(i)) { found = true; break; } } if (!found) { m_dbMgr.close(groups.at(i)); } } // sync user private notes TOLOG(tr("Begin syncing user private data")); m_kbSync->startSync(WizGlobal()->userInfo().strKbGUID); }
bool CWizDatabase::setUserGroupInfo(const CWizGroupDataArray& arrayGroup) { if (!deleteMetasByName(g_strGroupSection)\ && !deleteMetasByName(g_strBizGroupSection)) return false; int nTotal = arrayGroup.size(); if (!nTotal) { return false; } // collect biz group info QMap<QString, QString> bizInfo; for (int i = 0; i < nTotal; i++) { const WIZGROUPDATA& data = arrayGroup[i]; if (!data.bizGUID.isEmpty()) bizInfo[data.bizGUID] = data.bizName; } // set biz info SetMeta(g_strBizGroupSection, "Count", QString::number(bizInfo.size())); int idx = 0; QMap<QString, QString>::const_iterator it; for (it = bizInfo.begin(); it != bizInfo.end(); it++) { SetMeta(g_strBizGroupSection, QString::number(idx), it.key()); SetMeta(g_strBizGroupSection, it.key(), it.value()); idx++; } // set group info SetMeta(g_strGroupSection, "Count", QString::number(nTotal)); for (int i = 0; i < nTotal; i++) { const WIZGROUPDATA& data = arrayGroup[i]; SetMeta(g_strGroupSection, QString::number(i), data.strGroupGUID); SetMeta(g_strGroupSection, data.strGroupGUID, data.strGroupName); // also biz link if (!data.bizGUID.isEmpty()) { SetMeta(g_strBizGroupSection, data.strGroupGUID, data.bizGUID); } } return true; }
BOOL CWizKMAccountsServer::accounts_getGroupList(CWizGroupDataArray& arrayGroup) { CWizKMTokenOnlyParam param(GetToken(), GetKbGUID()); if (WIZKM_WEBAPI_VERSION < 4) { param.ChangeApiVersion(4); } // param.AddString(_T("kb_type"), _T("group")); param.AddString(_T("protocol"), "https"); // std::deque<WIZGROUPDATA> arrayWrap; if (!Call(_T("accounts.getGroupKbList"), arrayWrap, ¶m)) { TOLOG(_T("accounts.getGroupKbList failure!")); return FALSE; } // arrayGroup.assign(arrayWrap.begin(), arrayWrap.end()); // return TRUE; }