Re: [pgScript patch] Output + bug fix - Mailing list pgadmin-hackers
From | Magnus Hagander |
---|---|
Subject | Re: [pgScript patch] Output + bug fix |
Date | |
Msg-id | 49B519D7.2090603@hagander.net Whole thread Raw |
In response to | [pgScript patch] Output + bug fix (Mickael Deloison <mdeloison@gmail.com>) |
Responses |
Re: [pgScript patch] Output + bug fix
|
List | pgadmin-hackers |
Hi! Attached is a modified version of this patch, with one question left to solve. Changes are: * Moved the space after the ] in the prefix into the prefix instead, so it doesn't have to be included in every string everywhere. * Made strings translatable (excluding the prefix) * Moved generate_spaces() into misc.cpp as it can be useful in many places outside pgScript, and reimplemented it using Pad() to make it simpler. One question that remains: please see pgsParameterException.cpp line 28. Should that not also use generate_spaces() and be dependent on the prefix length? //Magnus Mickael Deloison wrote: > Hi pgAdmin hackers, > > Here is a patch for pgAdmin. I have finally completed the patch for > the pgScript outputs and am sorry for the delay. > This patch also corrects a bug in pgsPrintStmt.cpp because of a thread > double lock in case of exception. > I have other updates to send but I would like this one to be committed first. > > I have noticed while making this patch that the > pgQueryThread::GetMessagesAndClear() method does not return anything > when my query returns a warning. It did before. > The line 185 is: > conn->SetLastResultError(NULL); > Before, it was: > appendMessage(conn->GetLastError() + wxT("\n")); > When I put this line back to what it was, I do not have the problem > anymore. Is this a problem or is there another way to get the last > warning message? > > Best regards, > Mickael > > > ------------------------------------------------------------------------ > > Index: include/pgscript/pgScript.h =================================================================== --- include/pgscript/pgScript.h (revision 7650) +++ include/pgscript/pgScript.h (working copy) @@ -28,6 +28,12 @@ #include <wx/txtstrm.h> #define pgsOutputStream wxTextOutputStream +const wxString PGSOUTPGSCRIPT (wxT("[PGSCRIPT ] ")); +const wxString PGSOUTEXCEPTION(wxT("[EXCEPTION] ")); +const wxString PGSOUTQUERY (wxT("[QUERY ] ")); +const wxString PGSOUTWARNING (wxT("[WARNING ] ")); +const wxString PGSOUTERROR (wxT("[ERROR ] ")); + /*** LOGGING ***/ #include "utils/sysLogger.h" Index: include/utils/misc.h =================================================================== --- include/utils/misc.h (revision 7650) +++ include/utils/misc.h (working copy) @@ -100,6 +100,8 @@ wxDateTime StrToDateTime(const wxString &value); OID StrToOid(const wxString& value); +wxString generate_spaces(int length); + // nls aware wxString BoolToYesNo(bool value); wxString NumToStr(long value); Index: pgscript/exceptions/pgsArithmeticException.cpp =================================================================== --- pgscript/exceptions/pgsArithmeticException.cpp (revision 7650) +++ pgscript/exceptions/pgsArithmeticException.cpp (working copy) @@ -24,6 +24,7 @@ const wxString pgsArithmeticException::message() const { - return wxString() << wxT("[EXCEPT] Arithmetic Exception - Operation impossible between ") - << m_left << wxT(" and ") << m_right; + return wxString() << PGSOUTEXCEPTION << + wxString::Format(_("Arithmetic Exception - Operation impossible between '%s' and '%s'"), + m_left.c_str(), m_right.c_str()); } Index: pgscript/exceptions/pgsCastException.cpp =================================================================== --- pgscript/exceptions/pgsCastException.cpp (revision 7650) +++ pgscript/exceptions/pgsCastException.cpp (working copy) @@ -24,6 +24,7 @@ const wxString pgsCastException::message() const { - return wxString() << wxT("[EXCEPT] Cast Exception - Cannot convert ") - << m_value << wxT(" to ") << m_type; + return wxString() << PGSOUTEXCEPTION << + wxString::Format(_(" Cast Exception - Cannot convert '%s' to '%s'"), + m_value.c_str(), m_type.c_str()); } Index: pgscript/exceptions/pgsInterruptException.cpp =================================================================== --- pgscript/exceptions/pgsInterruptException.cpp (revision 7650) +++ pgscript/exceptions/pgsInterruptException.cpp (working copy) @@ -24,5 +24,5 @@ const wxString pgsInterruptException::message() const { - return wxT("[EXCEPT] pgScript interrupted"); + return wxString() << PGSOUTEXCEPTION << _("pgScript interrupted"); } Index: pgscript/exceptions/pgsParameterException.cpp =================================================================== --- pgscript/exceptions/pgsParameterException.cpp (revision 7650) +++ pgscript/exceptions/pgsParameterException.cpp (working copy) @@ -25,7 +25,8 @@ const wxString pgsParameterException::message() const { wxString message(m_message); - message.Replace(wxT("\n"), wxT("\n ")); - return wxString() << wxT("[EXCEPT] Parameter Exception - Some parameters ") - << wxT("are invalid:\n>> ") << message; + message.Replace(wxT("\n"), wxT("\n ")); // FIXME: use length of PGSOUTEXCEPTION? + return wxString() << PGSOUTEXCEPTION << + wxString::Format(_("Parameter Exception - Some parameters are invalid:\n>> %s"), + message.c_str()); } Index: pgscript/exceptions/pgsAssertException.cpp =================================================================== --- pgscript/exceptions/pgsAssertException.cpp (revision 7650) +++ pgscript/exceptions/pgsAssertException.cpp (working copy) @@ -24,5 +24,5 @@ const wxString pgsAssertException::message() const { - return wxString() << wxT("[EXCEPT] Assert Exception - ") << m_message; + return wxString() << PGSOUTEXCEPTION << _("Assert Exception - ") << m_message; } Index: pgscript/expressions/pgsExecute.cpp =================================================================== --- pgscript/expressions/pgsExecute.cpp (revision 7650) +++ pgscript/expressions/pgsExecute.cpp (working copy) @@ -116,12 +116,13 @@ { m_app->LockOutput(); - (*m_cout) << wxT("[WRNING] "); + (*m_cout) << PGSOUTWARNING; wxString message(stmt + wxT("\n") + thread .GetMessagesAndClear().Strip(wxString::both)); wxRegEx multilf(wxT("(\n)+")); multilf.ReplaceAll(&message, wxT("\n")); - message.Replace(wxT("\n"), wxT("\n ")); + message.Replace(wxT("\n"), wxT("\n") + + generate_spaces(PGSOUTWARNING.Length() + 1)); (*m_cout) << message << wxT("\n"); m_app->UnlockOutput(); @@ -133,7 +134,7 @@ { m_app->LockOutput(); - (*m_cout) << wxT("[NOTICE] "); + (*m_cout) << PGSOUTQUERY; wxString message(thread.GetMessagesAndClear() .Strip(wxString::both)); if (!message.IsEmpty()) @@ -142,7 +143,8 @@ message = stmt; wxRegEx multilf(wxT("(\n)+")); multilf.ReplaceAll(&message, wxT("\n")); - message.Replace(wxT("\n"), wxT("\n ")); + message.Replace(wxT("\n"), wxT("\n") + + generate_spaces(PGSOUTQUERY.Length() + 1)); (*m_cout) << message << wxT("\n"); m_app->UnlockOutput(); Index: pgscript/statements/pgsPrintStmt.cpp =================================================================== --- pgscript/statements/pgsPrintStmt.cpp (revision 7650) +++ pgscript/statements/pgsPrintStmt.cpp (working copy) @@ -11,6 +11,7 @@ #include "pgAdmin3.h" #include "pgscript/statements/pgsPrintStmt.h" +#include "pgscript/exceptions/pgsException.h" #include "pgscript/utilities/pgsThread.h" #include "pgscript/utilities/pgsUtilities.h" @@ -33,8 +34,20 @@ m_app->LockOutput(); } - m_cout << wxT("[OUTPUT] ") << wx_static_cast(const wxString, - m_var->eval(vars)->value()) << wxT("\n"); + try + { + m_cout << PGSOUTPGSCRIPT << wx_static_cast(const wxString, + m_var->eval(vars)->value()) << wxT("\n"); + } + catch (const pgsException &) + { + if (m_app != 0) + { + m_app->UnlockOutput(); + } + + throw; + } if (m_app != 0) { Index: pgscript/statements/pgsStmtList.cpp =================================================================== --- pgscript/statements/pgsStmtList.cpp (revision 7650) +++ pgscript/statements/pgsStmtList.cpp (working copy) @@ -82,7 +82,7 @@ m_app->LockOutput(); } - m_cout << wxT("[ERROR] Unknown exception:\n") + m_cout << PGSOUTERROR << _("Unknown exception:\n") << wx_static_cast(const wxString, wxString(e.what(), wxConvUTF8)); m_exception_thrown = true; Index: utils/misc.cpp =================================================================== --- utils/misc.cpp (revision 7650) +++ utils/misc.cpp (working copy) @@ -132,6 +132,10 @@ return (OID)strtoul(value.ToAscii(), 0, 10); } +wxString generate_spaces(int length) +{ + return wxString().Pad(length); +} wxString NumToStr(double value) {
pgadmin-hackers by date: