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; }
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); }
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 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); }