Implement refreshTables. (firebird-sdbc)

Change-Id: Ie2fe0c92c3cb1eb0ae68cdea8ad709021a8d8392
diff --git a/connectivity/source/drivers/firebird/Catalog.cxx b/connectivity/source/drivers/firebird/Catalog.cxx
index 552889a..0f84c94 100644
--- a/connectivity/source/drivers/firebird/Catalog.cxx
+++ b/connectivity/source/drivers/firebird/Catalog.cxx
@@ -8,11 +8,15 @@
 */

#include "Catalog.hxx"
#include "Tables.hxx"

using namespace ::connectivity::firebird;

using namespace ::rtl;

using namespace ::com::sun::star;
using namespace ::com::sun::star::sdbc;
using namespace ::com::sun::star::uno;

Catalog::Catalog(const uno::Reference< XConnection >& rConnection):
    OCatalog(rConnection),
@@ -23,8 +27,24 @@ Catalog::Catalog(const uno::Reference< XConnection >& rConnection):
//----- OCatalog -------------------------------------------------------------
void Catalog::refreshTables()
{
    // TODO: implement me.
    // Sets m_pTables (OCatalog)
    // TODO: set type -- currenty we also get system tables...
    uno::Reference< XResultSet > xTables = m_xMetaData->getTables(Any(),
                                                            "%",
                                                            "%",
                                                            Sequence< OUString >());

    TStringVector aTableNames;

    fillNames(xTables, aTableNames);

    if (!m_pTables)
        m_pTables = new Tables(m_xConnection->getMetaData(),
                               *this,
                               m_aMutex,
                               aTableNames);
    else
        m_pTables->reFill(aTableNames);

}

void Catalog::refreshViews()
diff --git a/connectivity/source/drivers/firebird/Tables.cxx b/connectivity/source/drivers/firebird/Tables.cxx
index be3d231..8828b972 100644
--- a/connectivity/source/drivers/firebird/Tables.cxx
+++ b/connectivity/source/drivers/firebird/Tables.cxx
@@ -28,11 +28,12 @@ using namespace ::com::sun::star::uno;

Tables::Tables(const uno::Reference< XDatabaseMetaData >& rMetaData,
               OWeakObject& rParent,
               Mutex& rMutex) :
               Mutex& rMutex,
               TStringVector& rNames) :
    OCollection(rParent,
                sal_True,
                rMutex,
                TStringVector(1, "TABLE")), // std::vector with 1 element
                rNames),
    m_rMutex(rMutex),
    m_xMetaData(rMetaData)
{
diff --git a/connectivity/source/drivers/firebird/Tables.hxx b/connectivity/source/drivers/firebird/Tables.hxx
index 2f21cd6..c025e1b 100644
--- a/connectivity/source/drivers/firebird/Tables.hxx
+++ b/connectivity/source/drivers/firebird/Tables.hxx
@@ -41,7 +41,8 @@ namespace connectivity
        public:
            Tables(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& rMetaData,
                   ::cppu::OWeakObject& rParent,
                   ::osl::Mutex& rMutex);
                   ::osl::Mutex& rMutex,
                   ::connectivity::TStringVector& rNames);

            // TODO: we should also implement XDataDescriptorFactory, XRefreshable,
            // XAppend,  etc., but all are optional.