summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-02-05 10:30:48 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-02-05 10:30:48 +0000
commit863122b9adecedfcf35ffac1354ef8a85d5b6827 (patch)
tree0283dbf5597d3782c6bc5ad234d24776738c004a
parent194016b1d7a3f09baeaddfcfdb369adf15f9cff2 (diff)
Resolves: tdf#88825 absent datasource causes exception / abort
::dbtools::ensureRowSetConnection throws on failure, and it can fail of course if the database doesn't exist its not generally useful to throw through a vcl event handler as that just leads back to the dispatch loop. Change-Id: I8e8f4cff06de5684f163ed1b658a8794f54a7df2
-rw-r--r--dbaccess/source/ui/browser/sbagrid.cxx38
1 files changed, 23 insertions, 15 deletions
diff --git a/dbaccess/source/ui/browser/sbagrid.cxx b/dbaccess/source/ui/browser/sbagrid.cxx
index dcd42dc47aeb..632e7fd8e13c 100644
--- a/dbaccess/source/ui/browser/sbagrid.cxx
+++ b/dbaccess/source/ui/browser/sbagrid.cxx
@@ -971,9 +971,9 @@ Reference< XPropertySet > SbaGridControl::getField(sal_uInt16 nModelPos)
else
OSL_FAIL("SbaGridControl::getField getColumns returns NULL or ModelPos is > than count!");
}
- catch (const Exception&)
+ catch (const Exception& e)
{
- OSL_FAIL("SbaGridControl::getField Exception occurred!");
+ SAL_WARN("dbaccess", "SbaGridControl::getField Exception occurred: " << e.Message);
}
return xEmptyReturn;
@@ -984,25 +984,33 @@ bool SbaGridControl::IsReadOnlyDB() const
// assume yes if anything fails
bool bDBIsReadOnly = true;
- // the db is the implemented by the parent of the grid control's model ...
- Reference< XChild > xColumns(GetPeer()->getColumns(), UNO_QUERY);
- if (xColumns.is())
+ try
{
- Reference< XRowSet > xDataSource(xColumns->getParent(), UNO_QUERY);
- ::dbtools::ensureRowSetConnection( xDataSource, getContext(), false ); // NOT SURE ABOUT FALSE
- Reference< XChild > xConn(::dbtools::getConnection(xDataSource),UNO_QUERY);
- if (xConn.is())
+ // the db is the implemented by the parent of the grid control's model ...
+ Reference< XChild > xColumns(GetPeer()->getColumns(), UNO_QUERY);
+ if (xColumns.is())
{
- // ... and the RO-flag simply is implemented by a property
- Reference< XPropertySet > xDbProps(xConn->getParent(), UNO_QUERY);
- if (xDbProps.is())
+ Reference< XRowSet > xDataSource(xColumns->getParent(), UNO_QUERY);
+ ::dbtools::ensureRowSetConnection( xDataSource, getContext(), false ); // NOT SURE ABOUT FALSE
+ Reference< XChild > xConn(::dbtools::getConnection(xDataSource),UNO_QUERY);
+ if (xConn.is())
{
- Reference< XPropertySetInfo > xInfo = xDbProps->getPropertySetInfo();
- if (xInfo->hasPropertyByName(PROPERTY_ISREADONLY))
- bDBIsReadOnly = ::comphelper::getBOOL(xDbProps->getPropertyValue(PROPERTY_ISREADONLY));
+ // ... and the RO-flag simply is implemented by a property
+ Reference< XPropertySet > xDbProps(xConn->getParent(), UNO_QUERY);
+ if (xDbProps.is())
+ {
+ Reference< XPropertySetInfo > xInfo = xDbProps->getPropertySetInfo();
+ if (xInfo->hasPropertyByName(PROPERTY_ISREADONLY))
+ bDBIsReadOnly = ::comphelper::getBOOL(xDbProps->getPropertyValue(PROPERTY_ISREADONLY));
+ }
}
}
}
+ catch (const Exception& e)
+ {
+ SAL_WARN("dbaccess", "SbaGridControl::IsReadOnlyDB Exception occurred: " << e.Message);
+ }
+
return bDBIsReadOnly;
}