Exemplo n.º 1
0
frmMaintenance::frmMaintenance(frmMain *form, pgObject *obj) : ExecutionDialog(form, obj)
{
	wxWindowBase::SetFont(settings->GetSystemFont());
	LoadResource(form, wxT("frmMaintenance"));
	RestorePosition();

	SetTitle(object->GetTranslatedMessage(MAINTENANCEDIALOGTITLE));

	txtMessages = CTRL_TEXT("txtMessages");

	// Icon
	SetIcon(*vacuum_png_ico);

	// Note that under GTK+, SetMaxLength() function may only be used with single line text controls.
	// (see http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlsetmaxlength)
#ifndef __WXGTK__
	txtMessages->SetMaxLength(0L);
#endif

	if (object->GetMetaType() == PGM_INDEX || object->GetMetaType() == PGM_PRIMARYKEY || object->GetMetaType() == PGM_UNIQUE)
	{
		rbxAction->SetSelection(2);
		rbxAction->Enable(0, false);
		rbxAction->Enable(1, false);
	}
	wxCommandEvent ev;
	OnAction(ev);
}
Exemplo n.º 2
0
dlgStep::dlgStep(pgaFactory *f, frmMain *frame, pgaStep *node, pgaJob *j)
    : dlgAgentProperty(f, frame, wxT("dlgStep"))
{
    step = node;
    job = j;
    if (job)
        jobId = job->GetRecId();
    else
        jobId = 0;

    sqlBox = new ctlSQLBox(pnlDefinition, CTL_SQLBOX, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxSUNKEN_BORDER | wxTE_RICH2);

    wxWindow *placeholder = CTRL_TEXT("txtSqlBox");
    wxSizer *sizer = placeholder->GetContainingSizer();
    sizer->Add(sqlBox, 1, wxRIGHT | wxGROW, 5);
    sizer->Detach(placeholder);
    delete placeholder;
    sizer->Layout();


    txtID->Disable();
}
Exemplo n.º 3
0
frmMaintenance::frmMaintenance(frmMain *form, pgObject *obj) : ExecutionDialog(form, obj)
{
	wxWindowBase::SetFont(settings->GetSystemFont());
	LoadResource(form, wxT("frmMaintenance"));
	RestorePosition();

	SetTitle(object->GetTranslatedMessage(MAINTENANCEDIALOGTITLE));

	txtMessages = CTRL_TEXT("txtMessages");

	// Icon
	SetIcon(*vacuum_png_ico);

	txtMessages->SetMaxLength(0L);

	if (object->GetMetaType() == PGM_INDEX || object->GetMetaType() == PGM_PRIMARYKEY || object->GetMetaType() == PGM_UNIQUE)
	{
		rbxAction->SetSelection(2);
		rbxAction->Enable(0, false);
		rbxAction->Enable(1, false);
	}
	wxCommandEvent ev;
	OnAction(ev);
}
frmRestore::frmRestore(frmMain *_form, pgObject *obj) : ExternProcessDialog(form)
{
    object=obj;

    if (object->GetMetaType() == PGM_SERVER)
        server = (pgServer*)object;
    else
        server=object->GetDatabase()->GetServer();

    form=_form;

    wxWindowBase::SetFont(settings->GetSystemFont());
    LoadResource(_form, wxT("frmRestore"));
    RestorePosition();

    SetTitle(wxString::Format(_("Restore %s %s"),
        object->GetTranslatedTypeName().c_str(),
        object->GetQuotedFullIdentifier().c_str()));

    if (object->GetConnection()->EdbMinimumVersion(8,0))
        restoreExecutable=edbRestoreExecutable;
    else if (object->GetConnection()->GetIsGreenplum())
        restoreExecutable=gpRestoreExecutable;
    else
        restoreExecutable=pgRestoreExecutable;

    if (object->GetMetaType() != PGM_DATABASE)
    {
        chkOnlySchema->SetValue(object->GetMetaType() == PGM_FUNCTION
                             || object->GetMetaType() == PGM_INDEX
                             || object->GetMetaType() == PGM_TRIGGER);
        chkOnlyData->SetValue(object->GetMetaType() == PGM_TABLE
                             || object->GetMetaType() == GP_PARTITION);
        if (object->GetMetaType() != PGM_SCHEMA)
        {
            chkOnlyData->Disable();
            chkOnlySchema->Disable();
        }
        if (object->GetMetaType() == PGM_FUNCTION)
        {
            chkClean->SetValue(true);
            chkClean->Disable();
        }
        btnView->Disable();
    }

    wxString val;
    settings->Read(wxT("frmRestore/LastFile"), &val, wxEmptyString);
    txtFilename->SetValue(val);

    // Icon
    SetIcon(wxIcon(restore_xpm));

    txtMessages = CTRL_TEXT("txtMessages");
    txtMessages->SetMaxLength(0L);
    btnOK->Disable();
    filenameValid=false;

    if (!server->GetPasswordIsStored())
        environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName());

    if (!pgAppMinimumVersion(restoreExecutable, 8, 4))
    {
        chkNoTablespaces->Disable();
        chkSingleXact->Disable();
        txtNumberOfJobs->Disable();
    }
    if (!pgAppMinimumVersion(restoreExecutable, 8, 2))
    {
        chkNoDataForFailedTables->Disable();
    }
    if (!pgAppMinimumVersion(restoreExecutable, 8, 0))
    {
        chkExitOnError->Disable();
    }

    wxCommandEvent ev;
    OnChangeName(ev);
}
Exemplo n.º 5
0
frmBackup::frmBackup(frmMain *form, pgObject *obj) : ExternProcessDialog(form)
{
	object = obj;

	SetFont(settings->GetSystemFont());
	LoadResource(form, wxT("frmBackup"));
	RestorePosition();

	SetTitle(object->GetTranslatedMessage(BACKUPTITLE));

	if (object->GetConnection()->EdbMinimumVersion(8, 0))
		backupExecutable = edbBackupExecutable;
	else if (object->GetConnection()->GetIsGreenplum())
		backupExecutable = gpBackupExecutable;
	else
		backupExecutable = pgBackupExecutable;

	canBlob = (obj->GetMetaType() == PGM_DATABASE);
	chkBlobs->SetValue(canBlob);
	chkDisableDollar->Enable(obj->GetConnection()->BackendMinimumVersion(7, 5));

	wxString val;
	settings->Read(wxT("frmBackup/LastFile"), &val, wxEmptyString);
	txtFilename->SetValue(val);

	pgServer *server = object->GetServer();

	if (!server->GetPasswordIsStored())
		environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName());

	if (server->GetSSLRootCert() != wxEmptyString)
		environment.Add(wxT("PGSSLROOTCERT=") + server->GetSSLRootCert());

	if (server->GetSSLCert() != wxEmptyString)
		environment.Add(wxT("PGSSLCERT=") + server->GetSSLCert());

	if (server->GetSSLKey() != wxEmptyString)
		environment.Add(wxT("PGSSLKEY=") + server->GetSSLKey());

	if (server->GetSSLCrl() != wxEmptyString)
		environment.Add(wxT("PGSSLCRL=") + server->GetSSLCrl());

	// Icon
	SetIcon(*backup_png_ico);

	// fix translation problem
	wxString dollarLabel = wxGetTranslation(_("$$ quoting"));
	dollarLabel.Replace(wxT("$$"), wxT("$"));
	chkDisableDollar->SetLabel(dollarLabel);
	chkDisableDollar->SetSize(chkDisableDollar->GetBestSize());

	txtMessages = CTRL_TEXT("txtMessages");
	// Note that under GTK+, SetMaxLength() function may only be used with single line text controls.
	// (see http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlsetmaxlength)
