BsonTreeModel::BsonTreeModel(const std::vector<MongoDocumentPtr> &documents, QObject *parent) : BaseClass(parent), _root(new BsonTreeItem(this)) { for (int i = 0; i < documents.size(); ++i) { MongoDocumentPtr doc = documents[i]; BsonTreeItem *child = new BsonTreeItem(doc->bsonObj(), _root); parseDocument(child, doc->bsonObj(), doc->bsonObj().isArray()); QString idValue; BsonTreeItem *idItem = child->childByKey("_id"); if (idItem) { idValue = idItem->value(); } child->setKey(QString("(%1) %2").arg(i + 1).arg(idValue)); int count = BsonUtils::elementsCount(doc->bsonObj()); if (doc->bsonObj().isArray()) { child->setValue(arrayValue(count)); child->setType(mongo::Array); } else { child->setValue(objectValue(count)); child->setType(mongo::Object); } _root->addChild(child); } }
void JsonPrepareThread::run() { int position = 1; // 1-based numbering to match tree & table views for(std::vector<MongoDocumentPtr>::const_iterator it = _bsonObjects.begin();it!=_bsonObjects.end();++it) { MongoDocumentPtr doc = *it; mongo::StringBuilder sb; if (position == 1) sb << "/* 1 */\n"; else sb << "\n\n/* " << position << " */\n"; mongo::BSONObj obj = doc->bsonObj(); std::string stdJson = BsonUtils::jsonString(obj, mongo::TenGen, 1, _uuidEncoding, _timeZone); if (_stop) break; sb << stdJson; QString json = QtUtils::toQString(sb.str()); if (_stop) break; emit partReady(json); position++; } emit done(); }
BsonTableModel::BsonTableModel(const std::vector<MongoDocumentPtr> &documents, QObject *parent) : BaseClass(parent) , _root(new BsonTableItem(this)) { for (std::vector<MongoDocumentPtr>::const_iterator it = documents.begin(); it!=documents.end(); ++it) { MongoDocumentPtr doc = (*it); parseDocument(_root,doc->bsonObj()); } }
CollectionStatsTreeItem::CollectionStatsTreeItem(MongoDocumentPtr document) : _document(document) { _obj = document->bsonObj(); MongoNamespace ns(getString("ns")); setText(0, prepareValue(ns.collectionName())); setIcon(0, GuiRegistry::instance().collectionIcon()); setText(1, prepareValue(QString::number(getLongLong("count")))); setText(2, prepareValue(MongoUtils::buildNiceSizeString(getDouble("size")))); setText(3, prepareValue(MongoUtils::buildNiceSizeString(getDouble("storageSize")))); setText(4, prepareValue(MongoUtils::buildNiceSizeString(getDouble("totalIndexSize")))); setText(5, prepareValue(MongoUtils::buildNiceSizeString(getDouble("avgObjSize")))); setText(6, prepareValue(QString::number(getDouble("paddingFactor")))); }
std::string MongoDocument::buildJsonString(const MongoDocumentPtr &doc) { //qt4 QTextCodec::setCodecForCStrings(codec); std::string jsonString = doc->bsonObj().jsonString(mongo::TenGen, 1); return jsonString; }