void ExplorerTreeWidget::ui_editUser() { ExplorerUserTreeItem *userItem = selectedUserItem(); if (!userItem) return; MongoUser user = userItem->user(); MongoDatabase *database = userItem->database(); MongoServer *server = database->server(); CreateUserDialog dlg(server->connectionRecord()->getFullAddress(), database->name(), user); dlg.setWindowTitle("Edit User"); dlg.setUserPasswordLabelText("New Password:"); int result = dlg.exec(); if (result == QDialog::Accepted) { MongoUser user = dlg.user(); database->createUser(user, true); // refresh list of users database->loadUsers(); } }
void ExplorerTreeWidget::ui_dropCollection() { ExplorerCollectionTreeItem *collectionItem = selectedCollectionItem(); if (!collectionItem) return; MongoCollection *collection = collectionItem->collection(); MongoDatabase *database = collection->database(); MongoServer *server = database->server(); ConnectionSettings *settings = server->connectionRecord(); // Ask user int answer = QMessageBox::question(this, "Drop Collection", QString("Drop <b>%1</b> collection?").arg(collection->name()), QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton); if (answer != QMessageBox::Yes) return; database->dropCollection(collection->name()); database->loadCollections(); //openCurrentCollectionShell("db.%1.drop()", false); }
void ExplorerTreeWidget::ui_editFunction() { ExplorerFunctionTreeItem *functionItem = selectedFunctionItem(); if (!functionItem) return; MongoFunction function= functionItem->function(); MongoDatabase *database = functionItem->database(); MongoServer *server = database->server(); QString name = function.name(); FunctionTextEditor dlg(server->connectionRecord()->getFullAddress(), database->name(), function); dlg.setWindowTitle("Edit Function"); int result = dlg.exec(); if (result == QDialog::Accepted) { MongoFunction editedFunction = dlg.function(); database->updateFunction(name, editedFunction); // refresh list of functions database->loadFunctions(); } }
void ExplorerTreeWidget::ui_renameCollection() { ExplorerCollectionTreeItem *collectionItem = selectedCollectionItem(); if (!collectionItem) return; MongoCollection *collection = collectionItem->collection(); MongoDatabase *database = collection->database(); MongoServer *server = database->server(); ConnectionSettings *settings = server->connectionRecord(); CreateDatabaseDialog dlg(settings->getFullAddress(), database->name(), collection->name()); dlg.setWindowTitle("Rename Collection"); dlg.setOkButtonText("&Rename"); dlg.setInputLabelText("New Collection Name:"); dlg.setInputText(collection->name()); int result = dlg.exec(); if (result == QDialog::Accepted) { database->renameCollection(collection->name(), dlg.databaseName()); // refresh list of collections database->loadCollections(); } }
void ExplorerTreeWidget::ui_addDocument() { ExplorerCollectionTreeItem *collectionItem = selectedCollectionItem(); if (!collectionItem) return; MongoCollection *collection = collectionItem->collection(); MongoDatabase *database = collection->database(); MongoServer *server = database->server(); ConnectionSettings *settings = server->connectionRecord(); DocumentTextEditor editor(settings->getFullAddress(), database->name(), collection->name(), "{\n \n}"); editor.setCursorPosition(1, 4); editor.setWindowTitle("Insert Document"); int result = editor.exec(); activateWindow(); if (result == QDialog::Accepted) { mongo::BSONObj obj = editor.bsonObj(); server->insertDocument(obj, database->name(), collection->name()); } /* openCurrentCollectionShell( "db.%1.insert({\n" " '' : '',\n" "})" , false, CursorPosition(1, 5)); */ }
void ExplorerTreeWidget::ui_removeAllDocuments() { ExplorerCollectionTreeItem *collectionItem = selectedCollectionItem(); if (!collectionItem) return; MongoCollection *collection = collectionItem->collection(); MongoDatabase *database = collection->database(); MongoServer *server = database->server(); ConnectionSettings *settings = server->connectionRecord(); // Ask user int answer = QMessageBox::question(this, "Remove All Documents", QString("Remove all documents from <b>%1</b> collection?").arg(collection->name()), QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton); if (answer != QMessageBox::Yes) return; mongo::BSONObjBuilder builder; mongo::BSONObj bsonQuery = builder.obj(); mongo::Query query(bsonQuery); server->removeDocuments(query, database->name(), collection->name(), false); }
MongoDatabase *CopyCollection::selectedDatabase() { MongoDatabase *result = NULL; const QString &serverName = _serverComboBox->currentText(); const QString &dataBaseName = _databaseComboBox->currentText(); if (!serverName.isEmpty() && !dataBaseName.isEmpty()) { MongoServer *server = _servers[_serverComboBox->currentIndex()]; result = server->findDatabaseByName(QtUtils::toStdString(dataBaseName)); } return result; }
void ExplorerTreeWidget::openCurrentServerShell(const QString &script, bool execute, const CursorPosition &cursor) { ExplorerServerTreeItem *serverItem = selectedServerItem(); if (!serverItem) return; MongoServer *server = serverItem->server(); AppRegistry::instance().app()-> openShell(server, script, QString(), execute, server->connectionRecord()->getReadableName(), cursor); }
/** * @brief Creates and opens new server connection. * @param connection: ConnectionSettings, that will be owned by MongoServer. * @param visible: should this server be visible in UI (explorer) or not. */ MongoServer *App::openServer(ConnectionSettings *connection, bool visible) { MongoServer *server = new MongoServer(connection, visible); _servers.append(server); if (visible) _bus->publish(new ConnectingEvent(this, server)); LOG_MSG(QString("Connecting to %1...").arg(QtUtils::toQString(server->connectionRecord()->getFullAddress()))); server->tryConnect(); return server; }
void ExplorerCollectionTreeItem::ui_copyToCollectionToDiffrentServer() { MongoDatabase *databaseFrom = _collection->database(); MongoServer *server = databaseFrom->server(); ConnectionSettings *settings = server->connectionRecord(); CopyCollection dlg(QtUtils::toQString(settings->getFullAddress()), QtUtils::toQString(databaseFrom->name()), QtUtils::toQString(_collection->name()) ); int result = dlg.exec(); if (result == QDialog::Accepted) { MongoDatabase *databaseTo = dlg.selectedDatabase(); databaseTo->copyCollection(server, databaseFrom->name(), _collection->name()); databaseTo->loadCollections(); } }
void ExplorerCollectionTreeItem::ui_removeAllDocuments() { MongoDatabase *database = _collection->database(); // Ask user int answer = QMessageBox::question(treeWidget(), "Remove All Documents", QString("Remove all documents from <b>%1</b> collection?").arg(QtUtils::toQString(_collection->name())), QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton); if (answer == QMessageBox::Yes) { MongoServer *server = database->server(); mongo::BSONObjBuilder builder; mongo::BSONObj bsonQuery = builder.obj(); mongo::Query query(bsonQuery); server->removeDocuments(query, MongoNamespace(database->name(), _collection->name()), false); } }
void ExplorerCollectionTreeItem::ui_addDocument() { MongoDatabase *database = _collection->database(); MongoServer *server = database->server(); ConnectionSettings *settings = server->connectionRecord(); DocumentTextEditor editor(CollectionInfo(settings->getFullAddress(), database->name(), _collection->name()), "{\n \n}"); editor.setCursorPosition(1, 4); editor.setWindowTitle("Insert Document"); int result = editor.exec(); treeWidget()->activateWindow(); if (result == QDialog::Accepted) { server->insertDocuments(editor.bsonObj(), MongoNamespace(database->name(), _collection->name()) ); } }
MongoServer* App::continueOpenServer(ConnectionSettings *connection, bool visible, int localport) { ConnectionSettings* settings = connection->clone(); // Modify connection settings when SSH tunnel is used if (visible && settings->sshSettings()->enabled()) { settings->setServerHost("127.0.0.1"); settings->setServerPort(localport); } MongoServer *server = new MongoServer(settings, visible); _servers.push_back(server); server->runWorkerThread(); LOG_MSG(QString("Connecting to %1...").arg(QtUtils::toQString(server->connectionRecord()->getFullAddress())), mongo::logger::LogSeverity::Info()); server->tryConnect(); return server; }
void ExplorerCollectionTreeItem::ui_renameCollection() { MongoDatabase *database = _collection->database(); MongoServer *server = database->server(); ConnectionSettings *connSettings = server->connectionRecord(); CreateDatabaseDialog dlg(QtUtils::toQString(connSettings->getFullAddress()), QtUtils::toQString(database->name()), QtUtils::toQString(_collection->name()), treeWidget()); dlg.setWindowTitle("Rename Collection"); dlg.setOkButtonText("&Rename"); dlg.setInputLabelText("New Collection Name:"); dlg.setInputText(QtUtils::toQString(_collection->name())); int result = dlg.exec(); if (result == QDialog::Accepted) { database->renameCollection(_collection->name(), QtUtils::toStdString(dlg.databaseName())); } }
void ExplorerTreeWidget::ui_dbDrop() { ExplorerDatabaseTreeItem *dbItem = selectedDatabaseItem(); if (!dbItem) return; MongoDatabase *database = dbItem->database(); MongoServer *server = database->server(); // Ask user int answer = QMessageBox::question(this, "Drop Database", QString("Drop <b>%1</b> database?").arg(database->name()), QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton); if (answer != QMessageBox::Yes) return; server->dropDatabase(database->name()); server->loadDatabases(); // refresh list of databases //openCurrentDatabaseShell("db.dropDatabase()", false); }