#ifndef __WXGTK__
	txtMessages->SetMaxLength(0L);
#endif
	btnOK->Disable();

	long encNo = 0;
	wxString encStr;
	cbEncoding->Append(wxT(""));
	do
	{
		encStr = object->GetConnection()->ExecuteScalar(
		             wxT("SELECT pg_encoding_to_char(") + NumToStr(encNo) + wxT(")"));
		if (pgConn::IsValidServerEncoding(encNo) && !encStr.IsEmpty())
			cbEncoding->Append(encStr);

		encNo++;
	}
	while (!encStr.IsEmpty());

	cbEncoding->SetSelection(0);

	wxString i18ndb = _("Database");
	wxTreeItemId db = ctvObjects->AddRoot(i18ndb + wxT(" ") + object->GetDatabase()->GetName(), 1);
	bool checked;

	wxString query = wxT("SELECT nspname, relname ")
	                 wxT("FROM pg_namespace n ")
	                 wxT("LEFT JOIN pg_class c ON n.oid=c.relnamespace AND relkind='r' ")
	                 wxT("WHERE nspname NOT LIKE E'pg\\\\_%' AND nspname <> 'information_schema' ");
	if (!object->GetDatabase()->GetSchemaRestriction().IsEmpty())
		query += wxT("AND nspname IN (") + object->GetDatabase()->GetSchemaRestriction() + wxT(")");
	query += wxT("ORDER BY nspname, relname");

	pgSet *objects = object->GetDatabase()->ExecuteSet(query);

	if (objects)
	{
		wxString currentSchema = wxT("");
		wxTreeItemId currentSchemaNode;
		while (!objects->Eof())
		{
			if (currentSchema != objects->GetVal(wxT("nspname")))
			{
				currentSchema = objects->GetVal(wxT("nspname"));
				if (object->GetMetaType() == PGM_SCHEMA)
				{
					checked = ((pgSchema *)object)->GetIdentifier() == currentSchema;
				}
				else
				{
					if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION)
					{
						checked = ((pgTable *)object)->GetSchema()->GetIdentifier() == currentSchema
						          || (object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION);
					}
					else
					{
						checked = object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION;
					}
				}
				currentSchemaNode = ctvObjects->AppendItem(db, currentSchema, checked ? 1 : 0);
			}
			if (!objects->GetVal(wxT("relname")).IsNull())
			{
				if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION)
				{
					checked = ((pgTable *)object)->GetSchema()->GetIdentifier() == currentSchema
					          && ((pgTable *)object)->GetIdentifier() == objects->GetVal(wxT("relname"));
				}
				else
				{
					if (object->GetMetaType() == PGM_SCHEMA)
					{
						checked = ((pgSchema *)object)->GetIdentifier() == currentSchema;
					}
					else
					{
						if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION)
						{
							checked = ((pgTable *)object)->GetSchema()->GetIdentifier() == currentSchema
							          || (object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION);
						}
						else
						{
							checked = object->GetMetaType() != PGM_TABLE && object->GetMetaType() != GP_PARTITION;
						}
					}
				}
				ctvObjects->AppendItem(currentSchemaNode, objects->GetVal(wxT("relname")), checked ? 1 : 0);
			}
			objects->MoveNext();
		}
		ctvObjects->ExpandAll();

		delete objects;
	}

	if (!pgAppMinimumVersion(backupExecutable, 9, 3))
	{
		txtNumberOfJobs->Disable();
	}
	if (!pgAppMinimumVersion(backupExecutable, 9, 2))
	{
		chkSectionPreData->Disable();
		chkSectionData->Disable();
		chkSectionPostData->Disable();
	}
	if (!pgAppMinimumVersion(backupExecutable, 9, 1))
	{
		chkForceQuoteForIdent->Disable();
		chkNoUnloggedTableData->Disable();
	}
	if (!pgAppMinimumVersion(backupExecutable, 8, 4))
	{
		chkNoTablespaces->Disable();
		cbRolename->Disable();
	}
	else
	{
		// Available rolenames
		if (object->GetServer()->GetConnection()->BackendMinimumVersion(8, 1))
		{
			pgSetIterator set(object->GetServer()->GetConnection(),
			                  wxT("SELECT DISTINCT rolname\n")
			                  wxT("FROM pg_roles db\n")
			                  wxT("ORDER BY rolname"));

			cbRolename->Append(wxEmptyString);

			while(set.RowsLeft())
				cbRolename->Append(set.GetVal(wxT("rolname")));

			cbRolename->SetValue(object->GetServer()->GetRolename());
			cbRolename->Enable(true);
		}
		else
			cbRolename->Disable();
	}
	if (!pgAppMinimumVersion(backupExecutable, 8, 1))
	{
		cbEncoding->Disable();
	}

	cbFormat->Append(_("Custom"));
	cbFormat->Append(_("Tar"));
	cbFormat->Append(_("Plain"));
	cbFormat->SetSelection(0);

	if (pgAppMinimumVersion(backupExecutable, 9, 1))
		cbFormat->Append(_("Directory"));

	wxCommandEvent ev;
	OnChangePlain(ev);
}
Exemplo n.º 6
0
frmBackupGlobals::frmBackupGlobals(frmMain *form, pgObject *obj) : ExternProcessDialog(form)
{
	object = obj;

	wxWindowBase::SetFont(settings->GetSystemFont());
	LoadResource(form, wxT("frmBackupGlobals"));
	RestorePosition();

	SetTitle(object->GetTranslatedMessage(BACKUPGLOBALS));

	if (object->GetConnection()->EdbMinimumVersion(8, 0))
		backupExecutable = edbBackupAllExecutable;
	else if (object->GetConnection()->GetIsGreenplum())
		backupExecutable = gpBackupAllExecutable;
	else
		backupExecutable = pgBackupAllExecutable;

	wxString val;
	settings->Read(wxT("frmBackupGlobals/LastFile"), &val, wxEmptyString);
	txtFilename->SetValue(val);

	pgServer *server;
	if (object->GetMetaType() == PGM_SERVER)
		server = (pgServer *)object;
	else
		server = object->GetDatabase()->GetServer();

	bool roles_supported = pgAppMinimumVersion(backupExecutable, 8, 4) && server->GetConnection()->BackendMinimumVersion(8, 1);
	cbRolename->Enable(roles_supported);

	if (roles_supported)
	{
		// Collect the available rolenames
		pgSetIterator set(server->GetConnection(),
		                  wxT("SELECT DISTINCT rolname\n")
		                  wxT("FROM pg_roles db\n")
		                  wxT("ORDER BY rolname"));

		cbRolename->Append(wxEmptyString);

		while(set.RowsLeft())
			cbRolename->Append(set.GetVal(wxT("rolname")));

		cbRolename->SetValue(server->GetRolename());
	}

	if (!server->GetPasswordIsStored())
		environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName());

	// Icon
	SetIcon(*backup_png_ico);

	txtMessages = CTRL_TEXT("txtMessages");
	// Note that under GTK+, SetMaxLength() function may only be used with single line text controls.
	// (see http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlsetmaxlength)
