From: <ibr...@us...> - 2012-09-07 15:43:41
|
Revision: 4455 http://tora.svn.sourceforge.net/tora/?rev=4455&view=rev Author: ibre5041 Date: 2012-09-07 15:43:34 +0000 (Fri, 07 Sep 2012) Log Message: ----------- Modified Paths: -------------- branches/tora3/src/connection/tooraclefind.cpp branches/tora3/src/connection/toqmysqlquery.cpp branches/tora3/src/core/main.cpp branches/tora3/src/core/tologger.h branches/tora3/src/core/toresult.cpp branches/tora3/src/core/toresultcols.cpp branches/tora3/src/core/toresultcols.h branches/tora3/src/core/toresultgrants.cpp branches/tora3/src/core/toresultgrants.h branches/tora3/src/core/toresultitem.cpp branches/tora3/src/core/toresultitem.h branches/tora3/src/tools/tobrowser.cpp branches/tora3/src/tools/tobrowserschemawidget.cpp branches/tora3/src/tools/tobrowsertriggerwidget.cpp Modified: branches/tora3/src/connection/tooraclefind.cpp =================================================================== --- branches/tora3/src/connection/tooraclefind.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/connection/tooraclefind.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -76,8 +76,8 @@ virtual QList<ConnectionProvirerParams> find(); /** - Load connection providers library - */ + * Load connection providers library + */ virtual void load(ConnectionProvirerParams const&); protected: @@ -116,6 +116,7 @@ << QString::fromAscii("E:\\oracle\\instantclient*") << QString::fromAscii("D:\\devel\\instantclient*") #endif + << QDir::currentPath() ; QList<QString> const toOracleInstantFinder::m_libname = QList<QString>() Modified: branches/tora3/src/connection/toqmysqlquery.cpp =================================================================== --- branches/tora3/src/connection/toqmysqlquery.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/connection/toqmysqlquery.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -172,60 +172,60 @@ QString mysqlQuery::parseReorder(const QString &str) { - if (str.toUpper().startsWith("TOAD")) - { - std::list<int> order; - int num = -1; - int i; - for (i = 4; i < str.length(); i++) - { - char c = str.at(i).toAscii(); - if (isspace(c)) - ; - else if (isdigit(c)) - { - if (num < 0) - num = 0; - num *= 10; - num += c - '0'; - } - else if (c == '*') - { - if (num >= 0) - throw QString("Invalid column selection, number before *"); - if (c == '*') - { - order.insert(order.end(), -1); - do - { - i++; - } - while (str.at(i).isSpace()); - break; - } - } - else - { - if (num < 0) - throw QString("Invalid column selection, number missing"); - order.insert(order.end(), num); - num = -1; - if (c != ',') - break; - } - } - ColumnOrderSize = order.size(); - if (ColumnOrderSize == 0) - throw QString("Missing column selection"); - delete[] ColumnOrder; - ColumnOrder = new int[ColumnOrderSize]; - int pos = 0; - for (std::list<int>::iterator j = order.begin(); j != order.end(); j++, pos++) - ColumnOrder[pos] = *j; + //if (str.toUpper().startsWith("TOAD")) + //{ + // std::list<int> order; + // int num = -1; + // int i; + // for (i = 4; i < str.length(); i++) + // { + // char c = str.at(i).toAscii(); + // if (isspace(c)) + // ; + // else if (isdigit(c)) + // { + // if (num < 0) + // num = 0; + // num *= 10; + // num += c - '0'; + // } + // else if (c == '*') + // { + // if (num >= 0) + // throw QString("Invalid column selection, number before *"); + // if (c == '*') + // { + // order.insert(order.end(), -1); + // do + // { + // i++; + // } + // while (str.at(i).isSpace()); + // break; + // } + // } + // else + // { + // if (num < 0) + // throw QString("Invalid column selection, number missing"); + // order.insert(order.end(), num); + // num = -1; + // if (c != ',') + // break; + // } + // } + // ColumnOrderSize = order.size(); + // if (ColumnOrderSize == 0) + // throw QString("Missing column selection"); + // delete[] ColumnOrder; + // ColumnOrder = new int[ColumnOrderSize]; + // int pos = 0; + // for (std::list<int>::iterator j = order.begin(); j != order.end(); j++, pos++) + // ColumnOrder[pos] = *j; - return str.mid(i); - } - else + // return str.mid(i); + //} + //else return str; } Modified: branches/tora3/src/core/main.cpp =================================================================== --- branches/tora3/src/core/main.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/main.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -155,6 +155,8 @@ qApp->processEvents(); Q_FOREACH(QString path, plugins) { + label->setText(qApp->translate("main", "Loading plugin %1").arg(path)); + qApp->processEvents(); bool success = false; try { QLibrary library(path); @@ -162,7 +164,6 @@ } TOCATCH; - progress->setValue(progress->value()+1); if (success) { label->setText(qApp->translate("main", "Loaded plugin %1").arg(path)); @@ -171,6 +172,7 @@ label->setText(qApp->translate("main", "Failed loading plugin %1").arg(path)); TLOG(5, toDecoratorNC, __HERE__) << "Failed loading plugin " << path << std::endl; } + progress->setValue(progress->value()+1); qApp->processEvents(); } @@ -178,6 +180,8 @@ for(std::vector<std::string>::const_iterator i = finders.begin(); i != finders.end(); ++i) { QString finderName; + label->setText(qApp->translate("main", "Looking for %1").arg(finderName)); + qApp->processEvents(); TLOG(5, toDecoratorNC, __HERE__) << "Looking for client: " << *i << std::endl; try { std::auto_ptr<toConnectionProviderFinder> finder = ConnectionProviderFinderFactory::Instance().create(*i, 0); @@ -187,7 +191,6 @@ } TOCATCH; progress->setValue(progress->value()+1); - label->setText(qApp->translate("main", "Looking for %1").arg(finderName)); qApp->processEvents(); } @@ -203,10 +206,11 @@ if (oHome != pHome) continue; try { + label->setText(qApp->translate("main", "Loading provider %1").arg(providerName)); + qApp->processEvents(); TLOG(5, toDecoratorNC, __HERE__) << "Loading: " << params.value("PATH").toString() << std::endl; toConnectionProviderRegistrySing::Instance().load(params); progress->setValue(progress->value()+1); - label->setText(qApp->translate("main", "Loaded provider %1").arg(providerName)); qApp->processEvents(); break; } @@ -222,11 +226,12 @@ if ( toConnectionProviderRegistrySing::Instance().providers().contains(providerName)) continue; try { + label->setText(qApp->translate("main", "Loading provider %1").arg(providerName)); + qApp->processEvents(); TLOG(5, toDecoratorNC, __HERE__) << "Loading: " << params.value("PATH").toString() << std::endl; QString providerName = params.value("PROVIDER").toString(); toConnectionProviderRegistrySing::Instance().load(params); progress->setValue(progress->value()+1); - label->setText(qApp->translate("main", "Loaded provider %1").arg(providerName)); qApp->processEvents(); break; } TOCATCH; @@ -238,9 +243,10 @@ if (toConnectionProviderRegistrySing::Instance().providers().contains(providerName)) continue; try { + label->setText(qApp->translate("main", "Loading provider %1").arg(providerName)); + qApp->processEvents(); toConnectionProviderRegistrySing::Instance().load(provider); progress->setValue(progress->value()+1); - label->setText(qApp->translate("main", "Loaded provider %1").arg(providerName)); qApp->processEvents(); } TOCATCH; Modified: branches/tora3/src/core/tologger.h =================================================================== --- branches/tora3/src/core/tologger.h 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/tologger.h 2012-09-07 15:43:34 UTC (rev 4455) @@ -130,7 +130,7 @@ DOCKLET_LOG(5); // connection provider finder DISABLE_LOG(6); // DOCKLET_LOG(7); // -DISABLE_LOG(8); // +DOCKLET_LOG(8); // DISABLE_LOG(9); // //////////////////////////////////////////////////////////////////////////////// @@ -159,7 +159,7 @@ case 5: return templ_get_log_ownthread< 5>(NULL); // logger docket log case 6: return templ_get_log_ownthread< 6>(NULL); // not used yet case 7: return templ_get_log_ownthread< 7>(NULL); // toEventQuery - case 8: return templ_get_log_ownthread< 8>(NULL); // not used yet + case 8: return templ_get_log_ownthread< 8>(NULL); // browser, other tools case 9: return templ_get_log_ownthread< 9>(NULL); // not used yet default: assert( false); Modified: branches/tora3/src/core/toresult.cpp =================================================================== --- branches/tora3/src/core/toresult.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresult.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -179,9 +179,9 @@ setSQL(toSQL::string(sql, connection())); setHandle(true); } - catch (...) + catch (QString const& e) { - TLOG(1, toDecorator, __HERE__) << " Ignored exception." << std::endl; + TLOG(8, toDecorator, __HERE__) << e << std::endl; setHandle(false); } } Modified: branches/tora3/src/core/toresultcols.cpp =================================================================== --- branches/tora3/src/core/toresultcols.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresultcols.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -423,12 +423,26 @@ toResultCols::toResultCols(QWidget *parent, const char *name, Qt::WFlags f) : QWidget(parent, f) - , SQL(SQLTableColumns) + , SQL(SQLTableColumns) { + if (name) + setObjectName(name); + setup(); +} +toResultCols::toResultCols(toSQL const& sql, QWidget *parent, const char *name, Qt::WFlags f) + : QWidget(parent, f) + , SQL(sql) // SQL(SQLTableColumns) +{ if (name) setObjectName(name); + setup(); +} +void toResultCols::setup() +{ + toResult::setSQL(SQL); + QVBoxLayout *vbox = new QVBoxLayout; QWidget *box = new QWidget(this); QHBoxLayout *hbox = new QHBoxLayout; @@ -465,7 +479,7 @@ Columns->setDisableTab(false); Columns->setReadAll(true); vbox->addWidget(Columns); - Columns->setSQL(SQLTableColumns); + Columns->setSQL(SQL); ColumnComments = NULL; Modified: branches/tora3/src/core/toresultcols.h =================================================================== --- branches/tora3/src/core/toresultcols.h 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresultcols.h 2012-09-07 15:43:34 UTC (rev 4455) @@ -73,7 +73,7 @@ * comment widgets */ //QString TableName; /* quoted owner and table */ toCache::ObjectRef Object; - toSQL &SQL; + toSQL const &SQL; public: /** * Create the widget. @@ -84,6 +84,8 @@ */ toResultCols(QWidget *parent, const char *name = NULL, Qt::WFlags f = 0); + toResultCols(toSQL const& sql, QWidget *parent, const char *name = NULL, Qt::WFlags f = 0); + /** * Reimplemented abstract method */ @@ -104,11 +106,11 @@ /** Set the SQL statement of this list. This will also affect @ref Name. * @param sql SQL containing statement. */ - void setSQL(toSQL const& sql) - { - toResult::setSQL(sql); - SQL = sql; - } +// void setSQL(toSQL const& sql) +// { +// toResult::setSQL(sql); +// SQL = sql; +// } void changeObject(toCache::ObjectRef const&o) @@ -125,6 +127,8 @@ private slots: void editComment(bool val); +private: + void setup(); }; #endif Modified: branches/tora3/src/core/toresultgrants.cpp =================================================================== --- branches/tora3/src/core/toresultgrants.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresultgrants.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -57,10 +57,10 @@ " ORDER BY Privilege,Grantee", ""); -toResultGrants::toResultGrants(QWidget * parent) +toResultGrants::toResultGrants(QWidget * parent, const char *name) : toResultTableView(parent) { - setObjectName("toBrowserGrants"); + setObjectName(name); setReadAll(true); setSQL(SQLAnyGrants); Modified: branches/tora3/src/core/toresultgrants.h =================================================================== --- branches/tora3/src/core/toresultgrants.h 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresultgrants.h 2012-09-07 15:43:34 UTC (rev 4455) @@ -57,7 +57,7 @@ Q_OBJECT public: - toResultGrants(QWidget * parent = 0); + toResultGrants(QWidget * parent = 0, const char *name = "toBrowserGrants"); }; #endif Modified: branches/tora3/src/core/toresultitem.cpp =================================================================== --- branches/tora3/src/core/toresultitem.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresultitem.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -152,17 +152,19 @@ } toResultItem::toResultItem(int num, QWidget *parent, const char *name) - : QScrollArea(parent), DataFont(QFont()) + : QScrollArea(parent) + , DataFont(QFont()) { setObjectName(name); setup(num, false); } -toResultItem::toResultItem(QWidget *parent) - : QScrollArea(parent), DataFont(QFont()) +toResultItem::toResultItem(QWidget *parent, const char *name, int num) + : QScrollArea(parent) + , DataFont(QFont()) { - setObjectName("toResultItem"); - setup(2, false); + setObjectName(name); + setup(num, false); } toResultItem::~toResultItem() Modified: branches/tora3/src/core/toresultitem.h =================================================================== --- branches/tora3/src/core/toresultitem.h 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/core/toresultitem.h 2012-09-07 15:43:34 UTC (rev 4455) @@ -78,7 +78,7 @@ */ toResultItem(int num, QWidget *parent, const char *name = NULL); //! Dummy constructor for qt Designer - toResultItem(QWidget *parent = 0); + toResultItem(QWidget *parent = 0, const char *name = "toResultItem", int num = 2); /** Destroy object */ ~toResultItem(void); Modified: branches/tora3/src/tools/tobrowser.cpp =================================================================== --- branches/tora3/src/tools/tobrowser.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/tools/tobrowser.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -1431,7 +1431,6 @@ { try { - Schema->refresh(); // TODO DELETE - it's also called from connectionChanged mainTab_currentChanged(m_mainTab->currentIndex(), NO_USE_CACHE); // just a test do now requery the DB // true); } TOCATCH @@ -1439,53 +1438,61 @@ void toBrowser::changeConnection(void) { - m_mainTab->blockSignals(true); - Schema->refresh(); + try + { + m_mainTab->blockSignals(true); - if ( ! connection().schema().isEmpty() ) - { - // No need to upperize the string. Oracle has it uppercased already, - // mysql nad pgsql require it as lowercase. - Schema->setSelected(connection().schema());//.toUpper()); - } - else if (connection().providerIs("QMYSQL")) - { - Schema->setSelected(connection().database()); - } - else if (connection().providerIs("Oracle") || connection().providerIs("SapDB")) - { - Schema->setSelected(connection().user().toUpper()); - } - else - { - Schema->setSelected(connection().user()); - } + if ( ! connection().schema().isEmpty() ) + { + // No need to upperize the string. Oracle has it uppercased already, + // mysql nad pgsql require it as lowercase. + Schema->setSelected(connection().schema());//.toUpper()); + } + else if (connection().providerIs("QMYSQL")) + { + Schema->setSelected(connection().database()); + } + else if (connection().providerIs("Oracle") || connection().providerIs("SapDB")) + { + Schema->setSelected(connection().user().toUpper()); + } + else + { + Schema->setSelected(connection().user()); + } + Schema->refresh(); - // enable/disable main tabs depending on DB - m_mainTab->clear(); - addTab(tableSplitter, tr("T&ables"), true); - addTab(viewSplitter, tr("&Views"), !connection().providerIs("QMYSQL")); - addTab(indexSplitter, tr("Inde&xes"), true); - addTab(sequenceSplitter, tr("Se&quences"), connection().providerIs("Oracle") || connection().providerIs("PostgreSQL")); - addTab(synonymSplitter, tr("S&ynonyms"), connection().providerIs("Oracle")); + // enable/disable main tabs depending on DB + m_mainTab->clear(); + addTab(tableSplitter, tr("T&ables"), true); + addTab(viewSplitter, tr("&Views"), !connection().providerIs("QMYSQL")); + addTab(indexSplitter, tr("Inde&xes"), true); + addTab(sequenceSplitter, tr("Se&quences"), connection().providerIs("Oracle") || connection().providerIs("PostgreSQL")); + addTab(synonymSplitter, tr("S&ynonyms"), connection().providerIs("Oracle")); - // 2010-03-31 - // Starting with version 5.0 MySQL supports stored functions/procedures - // If TOra is used a lot with older versions of MySQL the "true" parameter - // should be enhanced with a check for MySQL version - addTab(codeSplitter, tr("Cod&e"), true); - addTab(triggerSplitter, tr("Tri&ggers"), - !connection().providerIs("QMYSQL") && !connection().providerIs("PostgreSQL")); - addTab(dblinkSplitter, tr("DBLinks"), connection().providerIs("Oracle")); - addTab(directoriesSplitter, tr("Directories"), connection().providerIs("Oracle")); - addTab(accessSplitter, tr("Access"), connection().providerIs("QMYSQL")); + // 2010-03-31 + // Starting with version 5.0 MySQL supports stored functions/procedures + // If TOra is used a lot with older versions of MySQL the "true" parameter + // should be enhanced with a check for MySQL version + addTab(codeSplitter, tr("Cod&e"), true); + addTab(triggerSplitter, tr("Tri&ggers"), !connection().providerIs("QMYSQL") && !connection().providerIs("PostgreSQL")); + addTab(dblinkSplitter, tr("DBLinks"), connection().providerIs("Oracle")); + addTab(directoriesSplitter, tr("Directories"), connection().providerIs("Oracle")); + addTab(accessSplitter, tr("Access"), connection().providerIs("QMYSQL")); - foreach (toBrowserBaseWidget * w, m_browsersMap.values()) - w->changeConnection(); + foreach (toBrowserBaseWidget * w, m_browsersMap.values()) + w->changeConnection(); - m_mainTab->setCurrentIndex(0); - m_mainTab->blockSignals(false); + m_mainTab->setCurrentIndex(0); + m_mainTab->blockSignals(false); + } + catch(...) + { + m_mainTab->blockSignals(false); + throw; + } + refresh(); } Modified: branches/tora3/src/tools/tobrowserschemawidget.cpp =================================================================== --- branches/tora3/src/tools/tobrowserschemawidget.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/tools/tobrowserschemawidget.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -94,6 +94,10 @@ void toBrowserSchemaTableView::updateCache(void) { + // if toEventQuery creation thrown an exception, Model == NULL + if(this->Model == NULL) + return; + // Update list of objects QList<toCache::CacheEntry*> rows; toCache::CacheEntry *obj; Modified: branches/tora3/src/tools/tobrowsertriggerwidget.cpp =================================================================== --- branches/tora3/src/tools/tobrowsertriggerwidget.cpp 2012-09-07 00:56:16 UTC (rev 4454) +++ branches/tora3/src/tools/tobrowsertriggerwidget.cpp 2012-09-07 15:43:34 UTC (rev 4455) @@ -84,23 +84,17 @@ { setObjectName("toBrowserTriggerWidget"); - infoView = new toResultItem(this); - infoView->setObjectName("infoView"); + infoView = new toResultItem(this, "infoView"); infoView->setSQL(SQLTriggerInfo); - codeView = new toResultField(this); - codeView->setObjectName("codeView"); + codeView = new toResultField(this, "codeView"); codeView->setSQL(SQLTriggerBody); - columnsWidget = new toResultCols(this); - columnsWidget->setObjectName("columnsWidget"); - columnsWidget->setSQL(SQLTriggerCols); + columnsWidget = new toResultCols(SQLTriggerCols, this, "columnsWidget"); - grantsView = new toResultGrants(this); - grantsView->setObjectName("grantsView"); + grantsView = new toResultGrants(this, "grantsView"); dependView = new toResultDepend(this, "dependView"); -// dependView->setObjectName("dependView"); extractView = new toResultExtract(this); extractView->setObjectName("extractView"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |