//----------------------------------------------------------------------------- void Server::createDatabase(DatabasePtr db, int pagesize, int dialect) { QString extra_params; if (pagesize) extra_params += (QString::fromLatin1(" PAGE_SIZE ") + pagesize); QString charset(db->getConnectionCharset()); if (!charset.isEmpty()) extra_params += (QString::fromLatin1(" DEFAULT CHARACTER SET ") + charset); IBPP::Database db1; db1 = IBPP::DatabaseFactory(wx2std(getConnectionString()), wx2std(db->getPath()), wx2std(db->getUsername()), wx2std(db->getDecryptedPassword()), "", wx2std(charset), wx2std(extra_params)); db1->Create(dialect); }
void RestoreFrame::OnStartButtonClick(wxCommandEvent& WXUNUSED(event)) { verboseMsgsM = checkbox_showlog->IsChecked(); clearLog(); DatabasePtr database = getDatabase(); wxCHECK_RET(database, "Cannot restore unassigned database"); ServerPtr server = database->getServer(); wxCHECK_RET(server, "Cannot restore database without assigned server"); wxString username; wxString password; if (!getConnectionCredentials(this, database, username, password)) return; int flags = (int)IBPP::brVerbose; // this will be ORed in anyway if (checkbox_replace->IsChecked()) flags |= (int)IBPP::brReplace; if (checkbox_deactivate->IsChecked()) flags |= (int)IBPP::brDeactivateIdx; if (checkbox_noshadow->IsChecked()) flags |= (int)IBPP::brNoShadow; if (checkbox_validity->IsChecked()) flags |= (int)IBPP::brNoValidity; if (checkbox_commit->IsChecked()) flags |= (int)IBPP::brPerTableCommit; if (checkbox_space->IsChecked()) flags |= (int)IBPP::brUseAllSpace; unsigned long pagesize; if (!choice_pagesize->GetStringSelection().ToULong(&pagesize)) pagesize = 0; std::auto_ptr<wxThread> thread(new RestoreThread(this, server->getConnectionString(), username, password, text_ctrl_filename->GetValue(), database->getPath(), pagesize, (IBPP::BRF)flags)); startThread(thread); updateControls(); }
bool DatabaseInfoHandler::handleURI(URI& uri) { bool isEditSweep, isEditForcedWrites, isEditReserve, isEditReadOnly, isEditPageBuffers; isEditSweep = (uri.action == "edit_db_sweep_interval"); isEditForcedWrites = (uri.action == "edit_db_forced_writes"); isEditReserve = (uri.action == "edit_db_reserve_space"); isEditReadOnly = (uri.action == "edit_db_read_only"); isEditPageBuffers = (uri.action == "edit_db_page_buffers"); if (!isEditSweep && !isEditForcedWrites && !isEditReserve && !isEditReadOnly && !isEditPageBuffers) { return false; } DatabasePtr d = extractMetadataItemPtrFromURI<Database>(uri); wxWindow* w = getParentWindow(uri); // when either the database or the window does not exist // return immediately. Because this function returns whether // the specified uri is handled, return true. if (!d || !w || !d->isConnected()) return true; IBPP::Database& db = d->getIBPPDatabase(); IBPP::Service svc = IBPP::ServiceFactory( wx2std(d->getServer()->getConnectionString()), db->Username(), db->UserPassword()); svc->Connect(); if (isEditSweep || isEditPageBuffers) { long oldValue = 0; wxString title, label; if (isEditSweep) { oldValue = d->getInfo().getSweep(); title = _("Enter the new Sweep Interval"); label = _("Sweep Interval"); } else if (isEditPageBuffers) { oldValue = d->getInfo().getBuffers(); title = _("Enter the new value for Page Buffers"); label = _("Page Buffers"); } while (true) { wxString s; long value = oldValue; s = ::wxGetTextFromUser(title, label, wxString::Format("%d", value), w); // return from the iteration when the entered string is empty, in // case of cancelling the operation. if (s.IsEmpty()) break; if (!s.ToLong(&value)) continue; // return from the iteration when the interval has not changed if (value == oldValue) break; if (isEditSweep) svc->SetSweepInterval(wx2std(d->getPath()), value); else if (isEditPageBuffers) svc->SetPageBuffers(wx2std(d->getPath()), value); // Before reloading the info, re-attach to the database // otherwise the sweep interval won't be changed for FB Classic // Server. db->Disconnect(); db->Connect(); d->loadInfo(); break; } } else if (isEditForcedWrites || isEditReserve || isEditReadOnly) { bool fw = !d->getInfo().getForcedWrites(); bool reserve = !d->getInfo().getReserve(); bool ro = !d->getInfo().getReadOnly(); // setting these properties requires that the database is // disconnected. db->Disconnect(); if (isEditForcedWrites) svc->SetSyncWrite(wx2std(d->getPath()), fw); if (isEditReserve) svc->SetReserveSpace(wx2std(d->getPath()), reserve); if (isEditReadOnly) svc->SetReadOnly(wx2std(d->getPath()), ro); db->Connect(); // load the database info because the info values are changed. d->loadInfo(); } svc->Disconnect(); return true; }