#ifndef __WXGTK__
	txtMessages->SetMaxLength(0L);
#endif
	btnOK->Disable();

	if (!pgAppMinimumVersion(backupExecutable, 9, 1))
	{
		chkForceQuoteForIdent->Disable();
	}

	wxCommandEvent ev;
	OnChange(ev);
}
Exemplo n.º 7
0
frmBackupServer::frmBackupServer(frmMain *form, pgObject *obj) : ExternProcessDialog(form)
{
	object = obj;

	wxWindowBase::SetFont(settings->GetSystemFont());
	LoadResource(form, wxT("frmBackupServer"));
	RestorePosition();

	SetTitle(object->GetTranslatedMessage(BACKUPSERVERTITLE));

	pgServer *server = (pgServer *)object;
	if (server->GetConnection()->EdbMinimumVersion(8, 0))
		backupExecutable = edbBackupAllExecutable;
	else if (server->GetConnection()->GetIsGreenplum())
		backupExecutable = gpBackupAllExecutable;
	else
		backupExecutable = pgBackupAllExecutable;

	wxString val;
	settings->Read(wxT("frmBackupServer/LastFile"), &val, wxEmptyString);
	txtFilename->SetValue(val);

	bool roles_supported = pgAppMinimumVersion(backupExecutable, 8, 4) && server->GetConnection()->BackendMinimumVersion(8, 1);
	cbRolename->Enable(roles_supported);

	if (roles_supported)
	{
		// Collect the available rolenames
		pgSetIterator set(server->GetConnection(),
		                  wxT("SELECT DISTINCT rolname\n")
		                  wxT("FROM pg_roles db\n")
		                  wxT("ORDER BY rolname"));

		cbRolename->Append(wxEmptyString);

		while(set.RowsLeft())
			cbRolename->Append(set.GetVal(wxT("rolname")));

		cbRolename->SetValue(server->GetRolename());
	}

	if (!server->GetPasswordIsStored())
		environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + server->GetConnection()->GetSslModeName());

	// Icon
	SetIcon(*backup_png_ico);

	txtMessages = CTRL_TEXT("txtMessages");
	txtMessages->SetMaxLength(0L);
	btnOK->Disable();

	if (!pgAppMinimumVersion(backupExecutable, 9, 1))
	{
		chkForceQuoteForIdent->Disable();
	}

	wxCommandEvent ev;
	OnChange(ev);
}
frmBackup::frmBackup(frmMain *form, pgObject *obj) : ExternProcessDialog(form)
{
    object=obj;

    wxWindowBase::SetFont(settings->GetSystemFont());
    LoadResource(form, wxT("frmBackup"));
    RestorePosition();

    SetTitle(wxString::Format(_("Backup %s %s"), object->GetTranslatedTypeName().c_str(), object->GetFullIdentifier().c_str()));

    if (object->GetConnection()->EdbMinimumVersion(8,0))
        backupExecutable=edbBackupExecutable;
    else if (object->GetConnection()->GetIsGreenplum())
        backupExecutable=gpBackupExecutable;
    else
        backupExecutable=pgBackupExecutable;

    canBlob = (obj->GetMetaType() == PGM_DATABASE);
    chkBlobs->SetValue(canBlob);
    chkDisableDollar->Enable(obj->GetConnection()->BackendMinimumVersion(7, 5));

    wxString val;
    settings->Read(wxT("frmBackup/LastFile"), &val, wxEmptyString);
    txtFilename->SetValue(val);

    if (!object->GetDatabase()->GetServer()->GetPasswordIsStored())
        environment.Add(wxT("PGPASSWORD="******"PGSSLMODE=") + object->GetServer()->GetConnection()->GetSslModeName());

    // Icon
    SetIcon(wxIcon(backup_xpm));

    // fix translation problem
    wxString dollarLabel=wxGetTranslation(_("$$ quoting"));
    dollarLabel.Replace(wxT("$$"), wxT("$"));
    chkDisableDollar->SetLabel(dollarLabel);
    chkDisableDollar->SetSize(chkDisableDollar->GetBestSize());

    txtMessages = CTRL_TEXT("txtMessages");
    txtMessages->SetMaxLength(0L);
    btnOK->Disable();

    long encNo=0;
    wxString encStr;
    cbEncoding->Append(wxT(""));
    do
    {
        encStr=object->GetConnection()->ExecuteScalar(
            wxT("SELECT pg_encoding_to_char(") + NumToStr(encNo) + wxT(")"));
        if (pgConn::IsValidServerEncoding(encNo) && !encStr.IsEmpty())
            cbEncoding->Append(encStr);

        encNo++;
    }
    while (!encStr.IsEmpty());

    cbEncoding->SetSelection(0);

    wxString i18ndb = _("Database");
    wxTreeItemId db = ctvObjects->AddRoot(i18ndb + wxT(" ") + object->GetDatabase()->GetName(), 1);
    bool checked;

    wxString query = wxT("SELECT nspname, relname ")
      wxT("FROM pg_namespace n ")
      wxT("LEFT JOIN pg_class c ON n.oid=c.relnamespace AND relkind='r' ")
      wxT("WHERE nspname NOT LIKE 'pg_%' AND nspname <> 'information_schema' ");
    if (!object->GetDatabase()->GetSchemaRestriction().IsEmpty())
        query += wxT("AND nspname IN (") + object->GetDatabase()->GetSchemaRestriction() + wxT(")");
    query += wxT("ORDER BY nspname, relname");

    pgSet *objects = object->GetDatabase()->ExecuteSet(query);

    if (objects)
    {
        wxString currentSchema = wxT("");
        wxTreeItemId currentSchemaNode;
        while (!objects->Eof())
        {
            if (currentSchema != objects->GetVal(wxT("nspname")))
            {
                currentSchema = objects->GetVal(wxT("nspname"));
                if (object->GetMetaType() == PGM_SCHEMA)
                {
                    checked = ((pgSchema*)object)->GetIdentifier() == currentSchema;
                }
                else
                {
                    checked = true;
                }
                currentSchemaNode = ctvObjects->AppendItem(db, currentSchema, checked? 1:0);
            }
            if (!objects->GetVal(wxT("relname")).IsNull())
            {
                if (object->GetMetaType() == PGM_TABLE || object->GetMetaType() == GP_PARTITION) 
                {
                    checked = ((pgTable*)object)->GetSchema()->GetIdentifier() == currentSchema
                           && ((pgTable*)object)->GetIdentifier() == objects->GetVal(wxT("relname"));
                }
                else
                {
                    if (object->GetMetaType() == PGM_SCHEMA)
                    {
                        checked = ((pgSchema*)object)->GetIdentifier() == currentSchema;
                    }
                    else
                    {
                        checked = true;
                    }
                }
                ctvObjects->AppendItem(currentSchemaNode, objects->GetVal(wxT("relname")), checked? 1:0);
            }
            objects->MoveNext();
        }
        ctvObjects->ExpandAll();

        delete objects;
    }

    if (!pgAppMinimumVersion(backupExecutable, 8, 4))
    {
        chkNoTablespaces->Disable();
    }
    if (!pgAppMinimumVersion(backupExecutable, 8, 1))
    {
        cbEncoding->Disable();
    }

    wxCommandEvent ev;
    OnChangePlain(ev);
}