summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--connectivity/inc/connectivity/dbmetadata.hxx16
-rw-r--r--connectivity/source/commontools/dbmetadata.cxx38
-rw-r--r--connectivity/source/drivers/dbase/DIndex.cxx76
-rw-r--r--connectivity/source/drivers/dbase/DIndexes.cxx4
-rw-r--r--connectivity/source/drivers/dbase/DTable.cxx36
-rw-r--r--connectivity/source/drivers/dbase/dindexnode.cxx21
-rw-r--r--connectivity/source/drivers/file/FTable.cxx3
-rw-r--r--connectivity/source/drivers/jdbc/DatabaseMetaData.cxx93
-rw-r--r--connectivity/source/drivers/jdbc/JConnection.cxx2
-rw-r--r--connectivity/source/drivers/jdbc/JDriver.cxx43
-rw-r--r--connectivity/source/drivers/jdbc/tools.cxx49
-rw-r--r--connectivity/source/inc/dbase/DIndex.hxx3
-rw-r--r--connectivity/source/inc/dbase/dindexnode.hxx5
-rw-r--r--connectivity/source/inc/file/FTable.hxx1
-rw-r--r--connectivity/source/inc/java/sql/Connection.hxx4
-rw-r--r--connectivity/source/inc/mozaddressbook/MABCatalog.hxx53
-rw-r--r--connectivity/source/inc/mozaddressbook/MABColumnAlias.hxx120
-rw-r--r--connectivity/source/inc/mozaddressbook/MABColumns.hxx56
-rw-r--r--connectivity/source/inc/mozaddressbook/MABConnection.hxx107
-rw-r--r--connectivity/source/inc/mozaddressbook/MABDatabaseMetaData.hxx322
-rw-r--r--connectivity/source/inc/mozaddressbook/MABDatabaseMetaDataHelper.hxx75
-rw-r--r--connectivity/source/inc/mozaddressbook/MABDriver.hxx74
-rw-r--r--connectivity/source/inc/mozaddressbook/MABNSInit.hxx41
-rw-r--r--connectivity/source/inc/mozaddressbook/MABNameMapper.hxx81
-rw-r--r--connectivity/source/inc/mozaddressbook/MABPreparedStatement.hxx57
-rw-r--r--connectivity/source/inc/mozaddressbook/MABQuery.hxx167
-rw-r--r--connectivity/source/inc/mozaddressbook/MABQueryHelper.hxx120
-rw-r--r--connectivity/source/inc/mozaddressbook/MABResultSet.hxx97
-rw-r--r--connectivity/source/inc/mozaddressbook/MABStatement.hxx71
-rw-r--r--connectivity/source/inc/mozaddressbook/MABTable.hxx154
-rw-r--r--connectivity/source/inc/mozaddressbook/MABTables.hxx55
-rw-r--r--connectivity/source/inc/mozaddressbook/MABTypeConverter.hxx63
-rw-r--r--connectivity/source/inc/resource/dbase_res.hrc2
-rw-r--r--connectivity/source/resource/conn_shared_res.src4
-rw-r--r--sfx2/source/dialog/filtergrouping.cxx13
-rw-r--r--svx/source/dialog/macropg.src4
-rw-r--r--svx/source/fmcomp/fmgridcl.cxx91
-rw-r--r--svx/source/fmcomp/gridctrl.src2
-rw-r--r--svx/source/form/fmcontrolbordermanager.cxx4
-rw-r--r--svx/source/form/fmctrler.cxx57
-rw-r--r--svx/source/form/fmpgeimp.cxx301
-rw-r--r--svx/source/form/fmshell.cxx46
-rw-r--r--svx/source/form/fmshimp.cxx7
-rw-r--r--svx/source/form/fmstring.src4
-rw-r--r--svx/source/form/fmvwimp.cxx136
-rw-r--r--svx/source/form/formcontrolling.cxx1198
-rw-r--r--svx/source/inc/fmctrler.hxx2
-rw-r--r--svx/source/inc/fmpgeimp.hxx6
-rw-r--r--svx/source/inc/fmresids.hrc1
-rw-r--r--svx/source/inc/fmtools.hxx4
-rw-r--r--svx/source/inc/formcontrolling.hxx595
-rw-r--r--svx/source/inc/treevisitor.hxx112
-rw-r--r--xmlhelp/source/cxxhelp/inc/qe/ConceptData.hxx0
-rw-r--r--xmlhelp/source/cxxhelp/inc/qe/ContextTables.hxx0
-rw-r--r--xmlhelp/source/cxxhelp/inc/qe/QueryProcessor.hxx0
-rw-r--r--xmlhelp/source/cxxhelp/inc/qe/Search.hxx0
-rw-r--r--xmlhelp/source/cxxhelp/inc/qe/XmlIndex.hxx0
-rw-r--r--xmloff/inc/xmloff/controlpropertyhdl.hxx2
-rw-r--r--xmloff/source/text/txtstyli.cxx3
59 files changed, 1676 insertions, 3025 deletions
diff --git a/connectivity/inc/connectivity/dbmetadata.hxx b/connectivity/inc/connectivity/dbmetadata.hxx
index 8eb822542b..67eb467118 100644
--- a/connectivity/inc/connectivity/dbmetadata.hxx
+++ b/connectivity/inc/connectivity/dbmetadata.hxx
@@ -38,6 +38,11 @@
#include <memory>
#include "connectivity/dbtoolsdllapi.hxx"
+namespace comphelper
+{
+ class ComponentContext;
+}
+
//........................................................................
namespace dbtools
{
@@ -151,6 +156,17 @@ namespace dbtools
*/
bool supportsColumnAliasInOrderBy() const;
+ /** determines whether user administration is supported for the database
+
+ User administration support is controlled by the availability of the XUsersSupplier
+ interface, and it returning a non-NULL users container.
+
+ @param _rContext
+ the component context we operate in. Might be needed to create the
+ css.sdbc.DriverManager instance.
+ */
+ bool supportsUserAdministration( const ::comphelper::ComponentContext& _rContext ) const;
+
/** determines whether in the application UI, empty table folders (aka catalogs/schemas) should be displayed
*/
bool displayEmptyTableFolders() const;
diff --git a/connectivity/source/commontools/dbmetadata.cxx b/connectivity/source/commontools/dbmetadata.cxx
index 36504bf5f5..bd5892a7bd 100644
--- a/connectivity/source/commontools/dbmetadata.cxx
+++ b/connectivity/source/commontools/dbmetadata.cxx
@@ -44,10 +44,14 @@
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/sdb/BooleanComparisonMode.hpp>
#include <com/sun/star/sdbc/XDatabaseMetaData2.hpp>
+#include <com/sun/star/sdbcx/XUsersSupplier.hpp>
+#include <com/sun/star/sdbcx/XDataDefinitionSupplier.hpp>
+#include <com/sun/star/sdbc/XDriverAccess.hpp>
/** === end UNO includes === **/
#include <tools/diagnose_ex.h>
#include <comphelper/namedvaluecollection.hxx>
+#include <comphelper/componentcontext.hxx>
#include <boost/optional.hpp>
@@ -72,6 +76,9 @@ namespace dbtools
using ::com::sun::star::beans::PropertyValue;
using ::com::sun::star::beans::XPropertySetInfo;
using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::sdbcx::XUsersSupplier;
+ using ::com::sun::star::sdbcx::XDataDefinitionSupplier;
+ using ::com::sun::star::sdbc::XDriverAccess;
using ::com::sun::star::uno::UNO_SET_THROW;
/** === end UNO using === **/
namespace BooleanComparisonMode = ::com::sun::star::sdb::BooleanComparisonMode;
@@ -306,6 +313,7 @@ namespace dbtools
}
return bSupport;
}
+
//--------------------------------------------------------------------
bool DatabaseMetaData::supportsColumnAliasInOrderBy() const
{
@@ -317,6 +325,36 @@ namespace dbtools
}
//--------------------------------------------------------------------
+ bool DatabaseMetaData::supportsUserAdministration( const ::comphelper::ComponentContext& _rContext ) const
+ {
+ lcl_checkConnected( *m_pImpl );
+
+ bool isSupported( false );
+ try
+ {
+ // find the XUsersSupplier interface
+ // - either directly at the connection
+ Reference< XUsersSupplier > xUsersSupp( m_pImpl->xConnection, UNO_QUERY );
+ if ( !xUsersSupp.is() )
+ {
+ // - or at the driver manager
+ Reference< XDriverAccess > xDriverManager(
+ _rContext.createComponent( "com.sun.star.sdbc.DriverManager" ), UNO_QUERY_THROW );
+ Reference< XDataDefinitionSupplier > xDriver( xDriverManager->getDriverByURL( m_pImpl->xConnectionMetaData->getURL() ), UNO_QUERY );
+ if ( xDriver.is() )
+ xUsersSupp.set( xDriver->getDataDefinitionByConnection( m_pImpl->xConnection ), UNO_QUERY );
+ }
+
+ isSupported = ( xUsersSupp.is() && xUsersSupp->getUsers().is() );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return isSupported;
+ }
+
+ //--------------------------------------------------------------------
bool DatabaseMetaData::displayEmptyTableFolders() const
{
bool doDisplay( true );
diff --git a/connectivity/source/drivers/dbase/DIndex.cxx b/connectivity/source/drivers/dbase/DIndex.cxx
index 59b340dede..9d25b18e00 100644
--- a/connectivity/source/drivers/dbase/DIndex.cxx
+++ b/connectivity/source/drivers/dbase/DIndex.cxx
@@ -52,6 +52,7 @@
#include "diagnose_ex.h"
#include <comphelper/types.hxx>
#include "resource/dbase_res.hrc"
+#include <unotools/sharedunocomponent.hxx>
using namespace ::comphelper;
// -------------------------------------------------------------------------
@@ -69,7 +70,7 @@ using namespace com::sun::star::lang;
IMPLEMENT_SERVICE_INFO(ODbaseIndex,"com.sun.star.sdbcx.driver.dbase.Index","com.sun.star.sdbcx.Index");
// -------------------------------------------------------------------------
-ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers())
+ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()*/)
,m_pFileStream(NULL)
,m_nCurNode(NODE_NOTFOUND)
,m_pTable(_pTable)
@@ -82,7 +83,7 @@ ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(_pTable->getConnection()
ODbaseIndex::ODbaseIndex( ODbaseTable* _pTable,
const NDXHeader& _rHeader,
const ::rtl::OUString& _rName)
- :OIndex(_rName,::rtl::OUString(),_rHeader.db_unique,sal_False,sal_False,_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers())
+ :OIndex(_rName,::rtl::OUString(),_rHeader.db_unique,sal_False,sal_False,sal_True) // _pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()
,m_pFileStream(NULL)
,m_aHeader(_rHeader)
,m_nCurNode(NODE_NOTFOUND)
@@ -163,7 +164,7 @@ sal_Bool ODbaseIndex::openIndexFile()
if(m_pFileStream)
{
m_pFileStream->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
- m_pFileStream->SetBufferSize(512);
+ m_pFileStream->SetBufferSize(PAGE_SIZE);
(*m_pFileStream) >> *this;
}
}
@@ -342,9 +343,9 @@ ONDXPage* ODbaseIndex::CreatePage(sal_uInt32 nPagePos, ONDXPage* pParent, BOOL b
OSL_ENSURE(m_pFileStream,"FileStream is not opened!");
ONDXPage* pPage;
- if (m_aCollector.size())
+ if ( !m_aCollector.empty() )
{
- pPage = *(m_aCollector.end() - 1);
+ pPage = *(m_aCollector.rbegin());
m_aCollector.pop_back();
pPage->SetPagePos(nPagePos);
pPage->SetParent(pParent);
@@ -362,7 +363,7 @@ ONDXPage* ODbaseIndex::CreatePage(sal_uInt32 nPagePos, ONDXPage* pParent, BOOL b
SvStream& connectivity::dbase::operator >> (SvStream &rStream, ODbaseIndex& rIndex)
{
rStream.Seek(0);
- rStream.Read(&rIndex.m_aHeader,512);
+ rStream.Read(&rIndex.m_aHeader,PAGE_SIZE);
/* OJ: no longer needed
// Text convertierung
@@ -384,7 +385,7 @@ SvStream& connectivity::dbase::operator << (SvStream &rStream, ODbaseIndex& rInd
// aText.Convert(m_pTable->getConnection()->getTextEncoding(), rIndex.m_pTable->getConnection()->GetCharacterSet());
strcpy(rIndex.m_aHeader.db_name,aText.GetBuffer());
*/
- OSL_VERIFY_EQUALS( rStream.Write(&rIndex.m_aHeader,512), 512, "Write not successful: Wrong header size for dbase index!");
+ OSL_VERIFY_EQUALS( rStream.Write(&rIndex.m_aHeader,PAGE_SIZE), PAGE_SIZE, "Write not successful: Wrong header size for dbase index!");
return rStream;
}
// -------------------------------------------------------------------------
@@ -480,11 +481,18 @@ BOOL ODbaseIndex::DropImpl()
return TRUE;
}
// -------------------------------------------------------------------------
+void ODbaseIndex::impl_killFileAndthrowError_throw(sal_uInt16 _nErrorId,const ::rtl::OUString& _sFile)
+{
+ closeImpl();
+ if(UCBContentHelper::Exists(_sFile))
+ UCBContentHelper::Kill(_sFile);
+ m_pTable->getConnection()->throwGenericSQLException(_nErrorId,*this);
+}
//------------------------------------------------------------------
BOOL ODbaseIndex::CreateImpl()
{
// Anlegen des Index
- ::rtl::OUString sFile = getCompletePath();
+ const ::rtl::OUString sFile = getCompletePath();
if(UCBContentHelper::Exists(sFile))
{
const ::rtl::OUString sError( m_pTable->getConnection()->getResources().getResourceStringWithSubstitution(
@@ -525,20 +533,20 @@ BOOL ODbaseIndex::CreateImpl()
}
m_pFileStream->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
- m_pFileStream->SetBufferSize(512);
+ m_pFileStream->SetBufferSize(PAGE_SIZE);
m_pFileStream->SetFiller('\0');
// Zunaechst muss das Ergebnis sortiert sein
- Reference<XStatement> xStmt;
- Reference<XResultSet> xSet;
+ utl::SharedUNOComponent<XStatement> xStmt;
+ utl::SharedUNOComponent<XResultSet> xSet;
String aName;
try
{
- xStmt = m_pTable->getConnection()->createStatement();
+ xStmt.set( m_pTable->getConnection()->createStatement(), UNO_SET_THROW);
aName = getString(xCol->getFastPropertyValue(PROPERTY_ID_NAME));
- String aQuote(m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString());
+ const String aQuote(m_pTable->getConnection()->getMetaData()->getIdentifierQuoteString());
String aStatement;
aStatement.AssignAscii("SELECT ");
aStatement += aQuote;
@@ -561,38 +569,35 @@ BOOL ODbaseIndex::CreateImpl()
// aStatement += aQuote;
// }
- xSet = xStmt->executeQuery(aStatement);
+ xSet.set( xStmt->executeQuery(aStatement),UNO_SET_THROW );
}
catch(const Exception& )
{
- closeImpl();
- if(UCBContentHelper::Exists(sFile))
- UCBContentHelper::Kill(sFile);
- m_pTable->getConnection()->throwGenericSQLException(STR_COULD_NOT_CREATE_INDEX,*this);
+ impl_killFileAndthrowError_throw(STR_COULD_NOT_CREATE_INDEX,sFile);
}
if (!xSet.is())
{
-
- closeImpl();
- if(UCBContentHelper::Exists(sFile))
- UCBContentHelper::Kill(sFile);
- m_pTable->getConnection()->throwGenericSQLException(STR_COULD_NOT_CREATE_INDEX,*this);
+ impl_killFileAndthrowError_throw(STR_COULD_NOT_CREATE_INDEX,sFile);
}
// Setzen der Headerinfo
memset(&m_aHeader,0,sizeof(m_aHeader));
- m_pFileStream->SetStreamSize(512);
-
sal_Int32 nType = 0;
::vos::ORef<OSQLColumns> aCols = m_pTable->getTableColumns();
-
- Reference< XPropertySet > xTableCol(*find(aCols->get().begin(),aCols->get().end(),aName,::comphelper::UStringMixEqual(isCaseSensitive())));
+ const Reference< XPropertySet > xTableCol(*find(aCols->get().begin(),aCols->get().end(),aName,::comphelper::UStringMixEqual(isCaseSensitive())));
xTableCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)) >>= nType;
m_aHeader.db_keytype = (nType == DataType::VARCHAR || nType == DataType::CHAR) ? 0 : 1;
m_aHeader.db_keylen = (m_aHeader.db_keytype) ? 8 : (USHORT)getINT32(xTableCol->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION)));
- m_aHeader.db_maxkeys = (512 - 8) / (8 + m_aHeader.db_keylen);
+ m_aHeader.db_keylen = (( m_aHeader.db_keylen - 1) / 4 + 1) * 4;
+ m_aHeader.db_maxkeys = (PAGE_SIZE - 4) / (8 + m_aHeader.db_keylen);
+ if ( m_aHeader.db_maxkeys < 3 )
+ {
+ impl_killFileAndthrowError_throw(STR_COULD_NOT_CREATE_INDEX_KEYSIZE,sFile);
+ }
+
+ m_pFileStream->SetStreamSize(PAGE_SIZE);
ByteString aCol(aName,m_pTable->getConnection()->getTextEncoding());
strncpy(m_aHeader.db_name,aCol.GetBuffer(),std::min((USHORT)sizeof(m_aHeader.db_name), aCol.Len()));
@@ -640,12 +645,7 @@ BOOL ODbaseIndex::CreateImpl()
aKey.setValue(aValue);
if (aKey == (*m_aCurLeaf)[m_nCurNode].GetKey())
{
- ::comphelper::disposeComponent(xSet);
- ::comphelper::disposeComponent(xStmt);
- closeImpl();
- if(UCBContentHelper::Exists(sFile))
- UCBContentHelper::Kill(sFile);
- m_pTable->getConnection()->throwGenericSQLException(STR_COULD_NOT_CREATE_INDEX_NOT_UNIQUE,*this);
+ impl_killFileAndthrowError_throw(STR_COULD_NOT_CREATE_INDEX_NOT_UNIQUE,sFile);
}
}
aInsertKey.setValue(aValue);
@@ -656,16 +656,10 @@ BOOL ODbaseIndex::CreateImpl()
break;
}
}
- xRow = NULL;
- ::comphelper::disposeComponent(xSet);
- ::comphelper::disposeComponent(xStmt);
if(nRowsLeft)
{
- closeImpl();
- if(UCBContentHelper::Exists(sFile))
- UCBContentHelper::Kill(sFile);
- m_pTable->getConnection()->throwGenericSQLException(STR_COULD_NOT_CREATE_INDEX,*this);
+ impl_killFileAndthrowError_throw(STR_COULD_NOT_CREATE_INDEX,sFile);
}
Release();
createINFEntry();
diff --git a/connectivity/source/drivers/dbase/DIndexes.cxx b/connectivity/source/drivers/dbase/DIndexes.cxx
index 5c7e5b93d3..f494a04654 100644
--- a/connectivity/source/drivers/dbase/DIndexes.cxx
+++ b/connectivity/source/drivers/dbase/DIndexes.cxx
@@ -75,11 +75,11 @@ sdbcx::ObjectType ODbaseIndexes::createObject(const ::rtl::OUString& _rName)
if(pFileStream)
{
pFileStream->SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN);
- pFileStream->SetBufferSize(512);
+ pFileStream->SetBufferSize(PAGE_SIZE);
ODbaseIndex::NDXHeader aHeader;
pFileStream->Seek(0);
- pFileStream->Read(&aHeader,512);
+ pFileStream->Read(&aHeader,PAGE_SIZE);
delete pFileStream;
ODbaseIndex* pIndex = new ODbaseIndex(m_pTable,aHeader,_rName);
diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx
index 0db2f41f69..e5e08e083d 100644
--- a/connectivity/source/drivers/dbase/DTable.cxx
+++ b/connectivity/source/drivers/dbase/DTable.cxx
@@ -83,6 +83,27 @@ using namespace ::com::sun::star::lang;
// stored as the Field Descriptor terminator
#define FIELD_DESCRIPTOR_TERMINATOR 0x0D
+#define DBF_EOL 0x1A
+
+//==================================================================
+namespace
+{
+//==================================================================
+sal_Int32 lcl_getFileSize(SvStream& _rStream)
+{
+ sal_Int32 nFileSize = 0;
+ _rStream.Seek(STREAM_SEEK_TO_END);
+ _rStream.SeekRel(-1);
+ char cEOL;
+ _rStream >> cEOL;
+ nFileSize = _rStream.Tell();
+ if ( cEOL == DBF_EOL )
+ nFileSize -= 1;
+ return nFileSize;
+}
+//==================================================================
+}
+//==================================================================
// -------------------------------------------------------------------------
void ODbaseTable::readHeader()
@@ -373,8 +394,7 @@ void ODbaseTable::construct()
// if(!m_pColumns && (!m_aColumns.isValid() || !m_aColumns->size()))
fillColumns();
- m_pFileStream->Seek(STREAM_SEEK_TO_END);
- UINT32 nFileSize = m_pFileStream->Tell();
+ UINT32 nFileSize = lcl_getFileSize(*m_pFileStream);
m_pFileStream->Seek(STREAM_SEEK_TO_BEGIN);
if ( m_aHeader.db_anz == 0 && ((nFileSize-m_aHeader.db_kopf)/m_aHeader.db_slng) > 0) // seems to be empty or someone wrote bullshit into the dbase file
m_aHeader.db_anz = ((nFileSize-m_aHeader.db_kopf)/m_aHeader.db_slng);
@@ -1077,7 +1097,8 @@ BOOL ODbaseTable::CreateFile(const INetURLObject& aFile, BOOL& bCreateMemo)
m_pFileStream->Write(aBuffer, 14);
}
- (*m_pFileStream) << (BYTE)0x0d; // kopf ende
+ (*m_pFileStream) << (BYTE)FIELD_DESCRIPTOR_TERMINATOR; // kopf ende
+ (*m_pFileStream) << (char)DBF_EOL;
m_pFileStream->Seek(10L);
(*m_pFileStream) << nRecLength; // Satzlaenge nachtraeglich eintragen
@@ -1201,6 +1222,7 @@ BOOL ODbaseTable::DropImpl()
}
return bDropped;
}
+
//------------------------------------------------------------------
BOOL ODbaseTable::InsertRow(OValueRefVector& rRow, BOOL bFlush,const Reference<XIndexAccess>& _xCols)
{
@@ -1218,8 +1240,7 @@ BOOL ODbaseTable::InsertRow(OValueRefVector& rRow, BOOL bFlush,const Reference<X
BOOL bInsertRow = UpdateBuffer( rRow, NULL, _xCols );
if ( bInsertRow )
{
- m_pFileStream->Seek(STREAM_SEEK_TO_END);
- nFileSize = m_pFileStream->Tell();
+ nFileSize = lcl_getFileSize(*m_pFileStream);
if (HasMemoFields() && m_pMemoStream)
{
@@ -1237,6 +1258,7 @@ BOOL ODbaseTable::InsertRow(OValueRefVector& rRow, BOOL bFlush,const Reference<X
}
else
{
+ (*m_pFileStream) << (char)DBF_EOL; // write EOL
// Anzahl Datensaetze im Header erhoehen:
m_pFileStream->Seek( 4L );
(*m_pFileStream) << (m_aHeader.db_anz + 1);
@@ -1726,7 +1748,7 @@ BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
{
case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
{
- const char cEOF = (char) 0x1a;
+ const char cEOF = (char) DBF_EOL;
nSize++;
// if (pData)
@@ -2322,7 +2344,7 @@ BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
{
case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
{
- const char cEOF = (char) 0x1a;
+ const char cEOF = (char) DBF_EOL;
ByteString aBStr;
static char aBuf[514];
aBuf[512] = 0; // sonst kann der Zufall uebel mitspielen
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx
index 26088267f6..f8bf4dd7b4 100644
--- a/connectivity/source/drivers/dbase/dindexnode.cxx
+++ b/connectivity/source/drivers/dbase/dindexnode.cxx
@@ -889,7 +889,7 @@ static UINT32 nValue;
//------------------------------------------------------------------
SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPage& rPage)
{
- rStream.Seek(rPage.GetPagePos() * 512);
+ rStream.Seek(rPage.GetPagePos() * PAGE_SIZE);
rStream >> nValue >> rPage.aChild;
rPage.nCount = USHORT(nValue);
@@ -903,17 +903,17 @@ SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPage& rPage)
SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& rPage)
{
// Seite existiert noch nicht
- ULONG nSize = (rPage.GetPagePos() + 1) * 512;
+ ULONG nSize = (rPage.GetPagePos() + 1) * PAGE_SIZE;
if (nSize > rStream.Seek(STREAM_SEEK_TO_END))
{
rStream.SetStreamSize(nSize);
- rStream.Seek(rPage.GetPagePos() * 512);
+ rStream.Seek(rPage.GetPagePos() * PAGE_SIZE);
- char aEmptyData[512];
- memset(aEmptyData,0x00,512);
- rStream.Write((BYTE*)aEmptyData,512);
+ char aEmptyData[PAGE_SIZE];
+ memset(aEmptyData,0x00,PAGE_SIZE);
+ rStream.Write((BYTE*)aEmptyData,PAGE_SIZE);
}
- ULONG nCurrentPos = rStream.Seek(rPage.GetPagePos() * 512);
+ ULONG nCurrentPos = rStream.Seek(rPage.GetPagePos() * PAGE_SIZE);
OSL_UNUSED( nCurrentPos );
nValue = rPage.nCount;
@@ -926,7 +926,7 @@ SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& r
// check if we have to fill the stream with '\0'
if(i < rPage.rIndex.getHeader().db_maxkeys)
{
- ULONG nTell = rStream.Tell() % 512;
+ ULONG nTell = rStream.Tell() % PAGE_SIZE;
USHORT nBufferSize = rStream.GetBufferSize();
ULONG nRemainSize = nBufferSize - nTell;
char* pEmptyData = new char[nRemainSize];
@@ -990,7 +990,7 @@ BOOL ONDXPage::IsFull() const
USHORT ONDXPage::Search(const ONDXKey& rSearch)
{
// binare Suche spaeter
- USHORT i = 0xFFFF;
+ USHORT i = NODE_NOTFOUND;
while (++i < Count())
if ((*this)[i].GetKey() == rSearch)
break;
@@ -1001,7 +1001,7 @@ USHORT ONDXPage::Search(const ONDXKey& rSearch)
//------------------------------------------------------------------
USHORT ONDXPage::Search(const ONDXPage* pPage)
{
- USHORT i = 0xFFFF;
+ USHORT i = NODE_NOTFOUND;
while (++i < Count())
if (((*this)[i]).GetChild() == pPage)
break;
@@ -1057,4 +1057,3 @@ void ONDXPage::Remove(USHORT nPos)
}
// -----------------------------------------------------------------------------
-
diff --git a/connectivity/source/drivers/file/FTable.cxx b/connectivity/source/drivers/file/FTable.cxx
index 31315577ad..d8d40808ad 100644
--- a/connectivity/source/drivers/file/FTable.cxx
+++ b/connectivity/source/drivers/file/FTable.cxx
@@ -143,7 +143,6 @@ void SAL_CALL OFileTable::disposing(void)
::osl::MutexGuard aGuard(m_aMutex);
FileClose();
- m_xMetaData = NULL;
}
//--------------------------------------------------------------------------
Sequence< sal_Int8 > OFileTable::getUnoTunnelImplementationId()
@@ -227,7 +226,7 @@ void OFileTable::dropColumn(sal_Int32 /*_nPos*/)
SvStream* OFileTable::createStream_simpleError( const String& _rFileName, StreamMode _eOpenMode)
{
utl::UcbLockBytesHandler* p_null_dummy=NULL;
- SvStream* pReturn = ::utl::UcbStreamHelper::CreateStream( _rFileName, _eOpenMode, p_null_dummy);
+ SvStream* pReturn = ::utl::UcbStreamHelper::CreateStream( _rFileName, _eOpenMode, (_eOpenMode & STREAM_NOCREATE) == STREAM_NOCREATE ,p_null_dummy);
if (pReturn && (ERRCODE_NONE != pReturn->GetErrorCode()))
{
delete pReturn;
diff --git a/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx b/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
index 07a8953c52..e782693940 100644
--- a/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
+++ b/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
@@ -131,9 +131,10 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getColumns(
static jmethodID mID = NULL;
return impl_callResultSetMethodWithStrings( "getColumns", mID, catalog, schemaPattern, tableNamePattern, &columnNamePattern );
}
+
// -------------------------------------------------------------------------
Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getTables(
- const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const Sequence< ::rtl::OUString >& types ) throw(SQLException, RuntimeException)
+ const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const Sequence< ::rtl::OUString >& _types ) throw(SQLException, RuntimeException)
{
static const char * cSignature = "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet;";
static const char * cMethodName = "getTables";
@@ -147,64 +148,95 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getTables(
// Java-Call absetzen
static jmethodID mID = NULL;
if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- OSL_VERIFY_RES( !isExceptionOccured(t.pEnv,sal_True),"Exception occured!");
+ {
+ mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
+ }
+ OSL_ENSURE( mID, "Unknown method id!" );
if( mID )
{
jvalue args[4];
- sal_Int32 len = types.getLength();
- if(len)
+
+ args[3].l = 0;
+ sal_Int32 typeFilterCount = _types.getLength();
+ if ( typeFilterCount )
{
- jobjectArray pObjArray = static_cast<jobjectArray>(t.pEnv->NewObjectArray((jsize) len, java_lang_String::getMyClass(), 0));
- OSL_VERIFY_RES( !isExceptionOccured(t.pEnv,sal_True),"Exception occured!");
+ jobjectArray pObjArray = static_cast< jobjectArray >( t.pEnv->NewObjectArray( (jsize)typeFilterCount, java_lang_String::getMyClass(), 0 ) );
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
- const ::rtl::OUString* pBegin = types.getConstArray();
- for(sal_Int32 i=0;i<len;i++,++pBegin)
+ const ::rtl::OUString* typeFilter = _types.getConstArray();
+ bool bIncludeAllTypes = false;
+ for ( sal_Int32 i=0; i<typeFilterCount; ++i, ++typeFilter )
{
- jstring aT = convertwchar_tToJavaString(t.pEnv,*pBegin);
- //jstring aT = t.pEnv->NewStringUTF(_par3.GetToken(i));
- t.pEnv->SetObjectArrayElement(pObjArray,(jsize)i,aT);
- OSL_VERIFY_RES( !isExceptionOccured(t.pEnv,sal_True),"Exception occured!");
+ if ( typeFilter->equalsAsciiL( "%", 1 ) )
+ {
+ bIncludeAllTypes = true;
+ break;
+ }
+ jstring aT = convertwchar_tToJavaString( t.pEnv, *typeFilter );
+ t.pEnv->SetObjectArrayElement( pObjArray, (jsize)i, aT );
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
+ }
+ if ( bIncludeAllTypes )
+ {
+ // the SDBC API allows to pass "%" as table type filter, but in JDBC, "all table types"
+ // is represented by the table type being <null/>
+ t.pEnv->DeleteLocalRef( pObjArray );
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
}
- args[3].l = pObjArray;
- }else
- args[3].l = 0;
- // temporaere Variable initialisieren
- args[0].l = catalog.hasValue() ? convertwchar_tToJavaString(t.pEnv,comphelper::getString(catalog)) : 0;
- args[1].l = schemaPattern.toChar() == '%' ? NULL : convertwchar_tToJavaString(t.pEnv,schemaPattern);
+ else
+ {
+ args[3].l = pObjArray;
+ }
+ }
+
+ // if we are to display "all catalogs", then respect m_aCatalogRestriction
+ Any aCatalogFilter( catalog );
+ if ( !aCatalogFilter.hasValue() )
+ aCatalogFilter = m_pConnection->getCatalogRestriction();
+ // similar for schema
+ Any aSchemaFilter;
+ if ( schemaPattern.equalsAsciiL( "%", 1 ) )
+ aSchemaFilter = m_pConnection->getSchemaRestriction();
+ else
+ aSchemaFilter <<= schemaPattern;
+
+ args[0].l = aCatalogFilter.hasValue() ? convertwchar_tToJavaString( t.pEnv, ::comphelper::getString( aCatalogFilter ) ) : NULL;
+ args[1].l = aSchemaFilter.hasValue() ? convertwchar_tToJavaString( t.pEnv, ::comphelper::getString( aSchemaFilter ) ) : NULL;
args[2].l = convertwchar_tToJavaString(t.pEnv,tableNamePattern);
out = t.pEnv->CallObjectMethod( object, mID, args[0].l, args[1].l,args[2].l,args[3].l);
jthrowable jThrow = t.pEnv->ExceptionOccurred();
if ( jThrow )
- t.pEnv->ExceptionClear();// we have to clear the exception here because we want to handle it itself
+ t.pEnv->ExceptionClear();// we have to clear the exception here because we want to handle it below
- sal_Bool bExcepOccured;
-
- if(catalog.hasValue())
+ if ( aCatalogFilter.hasValue() )
{
t.pEnv->DeleteLocalRef((jstring)args[0].l);
- bExcepOccured = isExceptionOccured(t.pEnv,sal_True); OSL_ENSURE(!bExcepOccured,"Exception occured!");
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
}
if(args[1].l)
{
t.pEnv->DeleteLocalRef((jstring)args[1].l);
- bExcepOccured = isExceptionOccured(t.pEnv,sal_True); OSL_ENSURE(!bExcepOccured,"Exception occured!");
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
}
if(tableNamePattern.getLength())
{
t.pEnv->DeleteLocalRef((jstring)args[2].l);
- bExcepOccured = isExceptionOccured(t.pEnv,sal_True); OSL_ENSURE(!bExcepOccured,"Exception occured!");
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
}
//for(INT16 i=0;i<len;i++)
- t.pEnv->DeleteLocalRef((jobjectArray)args[3].l);
- bExcepOccured = isExceptionOccured(t.pEnv,sal_True); OSL_ENSURE(!bExcepOccured,"Exception occured!");
+ if ( args[3].l )
+ {
+ t.pEnv->DeleteLocalRef( (jobjectArray)args[3].l );
+ OSL_VERIFY_RES( !isExceptionOccured( t.pEnv, sal_True ), "Exception occured!" );
+ }
if ( jThrow )
{
- if(t.pEnv->IsInstanceOf(jThrow,java_sql_SQLException_BASE::getMyClass()))
+ if ( t.pEnv->IsInstanceOf( jThrow,java_sql_SQLException_BASE::getMyClass() ) )
{
- java_sql_SQLException_BASE* pException = new java_sql_SQLException_BASE(t.pEnv,jThrow);
+ java_sql_SQLException_BASE* pException = new java_sql_SQLException_BASE( t.pEnv, jThrow );
SQLException e( pException->getMessage(),
*this,
pException->getSQLState(),
@@ -215,7 +247,6 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getTables(
throw e;
}
}
-
}
}
diff --git a/connectivity/source/drivers/jdbc/JConnection.cxx b/connectivity/source/drivers/jdbc/JConnection.cxx
index 09172cbb8e..0f49b9e7e9 100644
--- a/connectivity/source/drivers/jdbc/JConnection.cxx
+++ b/connectivity/source/drivers/jdbc/JConnection.cxx
@@ -1069,6 +1069,8 @@ sal_Bool java_sql_Connection::construct(const ::rtl::OUString& url,
m_bIgnoreDriverPrivileges = aSettings.getOrDefault( "IgnoreDriverPrivileges", m_bIgnoreDriverPrivileges );
m_bIgnoreCurrency = aSettings.getOrDefault( "IgnoreCurrency", m_bIgnoreCurrency );
aSystemProperties = aSettings.getOrDefault( "SystemProperties", aSystemProperties );
+ m_aCatalogRestriction = aSettings.getOrDefault( "ImplicitCatalogRestriction", Any() );
+ m_aSchemaRestriction = aSettings.getOrDefault( "ImplicitSchemaRestriction", Any() );
loadDriverFromProperties( sDriverClass, sDriverClassPath, aSystemProperties );
diff --git a/connectivity/source/drivers/jdbc/JDriver.cxx b/connectivity/source/drivers/jdbc/JDriver.cxx
index 4ec3f5de67..1db186bd57 100644
--- a/connectivity/source/drivers/jdbc/JDriver.cxx
+++ b/connectivity/source/drivers/jdbc/JDriver.cxx
@@ -153,84 +153,91 @@ Sequence< DriverPropertyInfo > SAL_CALL java_sql_Driver::getPropertyInfo( const
,sal_True
,::rtl::OUString()
,Sequence< ::rtl::OUString >())
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JavaDriverClassPath"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("The class path where to look for the JDBC driver."))
,sal_True
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "" ) )
,Sequence< ::rtl::OUString >())
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SystemProperties"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Additional properties to set at java.lang.System before loading the driver."))
,sal_True
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "" ) )
,Sequence< ::rtl::OUString >())
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParameterNameSubstitution"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Change named parameters with '?'."))
,sal_False
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) )
,aBooleanValues)
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IgnoreDriverPrivileges"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Ignore the privileges from the database driver."))
,sal_False
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) )
,aBooleanValues)
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsAutoRetrievingEnabled"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Retrieve generated values."))
,sal_False
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) )
,aBooleanValues)
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AutoRetrievingStatement"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Auto-increment statement."))
,sal_False
,::rtl::OUString()
,Sequence< ::rtl::OUString >())
- );
-
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("GenerateASBeforeCorrelationName"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Generate AS before table correlation names."))
,sal_False
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) )
,aBooleanValues)
- );
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IgnoreCurrency"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Ignore the currency field from the ResultsetMetaData."))
,sal_False
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) )
,aBooleanValues)
- );
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("EscapeDateTime"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Escape date time format."))
,sal_False
,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) )
,aBooleanValues)
- );
+ );
aDriverInfo.push_back(DriverPropertyInfo(
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TypeInfoSettings"))
,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Defines how the type info of the database metadata should be manipulated."))
,sal_False
,::rtl::OUString( )
,Sequence< ::rtl::OUString > ())
- );
+ );
+ aDriverInfo.push_back(DriverPropertyInfo(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImplicitCatalogRestriction"))
+ ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("The catalog which should be used in getTables calls, when the caller passed NULL."))
+ ,sal_False
+ ,::rtl::OUString( )
+ ,Sequence< ::rtl::OUString > ())
+ );
+ aDriverInfo.push_back(DriverPropertyInfo(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImplicitSchemaRestriction"))
+ ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("The schema which should be used in getTables calls, when the caller passed NULL."))
+ ,sal_False
+ ,::rtl::OUString( )
+ ,Sequence< ::rtl::OUString > ())
+ );
return Sequence< DriverPropertyInfo >(&aDriverInfo[0],aDriverInfo.size());
}
::connectivity::SharedResources aResources;
diff --git a/connectivity/source/drivers/jdbc/tools.cxx b/connectivity/source/drivers/jdbc/tools.cxx
index ad85fd3be1..65d4ee2849 100644
--- a/connectivity/source/drivers/jdbc/tools.cxx
+++ b/connectivity/source/drivers/jdbc/tools.cxx
@@ -142,28 +142,33 @@ java_util_Properties* connectivity::createStringPropertyArray(const Sequence< Pr
for(;pBegin != pEnd;++pBegin)
{
// this is a special property to find the jdbc driver
- if( pBegin->Name.compareToAscii("JavaDriverClass") &&
- pBegin->Name.compareToAscii("JavaDriverClassPath") &&
- pBegin->Name.compareToAscii("SystemProperties") &&
- pBegin->Name.compareToAscii("CharSet") &&
- pBegin->Name.compareToAscii("AppendTableAlias") &&
- pBegin->Name.compareToAscii("GenerateASBeforeCorrelationName") &&
- pBegin->Name.compareToAscii("EscapeDateTime") &&
- pBegin->Name.compareToAscii("ParameterNameSubstitution") &&
- pBegin->Name.compareToAscii("IsPasswordRequired") &&
- pBegin->Name.compareToAscii("IsAutoRetrievingEnabled") &&
- pBegin->Name.compareToAscii("AutoRetrievingStatement") &&
- pBegin->Name.compareToAscii("UseCatalogInSelect") &&
- pBegin->Name.compareToAscii("UseSchemaInSelect") &&
- pBegin->Name.compareToAscii("AutoIncrementCreation") &&
- pBegin->Name.compareToAscii("Extension") &&
- pBegin->Name.compareToAscii("NoNameLengthLimit") &&
- pBegin->Name.compareToAscii("EnableSQL92Check") &&
- pBegin->Name.compareToAscii("EnableOuterJoinEscape") &&
- pBegin->Name.compareToAscii("BooleanComparisonMode") &&
- pBegin->Name.compareToAscii("IgnoreCurrency") &&
- pBegin->Name.compareToAscii("TypeInfoSettings") &&
- pBegin->Name.compareToAscii("IgnoreDriverPrivileges"))
+ if ( pBegin->Name.compareToAscii( "JavaDriverClass" )
+ && pBegin->Name.compareToAscii( "JavaDriverClassPath" )
+ && pBegin->Name.compareToAscii( "SystemProperties" )
+ && pBegin->Name.compareToAscii( "CharSet" )
+ && pBegin->Name.compareToAscii( "AppendTableAliasName" )
+ && pBegin->Name.compareToAscii( "AddIndexAppendix" )
+ && pBegin->Name.compareToAscii( "FormsCheckRequiredFields" )
+ && pBegin->Name.compareToAscii( "GenerateASBeforeCorrelationName" )
+ && pBegin->Name.compareToAscii( "EscapeDateTime" )
+ && pBegin->Name.compareToAscii( "ParameterNameSubstitution" )
+ && pBegin->Name.compareToAscii( "IsPasswordRequired" )
+ && pBegin->Name.compareToAscii( "IsAutoRetrievingEnabled" )
+ && pBegin->Name.compareToAscii( "AutoRetrievingStatement" )
+ && pBegin->Name.compareToAscii( "UseCatalogInSelect" )
+ && pBegin->Name.compareToAscii( "UseSchemaInSelect" )
+ && pBegin->Name.compareToAscii( "AutoIncrementCreation" )
+ && pBegin->Name.compareToAscii( "Extension" )
+ && pBegin->Name.compareToAscii( "NoNameLengthLimit" )
+ && pBegin->Name.compareToAscii( "EnableSQL92Check" )
+ && pBegin->Name.compareToAscii( "EnableOuterJoinEscape" )
+ && pBegin->Name.compareToAscii( "BooleanComparisonMode" )
+ && pBegin->Name.compareToAscii( "IgnoreCurrency" )
+ && pBegin->Name.compareToAscii( "TypeInfoSettings" )
+ && pBegin->Name.compareToAscii( "IgnoreDriverPrivileges" )
+ && pBegin->Name.compareToAscii( "ImplicitCatalogRestriction" )
+ && pBegin->Name.compareToAscii( "ImplicitSchemaRestriction" )
+ )
{
::rtl::OUString aStr;
OSL_VERIFY( pBegin->Value >>= aStr );
diff --git a/connectivity/source/inc/dbase/DIndex.hxx b/connectivity/source/inc/dbase/DIndex.hxx
index 1fccfc9b88..af245cc3fb 100644
--- a/connectivity/source/inc/dbase/DIndex.hxx
+++ b/connectivity/source/inc/dbase/DIndex.hxx
@@ -96,6 +96,9 @@ namespace connectivity
::rtl::OUString getCompletePath();
void closeImpl();
+ /* closes and kill the index file and throws an error.
+ */
+ void impl_killFileAndthrowError_throw(sal_uInt16 _nErrorId,const ::rtl::OUString& _sFile);
protected:
virtual ~ODbaseIndex();
public:
diff --git a/connectivity/source/inc/dbase/dindexnode.hxx b/connectivity/source/inc/dbase/dindexnode.hxx
index 2f663918e2..deb67e1d0e 100644
--- a/connectivity/source/inc/dbase/dindexnode.hxx
+++ b/connectivity/source/inc/dbase/dindexnode.hxx
@@ -36,6 +36,9 @@
#include "connectivity/FValue.hxx"
#include <tools/ref.hxx>
+#define NODE_NOTFOUND 0xFFFF
+#define PAGE_SIZE 512
+
namespace connectivity
{
namespace dbase
@@ -86,7 +89,7 @@ namespace connectivity
StringCompare Compare(const ONDXKey& rKey) const;
};
- #define NODE_NOTFOUND 0xFFFF
+
//==================================================================
diff --git a/connectivity/source/inc/file/FTable.hxx b/connectivity/source/inc/file/FTable.hxx
index 45279e258e..5fa3af288e 100644
--- a/connectivity/source/inc/file/FTable.hxx
+++ b/connectivity/source/inc/file/FTable.hxx
@@ -51,7 +51,6 @@ namespace connectivity
class OOO_DLLPUBLIC_FILE OFileTable : public OTable_TYPEDEF
{
protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
OConnection* m_pConnection;
SvStream* m_pFileStream;
::vos::ORef<OSQLColumns> m_aColumns;
diff --git a/connectivity/source/inc/java/sql/Connection.hxx b/connectivity/source/inc/java/sql/Connection.hxx
index a71fd5f7d3..f34ce444c5 100644
--- a/connectivity/source/inc/java/sql/Connection.hxx
+++ b/connectivity/source/inc/java/sql/Connection.hxx
@@ -65,6 +65,8 @@ namespace connectivity
sal_Bool m_bParameterSubstitution;
sal_Bool m_bIgnoreDriverPrivileges;
sal_Bool m_bIgnoreCurrency;
+ ::com::sun::star::uno::Any m_aCatalogRestriction;
+ ::com::sun::star::uno::Any m_aSchemaRestriction;
/** transform named parameter into unnamed one.
@param _sSQL
@@ -101,6 +103,8 @@ namespace connectivity
inline sal_Bool isIgnoreDriverPrivilegesEnabled() const { return m_bIgnoreDriverPrivileges;}
inline sal_Bool isIgnoreCurrencyEnabled() const { return m_bIgnoreCurrency; }
+ inline const ::com::sun::star::uno::Any& getCatalogRestriction() const { return m_aCatalogRestriction; }
+ inline const ::com::sun::star::uno::Any& getSchemaRestriction() const { return m_aSchemaRestriction; }
/** returns the instance used for logging events related to this connection
*/
diff --git a/connectivity/source/inc/mozaddressbook/MABCatalog.hxx b/connectivity/source/inc/mozaddressbook/MABCatalog.hxx
deleted file mode 100644
index fd2f7b5e52..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABCatalog.hxx
+++ /dev/null
@@ -1,53 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABCatalog.hxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_CATALOG_HXX_
-#define _CONNECTIVITY_MAB_CATALOG_HXX_
-
-#include "file/FCatalog.hxx"
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabConnection;
- class OMozabCatalog : public file::OFileCatalog
- {
- public:
- virtual void refreshTables();
-
- public:
- OMozabCatalog(OMozabConnection* _pCon);
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_CATALOG_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABColumnAlias.hxx b/connectivity/source/inc/mozaddressbook/MABColumnAlias.hxx
deleted file mode 100644
index a345705279..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABColumnAlias.hxx
+++ /dev/null
@@ -1,120 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABColumnAlias.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _CONNECTIVITY_MAB_COLUMNALIAS_HXX_
-#define _CONNECTIVITY_MAB_COLUMNALIAS_HXX_
-
-#include <unotools/confignode.hxx>
-
-#include <osl/mutex.hxx>
-#include <vector>
-#include <map>
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- typedef enum {
- FIRSTNAME = 0,
- LASTNAME,
- DISPLAYNAME,
- NICKNAME,
- PRIMARYEMAIL,
- SECONDEMAIL,
- PREFERMAILFORMAT,
- WORKPHONE,
- HOMEPHONE,
- FAXNUMBER,
- PAGERNUMBER,
- CELLULARNUMBER,
- HOMEADDRESS,
- HOMEADDRESS2,
- HOMECITY,
- HOMESTATE,
- HOMEZIPCODE,
- HOMECOUNTRY,
- WORKADDRESS,
- WORKADDRESS2,
- WORKCITY,
- WORKSTATE,
- WORKZIPCODE,
- WORKCOUNTRY,
- JOBTITLE,
- DEPARTMENT,
- COMPANY,
- WEBPAGE1,
- WEBPAGE2,
- BIRTHYEAR,
- BIRTHMONTH,
- BIRTHDAY,
- CUSTOM1,
- CUSTOM2,
- CUSTOM3,
- CUSTOM4,
- NOTES,
- END
- } ProgrammaticName;
-
- class OMozabColumnAlias
- {
- /**
- * m_Alias holds aliases for the mozilla addressbook
- * column names. This member gets initialised during
- * creation of the connection to the driver.
- * m_aAlias initialises m_aAliasMap which then can be
- * used to find the corresponding programmatic name
- * when an alias is used as a query attribute. Mozilla
- * expects programmatic names from its clients.
- *
- * m_aAlias: vector of aliases used to initialise m_aAliasMap.
- * m_AliasMap: map of {alias, programmaticname} pairs.
- *
- */
- private:
- ::std::vector< ::rtl::OUString> m_aAlias;
- ::std::map< ::rtl::OUString, ::rtl::OUString> m_aAliasMap;
- protected:
- ::osl::Mutex m_aMutex;
- public:
- void initialise(void);
- const ::std::vector< ::rtl::OUString> & getAlias(void) const;
- const ::std::map< ::rtl::OUString, ::rtl::OUString> & getAliasMap(void) const;
- void setAlias(const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory > &);
- private:
- void setAliasMap(void);
- public:
- OMozabColumnAlias(void);
- ~OMozabColumnAlias(void);
- };
- }
-}
-#endif // _CONNECTIVITY_MAB_COLUMNALIAS_HXX_
diff --git a/connectivity/source/inc/mozaddressbook/MABColumns.hxx b/connectivity/source/inc/mozaddressbook/MABColumns.hxx
deleted file mode 100644
index 5d992a93e7..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABColumns.hxx
+++ /dev/null
@@ -1,56 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABColumns.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_COLUMNS_HXX_
-#define _CONNECTIVITY_MAB_COLUMNS_HXX_
-
-#include "file/FColumns.hxx"
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabColumns : public file::OColumns
- {
- protected:
- virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- public:
- OMozabColumns(file::OFileTable* _pTable,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector
- ) : file::OColumns(_pTable,_rMutex,_rVector)
- {}
-
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_COLUMNS_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABConnection.hxx b/connectivity/source/inc/mozaddressbook/MABConnection.hxx
deleted file mode 100644
index d00af172e7..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABConnection.hxx
+++ /dev/null
@@ -1,107 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABConnection.hxx,v $
- * $Revision: 1.12 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_CONNECTION_HXX_
-#define _CONNECTIVITY_MAB_CONNECTION_HXX_
-
-#include "file/FConnection.hxx"
-
-#ifndef _CONNECTIVITY_MAB_COLUMNALIAS_HXX_
-#include "MABColumnAlias.hxx"
-#endif
-
-namespace com { namespace sun { namespace star { namespace sheet {
- class XSpreadsheetDocument;
-} } } }
-
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabDriver;
- class OMozabConnection : public file::OConnection
- {
- OMozabColumnAlias m_aColumnAlias;
- ::rtl::OUString m_sURL; // contains the real url set by construct
- rtl::OUString m_sMozillaURI;
- sal_Int32 m_nAnonABCount;
- sal_Int32 m_nMaxResultRecords;
- sal_Bool m_UsesFactory ;
- sal_Bool m_IsLDAP ;
- sal_Bool m_bOutlookExpress;
-
- public:
- OMozabConnection(OMozabDriver* _pDriver);
- virtual ~OMozabConnection();
-
- virtual void construct(const ::rtl::OUString& _rUrl,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rInfo )
- throw( ::com::sun::star::sdbc::SQLException);
-
- // XServiceInfo
- DECLARE_SERVICE_INFO();
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // XConnection
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > createCatalog();
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // no interface methods
- rtl::OUString getMozURI() const
- { return m_sMozillaURI; }
-
- ::rtl::OUString getConnectionURL() const { return m_sURL; }
-
- sal_Bool usesFactory(void) const { return m_UsesFactory ; }
- sal_Bool isLDAP(void) const { return m_IsLDAP ; }
-
- sal_Bool isOutlookExpress() const { return m_bOutlookExpress;}
- sal_Int32 getNextAnonymousAB() { return (++m_nAnonABCount); }
- sal_Int32 getMaxResultRecords() const { return m_nMaxResultRecords; }
- const OMozabColumnAlias & getColumnAlias() const
- { return (m_aColumnAlias); }
-
- // static methods to return the names of the uri
- static const sal_Char* getSDBC_SCHEME_MOZILLA();
- static const sal_Char* getSDBC_SCHEME_LDAP();
- static const sal_Char* getSDBC_SCHEME_OUTLOOK_MAPI();
- static const sal_Char* getSDBC_SCHEME_OUTLOOK_EXPRESS();
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_CONNECTION_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABDatabaseMetaData.hxx b/connectivity/source/inc/mozaddressbook/MABDatabaseMetaData.hxx
deleted file mode 100644
index 13e8c65bc5..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABDatabaseMetaData.hxx
+++ /dev/null
@@ -1,322 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABDatabaseMetaData.hxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_DATABASEMETADATA_HXX_
-#define _CONNECTIVITY_MAB_DATABASEMETADATA_HXX_
-
-#ifndef _CONNECTIVITY_FILE_ODATABASEMETADATABASE_HXX_
-#include "file/FDatabaseMetaData.hxx"
-#endif
-#include <mozaddressbook/MABConnection.hxx>
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabDatabaseMetaData : public file::ODatabaseMetaData
- {
- private:
- OMozabConnection* m_pMozConnection;
-
- public:
- OMozabDatabaseMetaData(OMozabConnection* _pCon);
- ~OMozabDatabaseMetaData();
- // XDatabaseMetaData methods.
- virtual sal_Bool SAL_CALL allProceduresAreCallable()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL allTablesAreSelectable()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getURL()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getUserName()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isReadOnly()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL nullsAreSortedHigh()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL nullsAreSortedLow()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL nullsAreSortedAtStart()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL nullsAreSortedAtEnd()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDatabaseProductName()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDatabaseProductVersion()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDriverName()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDriverVersion()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getDriverMajorVersion()
- throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getDriverMinorVersion()
- throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL usesLocalFiles()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL usesLocalFilePerTable()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsMixedCaseIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL storesUpperCaseIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL storesLowerCaseIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL storesMixedCaseIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getIdentifierQuoteString()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getSQLKeywords()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getNumericFunctions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getStringFunctions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getSystemFunctions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getTimeDateFunctions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getSearchStringEscape()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getExtraNameCharacters()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsAlterTableWithAddColumn()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsAlterTableWithDropColumn()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsColumnAliasing()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL nullPlusNonNullIsNull()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsTypeConversion()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsConvert( sal_Int32 fromType, sal_Int32 toType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsTableCorrelationNames()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsDifferentTableCorrelationNames()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsExpressionsInOrderBy()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsOrderByUnrelated()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsGroupBy()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsGroupByUnrelated()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsGroupByBeyondSelect()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsLikeEscapeClause()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsMultipleResultSets()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsMultipleTransactions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsNonNullableColumns()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsMinimumSQLGrammar()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCoreSQLGrammar()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsExtendedSQLGrammar()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsANSI92EntryLevelSQL()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsANSI92IntermediateSQL()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsANSI92FullSQL()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsIntegrityEnhancementFacility()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsOuterJoins()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsFullOuterJoins()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsLimitedOuterJoins()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getSchemaTerm()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getProcedureTerm()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getCatalogTerm()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isCatalogAtStart()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getCatalogSeparator()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSchemasInDataManipulation()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSchemasInProcedureCalls()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSchemasInTableDefinitions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSchemasInIndexDefinitions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCatalogsInDataManipulation()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCatalogsInProcedureCalls()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCatalogsInTableDefinitions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsPositionedDelete()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsPositionedUpdate()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSelectForUpdate()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsStoredProcedures()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSubqueriesInComparisons()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSubqueriesInExists()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSubqueriesInIns()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsSubqueriesInQuantifieds()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsCorrelatedSubqueries()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsUnion()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsUnionAll()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxBinaryLiteralLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxCharLiteralLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxColumnNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxColumnsInGroupBy()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxColumnsInIndex()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxColumnsInOrderBy()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxColumnsInSelect()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxColumnsInTable()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxConnections()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxCursorNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxIndexLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxSchemaNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxProcedureNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxCatalogNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxRowSize()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxStatementLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxStatements()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxTableNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxTablesInSelect()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getMaxUserNameLength()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getDefaultTransactionIsolation()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsTransactions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsTransactionIsolationLevel( sal_Int32 level )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTables( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getColumns( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern, const ::rtl::OUString& columnNamePattern )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getTypeInfo()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsResultSetType( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 concurrency )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL ownUpdatesAreVisible( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL ownDeletesAreVisible( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL ownInsertsAreVisible( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL othersUpdatesAreVisible( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL othersDeletesAreVisible( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL othersInsertsAreVisible( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL updatesAreDetected( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL deletesAreDetected( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL insertsAreDetected( sal_Int32 setType )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsBatchUpdates()
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
- }
-}
-#endif // _CONNECTIVITY_MAB_DATABASEMETADATA_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABDatabaseMetaDataHelper.hxx b/connectivity/source/inc/mozaddressbook/MABDatabaseMetaDataHelper.hxx
deleted file mode 100644
index 4962e7fd21..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABDatabaseMetaDataHelper.hxx
+++ /dev/null
@@ -1,75 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABDatabaseMetaDataHelper.hxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_DATABASEMETADATAHELPER_HXX_
-#define _CONNECTIVITY_MAB_DATABASEMETADATAHELPER_HXX_
-
- /*
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XCloseable.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/util/XCancellable.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-#include <cppuhelper/compbase7.hxx>
-*/
-#include <comphelper/proparrhlp.hxx>
- /*
-#ifndef _CONNECTIVITY_FILE_ASTATEMENT_HXX_
-#include "file/FStatement.hxx"
-#endif
-#include "connectivity/CommonTools.hxx"
-*/
-#include <comphelper/propertycontainer.hxx>
-#include "FDatabaseMetaDataResultSet.hxx"
-#include <mozaddressbook/MABConnection.hxx>
-
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabDatabaseMetaDataHelper
- {
- public:
- OMozabDatabaseMetaDataHelper( );
- ~OMozabDatabaseMetaDataHelper();
- ODatabaseMetaDataResultSet::ORows& getTables( OMozabConnection* _pCon );
- private:
- sal_Bool m_bProfileExists ;
- };
- }
-
-}
-#endif // _CONNECTIVITY_MAB_DATABASEMETADATAHELPER_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABDriver.hxx b/connectivity/source/inc/mozaddressbook/MABDriver.hxx
deleted file mode 100644
index a9d990a99e..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABDriver.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABDriver.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_DRIVER_HXX_
-#define _CONNECTIVITY_MAB_DRIVER_HXX_
-
-#include "file/FDriver.hxx"
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
- OMozabDriver_CreateInstance(const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory)
- throw( ::com::sun::star::uno::Exception );
-
- class OMozabDriver : public file::OFileDriver
- {
- public:
- OMozabDriver(const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) :
- file::OFileDriver(_rxFactory), m_xMSFactory(_rxFactory){}
-
- static ::rtl::OUString getImplementationName_Static( ) throw(::com::sun::star::uno::RuntimeException);
- ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XDriver
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL
- connect( const ::rtl::OUString& url, const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::PropertyValue >& info )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL acceptsURL( const ::rtl::OUString& url )
- throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
- & getMSFactory(void) const
- { return m_xMSFactory; }
- static sal_Bool acceptsURL_Stat( const ::rtl::OUString& url );
- private:
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory > m_xMSFactory;
- };
- }
-}
-
-#endif //_CONNECTIVITY_MAB_DRIVER_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABNSInit.hxx b/connectivity/source/inc/mozaddressbook/MABNSInit.hxx
deleted file mode 100644
index 0d324890ae..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABNSInit.hxx
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABNSInit.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_NS_INIT_HXX_
-#define _CONNECTIVITY_MAB_NS_INIT_HXX_ 1
-
-#include <sal/types.h>
-
-sal_Bool MAB_NS_Init(sal_Bool& aProfileExists);
-
-sal_Bool MAB_NS_Term();
-
-#endif // _CONNECTIVITY_MAB_NS_INIT_HXX_ 1
-
diff --git a/connectivity/source/inc/mozaddressbook/MABNameMapper.hxx b/connectivity/source/inc/mozaddressbook/MABNameMapper.hxx
deleted file mode 100644
index 956d8d141f..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABNameMapper.hxx
+++ /dev/null
@@ -1,81 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABNameMapper.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_NAMEMAPPER_HXX_
-#define _CONNECTIVITY_MAB_NAMEMAPPER_HXX_ 1
-
-#include <map>
-
-// Mozilla includes
-#include <MABNSInclude.hxx>
-
-// StarOffice Includes
-#include <rtl/ustring.hxx>
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabNameMapper
- {
- private:
-
- struct ltstr
- {
- bool operator()( const ::rtl::OUString &s1, const ::rtl::OUString &s2) const;
- };
-
-
- typedef ::std::multimap< ::rtl::OUString, nsIAbDirectory *, ltstr > dirMap;
-
- static OMozabNameMapper *instance;
- dirMap *mDirMap;
-
- public:
- static OMozabNameMapper* getInstance();
-
- OMozabNameMapper();
- ~OMozabNameMapper();
-
- // May modify the name passed in so that it's unique
- void add( ::rtl::OUString& str, nsIAbDirectory* abook );
-
- // Will replace the given dir
- void replace( const ::rtl::OUString& str, nsIAbDirectory* abook );
-
- // Get the directory corresponding to str
- bool getDir( const ::rtl::OUString& str, nsIAbDirectory* *abook );
-
- };
-
- }
-}
-
-#endif //_CONNECTIVITY_MAB_NAMEMAPPER_HXX_
diff --git a/connectivity/source/inc/mozaddressbook/MABPreparedStatement.hxx b/connectivity/source/inc/mozaddressbook/MABPreparedStatement.hxx
deleted file mode 100644
index e2956b11d7..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABPreparedStatement.hxx
+++ /dev/null
@@ -1,57 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABPreparedStatement.hxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_PREPAREDSTATEMENT_HXX_
-#define _CONNECTIVITY_MAB_PREPAREDSTATEMENT_HXX_
-
-#include "file/FPreparedStatement.hxx"
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OConnection;
- class OMozabPreparedStatement : public file::OPreparedStatement
- {
- protected:
- virtual file::OResultSet* createResultSet();
- // here we create a SQL analyzer which doesn't support any restrictions
- // these are already done by the server side
- virtual file::OSQLAnalyzer* createAnalyzer();
- public:
- // DECLARE_CTY_DEFAULTS(file::OStatement);
- OMozabPreparedStatement( file::OConnection* _pConnection ) : file::OPreparedStatement( _pConnection ){}
- DECLARE_SERVICE_INFO();
- };
- }
-}
-
-#endif //_CONNECTIVITY_MAB_PREPAREDSTATEMENT_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABQuery.hxx b/connectivity/source/inc/mozaddressbook/MABQuery.hxx
deleted file mode 100644
index 22d11a6d44..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABQuery.hxx
+++ /dev/null
@@ -1,167 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABQuery.hxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _CONNECTIVITY_MAB_QUERY_HXX_
-#define _CONNECTIVITY_MAB_QUERY_HXX_
-
-#ifndef _CONNECTIVITY_FILE_QUERY_HXX_
-#include "file/FTable.hxx"
-#endif
-#include <tools/date.hxx>
-
-#ifndef _CONNECTIVITY_MAB_COLUMNALIAS_HXX_
-#include "MABColumnAlias.hxx"
-#endif
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
-
- class OMozabQueryHelper;
-
- //class OMozabQuery : public nsIAbDirectoryQueryResultListener
- class OMozabQuery
- {
- /*
- * A query resultset with a maximum limit of
- * m_nMaxNrOfReturns return items, is created from
- * the following SQL statement:
- *
- * -------------------------------------------------
- * SELECT m_aAttributes FROM m_aAddressbook
- * WHERE m_aMatchItems SQL_OPR m_aMatchValue
- * -------------------------------------------------
- *
- * We are\are not, depending on boolean m_bQuerySubDirs,
- * interested in querying the sub-directories of the
- * addressbook directory, if any.
- *
- * SQL_OPR:
- * m_aSqlOppr contains the SQL operations for every
- * attribute in m_aAttributes.
- * This member must be initialised together with
- * m_aAttributes.
- *
- * The SQL operations defined for 'SQL_OPR' are:
- * matchExists = 0,
- * matchDoesNotExist = 1,
- * matchContains = 2,
- * matchDoesNotContain = 3,
- * matchIs = 4,
- * matchIsNot = 5,
- * matchBeginsWith = 6,
- * matchEndsWith = 7,
- * matchSoundsLike = 8,
- * matchRegExp = 9.
- * There must be mapping to one of these values.
- *
- * The following members MUST be initialised before
- * a query is executed:
- * m_Attributes, m_aMapAttrOppr, m_aAddressbook,
- * m_aMatchItems and m_aMatchValue.
- *
- * m_bQuerySubDirs and m_nMaxNrReturns are set to a
- * default value in the constructor which can be
- * overridden. If (element of) m_aSqlOppr is not set,
- * the default SQL operation is 'matchIs'.
- *
- */
- public:
- typedef enum {
- matchExists = 0,
- matchDoesNotExist = 1,
- matchContains = 2,
- matchDoesNotContain = 3,
- matchIs = 4,
- matchIsNot = 5,
- matchBeginsWith = 6,
- matchEndsWith = 7,
- matchSoundsLike = 8,
- matchRegExp = 9
- } eSqlOppr;
-
- private:
- OMozabQueryHelper *m_aQueryHelper;
- ::std::vector< ::rtl::OUString> m_aAttributes;
- ::rtl::OUString m_aAddressbook;
- ::std::vector< ::rtl::OUString> m_aMatchItems;
- ::std::vector< ::rtl::OUString> m_aMatchValues;
- sal_Int32 m_nMaxNrOfReturns;
- sal_Bool m_bQuerySubDirs;
- ::std::vector<eSqlOppr> m_aSqlOppr;
- ::std::map< ::rtl::OUString,
- ::rtl::OUString> m_aColumnAliasMap;
- protected:
- ::osl::Mutex m_aMutex;
- public:
- /*
- * - Contains accessors to the members of this class.
- * - executeQuery() initiates a non-blocking query.
- */
- void setAttributes( ::std::vector< ::rtl::OUString>&);
- const ::std::vector< ::rtl::OUString> &getAttributes(void) const;
- void setAddressbook( ::rtl::OUString&);
- ::rtl::OUString getAddressbook(void) const;
- void setMatchItems( ::std::vector< ::rtl::OUString>&);
- const ::std::vector< ::rtl::OUString> &getMatchItems(void) const;
- void setMatchValues( ::std::vector< ::rtl::OUString>&);
- const ::std::vector< ::rtl::OUString> &getMatchValues(void) const;
- void setMaxNrOfReturns( const sal_Int32);
- sal_Int32 getMaxNrOfReturns(void) const;
- void setQuerySubDirs( sal_Bool&);
- sal_Bool getQuerySubDirs(void) const;
- void setSqlOppr( ::std::vector< eSqlOppr >&);
- const ::std::vector< eSqlOppr > &getSqlOppr(void) const;
- sal_Int32 executeQuery(sal_Bool _bIsOutlookExpress);
-
- sal_Int32 getRowCount( void );
-
- sal_Int32 getRealRowCount( void );
-
- sal_Bool queryComplete( void );
-
- sal_Bool checkRowAvailable( sal_Int32 nDBRow );
-
- void getRowValue( connectivity::ORowSetValue& rValue,
- sal_Int32 nDBRow, rtl::OUString& aDBColumnName,
- sal_Int32 nType );
-
- public:
- OMozabQuery();
- OMozabQuery(const ::std::map< ::rtl::OUString, ::rtl::OUString> &);
- virtual ~OMozabQuery();
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_QUERY_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABQueryHelper.hxx b/connectivity/source/inc/mozaddressbook/MABQueryHelper.hxx
deleted file mode 100644
index b9385e8202..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABQueryHelper.hxx
+++ /dev/null
@@ -1,120 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABQueryHelper.hxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_QUERYHELPER_HXX_
-#define _CONNECTIVITY_MAB_QUERYHELPER_HXX_
-
-#include <MABNSInclude.hxx>
-#include <sal/types.h>
-#include <rtl/ustring.hxx>
-#include <osl/mutex.hxx>
-#include <osl/conditn.hxx>
-#include <comphelper/stl_types.hxx>
-
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabQueryHelperResultEntry
- {
- private:
- mutable ::osl::Mutex m_aMutex;
-
- DECLARE_STL_USTRINGACCESS_MAP(::rtl::OUString,fieldMap);
-
- fieldMap m_Fields;
-
- public:
- OMozabQueryHelperResultEntry();
- ~OMozabQueryHelperResultEntry();
-
- void insert( rtl::OUString &key, rtl::OUString &value );
- rtl::OUString getValue( const rtl::OUString &key ) const;
- };
-
- class OMozabQueryHelper : public nsIAbDirectoryQueryResultListener
- {
- private:
- typedef std::vector< OMozabQueryHelperResultEntry* > resultsArray;
-
- mutable ::osl::Mutex m_aMutex;
- ::osl::Condition m_aCondition;
- resultsArray m_aResults;
- sal_Int32 m_nIndex;
- sal_Bool m_bHasMore;
- sal_Bool m_bAtEnd;
- sal_Bool m_bQueryComplete;
-
- void append(OMozabQueryHelperResultEntry* resEnt );
-
- void clear_results();
-
- void clearResultOrComplete();
- void notifyResultOrComplete();
- void waitForResultOrComplete();
-
-
- public:
-
- NS_DECL_ISUPPORTS
- NS_DECL_NSIABDIRECTORYQUERYRESULTLISTENER
-
- OMozabQueryHelper();
-
- ~OMozabQueryHelper();
-
- void reset();
-
- void rewind();
-
- OMozabQueryHelperResultEntry* next();
-
- OMozabQueryHelperResultEntry* getByIndex( sal_Int32 nRow );
-
- sal_Bool hasMore() const;
-
- sal_Bool atEnd() const;
-
- sal_Bool queryComplete() const;
-
- void waitForRow( sal_Int32 rowNum );
-
- sal_Int32 getResultCount() const;
-
- sal_Int32 getRealCount() const;
-
- void notifyQueryError() ;
-
- };
- }
-}
-#endif // _CONNECTIVITY_MAB_QUERYHELPER_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABResultSet.hxx b/connectivity/source/inc/mozaddressbook/MABResultSet.hxx
deleted file mode 100644
index fbfae19fdc..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABResultSet.hxx
+++ /dev/null
@@ -1,97 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABResultSet.hxx,v $
- * $Revision: 1.10 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _CONNECTIVITY_MAB_RESULTSET_HXX_
-#define _CONNECTIVITY_MAB_RESULTSET_HXX_
-
-#include "file/FResultSet.hxx"
-#include "mozaddressbook/MABTable.hxx"
-#include <com/sun/star/sdbcx/XRowLocate.hpp>
-#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-#include <cppuhelper/implbase2.hxx>
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabResultSet;
- // these typedef's are only necessary for the compiler
- typedef ::cppu::ImplHelper2< ::com::sun::star::sdbcx::XRowLocate,
- ::com::sun::star::sdbcx::XDeleteRows> OMozabResultSet_BASE;
- typedef file::OResultSet OMozabResultSet_BASE2;
- typedef ::comphelper::OPropertyArrayUsageHelper<OMozabResultSet> OMozabResultSet_BASE3;
-
-
- class OMozabResultSet : public OMozabResultSet_BASE2,
- public OMozabResultSet_BASE,
- public OMozabResultSet_BASE3
- {
- sal_Bool m_bBookmarkable;
- protected:
- OMozabTable *m_pMozTable;
-
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
- // OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
- virtual sal_Bool fillIndexValues(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier> &_xIndex);
-
- public:
- DECLARE_SERVICE_INFO();
-
- OMozabResultSet( file::OStatement_Base* pStmt,connectivity::OSQLParseTreeIterator& _aSQLIterator);
-
- // XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
- //XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- // XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // special methods
- // virtual BOOL OpenImpl();
- virtual void doTableSpecials(const OSQLTable& _xTable);
- };
- }
-}
-
-#endif //_CONNECTIVITY_MAB_RESULTSET_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABStatement.hxx b/connectivity/source/inc/mozaddressbook/MABStatement.hxx
deleted file mode 100644
index 789b0dc455..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABStatement.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABStatement.hxx,v $
- * $Revision: 1.6 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_STATEMENT_HXX_
-#define _CONNECTIVITY_MAB_STATEMENT_HXX_
-
-#include "file/FStatement.hxx"
-#include "file/fanalyzer.hxx"
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- // -----------------------------------------------------------------------------
- typedef ::connectivity::file::OSQLAnalyzer OMozabAnalyzer_BASE;
- /** little helper class to avoid filtering by the file resultset
- this analyzer doesn't soppurt restrictions
- */
-
- class OMozabAnalyzer : public OMozabAnalyzer_BASE
- {
- public:
- OMozabAnalyzer(){}
- virtual BOOL hasRestriction() const;
- };
-
- class OConnection;
- class OMozabStatement : public file::OStatement
- {
- protected:
- virtual file::OResultSet* createResultSet();
- // here we create a SQL analyzer which doesn't support any restrictions
- // these are already done by the server side
- virtual file::OSQLAnalyzer* createAnalyzer();
- public:
- // DECLARE_CTY_DEFAULTS(file::OStatement);
- OMozabStatement( file::OConnection* _pConnection) : file::OStatement( _pConnection){}
- DECLARE_SERVICE_INFO();
- };
- }
-}
-
-#endif //_CONNECTIVITY_MAB_STATEMENT_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABTable.hxx b/connectivity/source/inc/mozaddressbook/MABTable.hxx
deleted file mode 100644
index 127a0504e1..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABTable.hxx
+++ /dev/null
@@ -1,154 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABTable.hxx,v $
- * $Revision: 1.11 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_TABLE_HXX_
-#define _CONNECTIVITY_MAB_TABLE_HXX_
-
-#include "file/FTable.hxx"
-#include <tools/date.hxx>
-
-#include <mozaddressbook/MABQuery.hxx>
-
-#ifdef DARREN_WORK
-namespace com { namespace sun { namespace star { namespace sheet {
- class XSpreadsheet;
-} } } }
-
-namespace com { namespace sun { namespace star { namespace util {
- class XNumberFormats;
-} } } }
-
-#endif /* DARREN_WORK */
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- typedef file::OFileTable OMozabTable_BASE;
- class OMozabConnection;
-
- typedef ::std::map< ::rtl::OUString,
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNamed>,
- comphelper::UStringMixLess > OContainer;
- static sal_Int32 const m_nNR_OF_FIELDS = 37;
-
- class OMozabTable : public OMozabTable_BASE
- {
- private:
- //static sal_Int32 const m_nNR_OF_FIELDS = 37;
- const OMozabColumnAlias & m_aColumnAlias;
- OMozabQuery *m_xQuery;
- ::std::vector<sal_Int32> m_aTypes; // holds all type for columns just to avoid to ask the propertyset
- ::std::vector<sal_Int32> m_aPrecisions; // same as aboth
- ::std::vector<sal_Int32> m_aScales;
-#ifdef DARREN_WORK
- ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > m_xSheet;
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormats > m_xFormats;
- ::Date m_aNullDate;
-#endif /* DARREN_WORK */
- ::std::vector< ::rtl::OUString> m_aAttributeStrings;
-
- void fillColumns();
-
- BOOL WriteBuffer();
- BOOL UpdateBuffer(connectivity::OValueVector& rRow, connectivity::OValueRow pOrgRow,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xCols);
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> isUniqueByColumnName(const ::rtl::OUString& _rColName);
- OValueRow m_aParameterRow;
-
- sal_Int32 sParamIndex;
-
- inline void resetParameters()
- { sParamIndex = 0; }
-
- void parseParameter( const OSQLParseNode* pNode, rtl::OUString& rMatchString );
-
- protected:
- virtual void FileClose();
-
- // special ctor is needed for clone
- OMozabTable(const OMozabTable* _pTable);
- public:
- virtual void refreshColumns();
- virtual void refreshIndexes();
-
- public:
- // DECLARE_CTY_DEFAULTS( OMozabTable_BASE);
- OMozabTable( sdbcx::OCollection* _pTables,OMozabConnection* _pConnection);
- OMozabTable( sdbcx::OCollection* _pTables,OMozabConnection* _pConnection,
- const ::rtl::OUString& _Name,
- const ::rtl::OUString& _Type,
- const ::rtl::OUString& _Description = ::rtl::OUString(),
- const ::rtl::OUString& _SchemaName = ::rtl::OUString(),
- const ::rtl::OUString& _CatalogName = ::rtl::OUString()
- );
- ~OMozabTable( );
-
- virtual sal_Int32 getCurrentLastPos() const;
- virtual sal_Bool seekRow(IResultSetHelper::Movement eCursorPosition, sal_Int32 nOffset, sal_Int32& nCurPos);
- virtual sal_Bool fetchRow(connectivity::OValueRow _rRow,const OSQLColumns& _rCols, sal_Bool _bUseTableDefs,sal_Bool bRetrieveData);
-
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- //XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL disposing(void);
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
-
- BOOL DropImpl();
- BOOL CreateImpl();
-
- virtual BOOL InsertRow(connectivity::OValueVector& rRow, BOOL bFlush,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xCols);
- virtual BOOL DeleteRow(const OSQLColumns& _rCols);
- virtual BOOL UpdateRow(connectivity::OValueVector& rRow, connectivity::OValueRow pOrgRow,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xCols);
-
- void fillRowData( connectivity::OSQLParseTreeIterator& _aSQLIterator );
-
- void analyseWhereClause( const OSQLParseNode* parseTree,
- ::std::vector< ::rtl::OUString > &matchItems,
- ::std::vector< OMozabQuery::eSqlOppr > &matchOper,
- ::std::vector< ::rtl::OUString > &matchValues,
- connectivity::OSQLParseTreeIterator& aSQLIterator);
-
- // returns a copy of this object
- OMozabTable* clone() const;
- const OMozabColumnAlias & getColumnAlias() const
- { return (m_aColumnAlias); }
-
- void setParameterRow(const OValueRow& _rParaRow)
- { m_aParameterRow = _rParaRow; }
-
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_TABLE_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABTables.hxx b/connectivity/source/inc/mozaddressbook/MABTables.hxx
deleted file mode 100644
index d5b21aef6c..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABTables.hxx
+++ /dev/null
@@ -1,55 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABTables.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _CONNECTIVITY_MAB_TABLES_HXX_
-#define _CONNECTIVITY_MAB_TABLES_HXX_
-
-#include "file/FTables.hxx"
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- typedef file::OTables OMozabTables_BASE;
-
- class OMozabTables : public OMozabTables_BASE
- {
- protected:
- virtual sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- public:
- OMozabTables(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rMetaData,::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector) : OMozabTables_BASE(_rMetaData,_rParent,_rMutex,_rVector)
- {}
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_TABLES_HXX_
-
diff --git a/connectivity/source/inc/mozaddressbook/MABTypeConverter.hxx b/connectivity/source/inc/mozaddressbook/MABTypeConverter.hxx
deleted file mode 100644
index 8ac4ea1cb7..0000000000
--- a/connectivity/source/inc/mozaddressbook/MABTypeConverter.hxx
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: MABTypeConverter.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#ifndef _CONNECTIVITY_MAB_TYPECONVERTER_HXX_
-#define _CONNECTIVITY_MAB_TYPECONVERTER_HXX_
-
-#ifndef _CONNECTIVITY_FILE_TYPECONVERTER_HXX_
-#include "file/FTable.hxx"
-#endif
-
-#include <string>
-
-namespace connectivity
-{
- namespace mozaddressbook
- {
- class OMozabTypeConverter
- {
- public:
- static void ouStringToNsString(const ::rtl::OUString&, nsString&);
- static void nsStringToOUString(const nsString&, ::rtl::OUString&);
- static void prUnicharToOUString(const PRUnichar*, ::rtl::OUString&);
- // Use free() for the following 3 calls.
- static char *ouStringToCCharStringAscii(const ::rtl::OUString&);
- static char *nsStringToCCharStringAscii(const nsString&);
- static char *ouStringToCCharStringUtf8(const ::rtl::OUString&);
- // Convert to stl-string.
- static ::std::string ouStringToStlString(const ::rtl::OUString&);
- static ::std::string nsStringToStlString(const nsString&);
- };
- }
-}
-
-#endif // _CONNECTIVITY_MAB_TYPECONVERTER_HXX_
-
diff --git a/connectivity/source/inc/resource/dbase_res.hrc b/connectivity/source/inc/resource/dbase_res.hrc
index c94486de17..c191451ffc 100644
--- a/connectivity/source/inc/resource/dbase_res.hrc
+++ b/connectivity/source/inc/resource/dbase_res.hrc
@@ -58,7 +58,7 @@
#define STR_COULD_NOT_CREATE_INDEX_NAME ( STR_DBASE_BASE + 17 )
#define STR_INVALID_COLUMN_VALUE ( STR_DBASE_BASE + 18 )
#define STR_TABLE_NOT_DROP ( STR_DBASE_BASE + 19 )
-
+#define STR_COULD_NOT_CREATE_INDEX_KEYSIZE ( STR_DBASE_BASE + 20 )
#endif // CONNECTIVITY_RESOURCE_DBASE_HRC
diff --git a/connectivity/source/resource/conn_shared_res.src b/connectivity/source/resource/conn_shared_res.src
index 5b090c4378..4ad151901a 100644
--- a/connectivity/source/resource/conn_shared_res.src
+++ b/connectivity/source/resource/conn_shared_res.src
@@ -399,6 +399,10 @@ String STR_COULD_NOT_CREATE_INDEX_NAME
{
Text [ en-US ] = "The index could not be created. The file '$filename$' is used by an other index.";
};
+String STR_COULD_NOT_CREATE_INDEX_KEYSIZE
+{
+ Text [ en-US ] = "The index could not be created. The size of the choosen column is to big.";
+};
String STR_SQL_NAME_ERROR
{
diff --git a/sfx2/source/dialog/filtergrouping.cxx b/sfx2/source/dialog/filtergrouping.cxx
index ef9de0aea9..47a75137d8 100644
--- a/sfx2/source/dialog/filtergrouping.cxx
+++ b/sfx2/source/dialog/filtergrouping.cxx
@@ -34,6 +34,7 @@
#include <sfx2/fcontnr.hxx>
#include <sfx2/filedlghelper.hxx>
#include <sfx2/sfx.hrc>
+#include <sfx2/docfac.hxx>
#include "sfxresid.hxx"
#include <osl/thread.h>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
@@ -43,20 +44,12 @@
#include <comphelper/processfactory.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <tools/wldcrd.hxx>
+#include <tools/diagnose_ex.h>
-#ifndef _LIST_
#include <list>
-#endif
-#ifndef _VECTOR_
#include <vector>
-#endif
-#ifndef _MAP_
#include <map>
-#endif
-#ifndef _ALGORITHM_
#include <algorithm>
-#endif
-#include <sfx2/docfac.hxx>
//........................................................................
namespace sfx2
@@ -906,7 +899,7 @@ namespace sfx2
}
catch( const Exception& )
{
- DBG_ERROR( "AppendFilterGroup::operator(): caught an exception while adding filters!" );
+ DBG_UNHANDLED_EXCEPTION();
}
}
diff --git a/svx/source/dialog/macropg.src b/svx/source/dialog/macropg.src
index 74a9d54afb..c8d3bcd760 100644
--- a/svx/source/dialog/macropg.src
+++ b/svx/source/dialog/macropg.src
@@ -246,7 +246,7 @@ String RID_SVXSTR_EVENT_APPROVEPARAMETER
};
String RID_SVXSTR_EVENT_ACTIONPERFORMED
{
- Text [ en-US ] = "When initiating" ;
+ Text [ en-US ] = "Execute action" ;
};
String RID_SVXSTR_EVENT_AFTERUPDATE
{
@@ -350,7 +350,7 @@ String RID_SVXSTR_EVENT_APPROVERESETTED
};
String RID_SVXSTR_EVENT_APPROVEACTIONPERFORMED
{
- Text [ en-US ] = "Before commencing" ;
+ Text [ en-US ] = "Approve action" ;
};
String RID_SVXSTR_EVENT_SUBMITTED
{
diff --git a/svx/source/fmcomp/fmgridcl.cxx b/svx/source/fmcomp/fmgridcl.cxx
index 6b331f4288..585db58d9f 100644
--- a/svx/source/fmcomp/fmgridcl.cxx
+++ b/svx/source/fmcomp/fmgridcl.cxx
@@ -85,6 +85,7 @@
#include <svtools/numuno.hxx>
#include <tools/multisel.hxx>
#include <tools/shl.hxx>
+#include <tools/diagnose_ex.h>
#include <vcl/help.hxx>
#include <vcl/image.hxx>
#include <vcl/longcurr.hxx>
@@ -812,6 +813,9 @@ void FmGridHeader::PostExecuteColumnContextMenu(sal_uInt16 nColId, const PopupMe
::rtl::OUString aFieldType;
sal_Bool bReplace = sal_False;
+ enum InspectorAction { eOpenInspector, eCloseInspector, eUpdateInspector, eNone };
+ InspectorAction eInspectorAction = eNone;
+ Reference< XPropertySet > xColumnToInspect;
switch (nExecutionResult)
{
case SID_FM_DELETECOL:
@@ -822,22 +826,9 @@ void FmGridHeader::PostExecuteColumnContextMenu(sal_uInt16 nColId, const PopupMe
::comphelper::disposeComponent(xCol);
} break;
case SID_FM_SHOW_PROPERTY_BROWSER:
- {
- Reference< XInterface > xCol;
- ::cppu::extractInterface(xCol, xCols->getByIndex(nPos));
- FmInterfaceItem aIFaceItem(SID_FM_SHOW_PROPERTY_BROWSER, xCol);
- SfxBoolItem aShowItem(SID_FM_SHOW_PROPERTIES, !rMenu.IsItemChecked(SID_FM_SHOW_PROPERTY_BROWSER));
-
- // execute the slot, use the dispatcher of the current view frame (which should be the one we're residing in)
- SfxViewFrame* pCurrentFrame = SfxViewFrame::Current();
- if (pCurrentFrame)
- pCurrentFrame->GetBindings().GetDispatcher()->Execute( SID_FM_SHOW_PROPERTY_BROWSER, SFX_CALLMODE_ASYNCHRON,
- &aIFaceItem, &aShowItem, 0L );
- else
- {
- DBG_ERROR("FmGridHeader::PostExecuteColumnContextMenu : no current view frame -> no bindings !");
- }
- } break;
+ eInspectorAction = rMenu.IsItemChecked( SID_FM_SHOW_PROPERTY_BROWSER ) ? eOpenInspector : eCloseInspector;
+ xColumnToInspect.set( xCols->getByIndex( nPos ), UNO_QUERY );
+ break;
case SID_FM_EDIT + nChangeTypeOffset:
bReplace = sal_True;
case SID_FM_EDIT:
@@ -945,50 +936,74 @@ void FmGridHeader::PostExecuteColumnContextMenu(sal_uInt16 nColId, const PopupMe
break;
}
- if (aFieldType.getLength())
+ if ( aFieldType.getLength() )
{
- Reference< ::com::sun::star::form::XGridColumnFactory > xFactory(xCols, UNO_QUERY);
- Reference< ::com::sun::star::beans::XPropertySet > xCol = xFactory->createColumn(aFieldType);
- if (xCol.is())
+ try
{
- if (bReplace)
+ Reference< XGridColumnFactory > xFactory( xCols, UNO_QUERY_THROW );
+ Reference< XPropertySet > xNewCol( xFactory->createColumn( aFieldType ), UNO_SET_THROW );
+
+ if ( bReplace )
{
// ein paar Properties hinueberretten
- Reference< ::com::sun::star::beans::XPropertySet > xReplaced;
- ::cppu::extractInterface(xReplaced, xCols->getByIndex(nPos));
+ Reference< XPropertySet > xReplaced( xCols->getByIndex( nPos ), UNO_QUERY );
- // the application locale
- ::com::sun::star::lang::Locale aAppLocale = Application::GetSettings().GetUILocale();
+ OStaticDataAccessTools().TransferFormComponentProperties(
+ xReplaced, xNewCol, Application::GetSettings().GetUILocale() );
- OStaticDataAccessTools().TransferFormComponentProperties(xReplaced, xCol, aAppLocale);
+ xCols->replaceByIndex( nPos, makeAny( xNewCol ) );
+ ::comphelper::disposeComponent( xReplaced );
- xCols->replaceByIndex( nPos, makeAny( xCol ) );
- ::comphelper::disposeComponent(xReplaced);
+ eInspectorAction = eUpdateInspector;
+ xColumnToInspect = xNewCol;
}
else
{
// Standardlabel setzen
- ::rtl::OUString sLabelBase = String(SVX_RES(RID_STR_COLUMN));
+ ::rtl::OUString sLabelBase = String( SVX_RES( RID_STR_COLUMN ) );
// disambiguate the name
- Reference< XNameAccess > xColNames(xCols, UNO_QUERY);
+ Reference< XNameAccess > xColNames( xCols, UNO_QUERY );
::rtl::OUString sLabel;
- for (sal_Int32 i=1; i<65535; ++i)
+ for ( sal_Int32 i=1; i<65535; ++i )
{
sLabel = sLabelBase;
- sLabel += ::rtl::OUString::valueOf((sal_Int32)i);
- if (!xColNames->hasByName(sLabel))
+ sLabel += ::rtl::OUString::valueOf( (sal_Int32)i );
+ if ( !xColNames->hasByName( sLabel ) )
break;
}
// no fallback in case the name is not unique (which is rather improbable) ....
- xCol->setPropertyValue(FM_PROP_LABEL, makeAny(sLabel));
- xCol->setPropertyValue(FM_PROP_NAME, makeAny(sLabel));
+ xNewCol->setPropertyValue( FM_PROP_LABEL, makeAny( sLabel ) );
+ xNewCol->setPropertyValue( FM_PROP_NAME, makeAny( sLabel ) );
FormControlFactory determine( ::comphelper::getProcessServiceFactory() );
- determine.initializeControlModel( DocumentClassification::classifyHostDocument( xCols ), xCol );
+ determine.initializeControlModel( DocumentClassification::classifyHostDocument( xCols ), xNewCol );
- xCols->insertByIndex( nPos, makeAny( xCol ) );
+ xCols->insertByIndex( nPos, makeAny( xNewCol ) );
}
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ SfxViewFrame* pCurrentFrame = SfxViewFrame::Current();
+ OSL_ENSURE( pCurrentFrame, "FmGridHeader::PostExecuteColumnContextMenu: no view frame -> no bindings -> no property browser!" );
+ if ( pCurrentFrame )
+ {
+ if ( eInspectorAction == eUpdateInspector )
+ {
+ if ( !pCurrentFrame->HasChildWindow( SID_FM_SHOW_PROPERTIES ) )
+ eInspectorAction = eNone;
+ }
+
+ if ( eInspectorAction != eNone )
+ {
+ FmInterfaceItem aIFaceItem( SID_FM_SHOW_PROPERTY_BROWSER, xColumnToInspect );
+ SfxBoolItem aShowItem( SID_FM_SHOW_PROPERTIES, eInspectorAction == eCloseInspector ? FALSE : TRUE );
+ pCurrentFrame->GetBindings().GetDispatcher()->Execute( SID_FM_SHOW_PROPERTY_BROWSER, SFX_CALLMODE_ASYNCHRON,
+ &aIFaceItem, &aShowItem, 0L );
}
}
}
@@ -1597,7 +1612,7 @@ void FmGridControl::ColumnMoved(sal_uInt16 nId)
DbGridColumn* pCol = DbGridControl::GetColumns().GetObject(GetModelColumnPos(nId));
Reference< ::com::sun::star::beans::XPropertySet > xCol;
- // Einfuegen mu� sich an den Column Positionen orientieren
+ // Einfuegen muß sich an den Column Positionen orientieren
sal_Int32 i;
Reference< XInterface > xCurrent;
for (i = 0; !xCol.is() && i < xColumns->getCount(); i++)
diff --git a/svx/source/fmcomp/gridctrl.src b/svx/source/fmcomp/gridctrl.src
index 423a3478d4..9dc141821f 100644
--- a/svx/source/fmcomp/gridctrl.src
+++ b/svx/source/fmcomp/gridctrl.src
@@ -156,7 +156,7 @@ Menu RID_SVXMNU_COLS
{
Identifier = SID_FM_HIDECOL ;
HelpID = SID_FM_HIDECOL ;
- Text [ en-US ] = "~Hide Columns";
+ Text [ en-US ] = "~Hide Column";
};
MenuItem
{
diff --git a/svx/source/form/fmcontrolbordermanager.cxx b/svx/source/form/fmcontrolbordermanager.cxx
index 53e71f5bb1..17bd103463 100644
--- a/svx/source/form/fmcontrolbordermanager.cxx
+++ b/svx/source/form/fmcontrolbordermanager.cxx
@@ -381,10 +381,10 @@ namespace svxform
{
try
{
- Reference< XVclWindowPeer > xPeer( _rxControl.is() ? _rxControl->getPeer() : Reference< XWindowPeer >(), UNO_QUERY );
- OSL_ENSURE( xPeer.is(), "ControlBorderManager::validityChanged: invalid control/peer!" );
+ OSL_ENSURE( _rxControl.is(), "ControlBorderManager::validityChanged: invalid control!" );
OSL_ENSURE( _rxValidatable.is(), "ControlBorderManager::validityChanged: invalid validatable!" );
+ Reference< XVclWindowPeer > xPeer( _rxControl.is() ? _rxControl->getPeer() : Reference< XWindowPeer >(), UNO_QUERY );
if ( !xPeer.is() || !_rxValidatable.is() )
return;
diff --git a/svx/source/form/fmctrler.cxx b/svx/source/form/fmctrler.cxx
index af7f7bc3b9..5d4126b346 100644
--- a/svx/source/form/fmctrler.cxx
+++ b/svx/source/form/fmctrler.cxx
@@ -1292,17 +1292,16 @@ void SAL_CALL FmXFormController::textChanged(const TextEvent& e) throw( RuntimeE
}
}
}
- else if (!m_bModified)
- onModify( e.Source );
+ else
+ impl_onModify();
}
// XItemListener
//------------------------------------------------------------------------------
-void SAL_CALL FmXFormController::itemStateChanged(const ItemEvent& rEvent) throw( RuntimeException )
+void SAL_CALL FmXFormController::itemStateChanged(const ItemEvent& /*rEvent*/) throw( RuntimeException )
{
OSL_ENSURE( !impl_isDisposed_nofail(), "FmXFormController: already disposed!" );
- if (!m_bModified)
- onModify( rEvent.Source );
+ impl_onModify();
}
// XModificationBroadcaster
@@ -1322,33 +1321,41 @@ void FmXFormController::removeModifyListener(const Reference< XModifyListener >
// XModificationListener
//------------------------------------------------------------------------------
-void FmXFormController::modified(const EventObject& rEvent) throw( RuntimeException )
+void FmXFormController::modified( const EventObject& _rEvent ) throw( RuntimeException )
{
OSL_ENSURE( !impl_isDisposed_nofail(), "FmXFormController: already disposed!" );
- if (!m_bModified)
- onModify( rEvent.Source );
+
+ try
+ {
+ if ( _rEvent.Source != m_xActiveControl )
+ { // let this control grab the focus
+ // (this case may happen if somebody moves the scroll wheel of the mouse over a control
+ // which does not have the focus)
+ // 85511 - 29.05.2001 - frank.schoenheit@germany.sun.com
+ //
+ // also, it happens when an image control gets a new image by double-clicking it
+ // #i88458# / 2009-01-12 / frank.schoenheit@sun.com
+ Reference< XWindow > xControlWindow( _rEvent.Source, UNO_QUERY_THROW );
+ xControlWindow->setFocus();
+ }
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ impl_onModify();
}
//------------------------------------------------------------------------------
-void FmXFormController::onModify( const Reference< XInterface >& _rxControl )
+void FmXFormController::impl_onModify()
{
OSL_ENSURE( !impl_isDisposed_nofail(), "FmXFormController: already disposed!" );
- if (!m_bModified)
+
{
::osl::MutexGuard aGuard( m_aMutex );
- m_bModified = sal_True;
-
- }
-
- Reference< XControl > xSourceControl(_rxControl, UNO_QUERY);
- if (xSourceControl.get() != m_xCurrentControl.get())
- { // let this control grab the focus
- // (this case may happen if somebody moves the scroll wheel of the mouse over a control
- // which does not have the focus)
- // 85511 - 29.05.2001 - frank.schoenheit@germany.sun.com
- Reference< XWindow > xControlWindow(_rxControl, UNO_QUERY);
- if (xControlWindow.is())
- xControlWindow->setFocus();
+ if ( !m_bModified )
+ m_bModified = sal_True;
}
EventObject aEvt(static_cast<cppu::OWeakObject*>(this));
@@ -1980,9 +1987,7 @@ namespace
}
else if ( _rxControl.is() )
{
- xBound = Reference< XBoundComponent >( _rxControl->getModel(), UNO_QUERY );
-
- Reference< XPropertySet > xModelProps( xBound, UNO_QUERY );
+ Reference< XPropertySet > xModelProps( _rxControl->getModel(), UNO_QUERY );
if ( xModelProps.is() && ::comphelper::hasProperty( FM_PROP_BOUNDFIELD, xModelProps ) )
{
Reference< XPropertySet > xField;
diff --git a/svx/source/form/fmpgeimp.cxx b/svx/source/form/fmpgeimp.cxx
index 33abba6842..35d3037268 100644
--- a/svx/source/form/fmpgeimp.cxx
+++ b/svx/source/form/fmpgeimp.cxx
@@ -32,31 +32,25 @@
#include "precompiled_svx.hxx"
#include "svxerr.hxx"
#include "fmpgeimp.hxx"
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/io/XObjectInputStream.hpp>
-#include <com/sun/star/io/XPersistObject.hpp>
-#include <com/sun/star/io/XObjectOutputStream.hpp>
-#include <com/sun/star/io/XActiveDataSink.hpp>
-#include <com/sun/star/io/XActiveDataSource.hpp>
-#include <com/sun/star/io/XMarkableStream.hpp>
-#include <sfx2/objsh.hxx>
#include "fmundo.hxx"
#include "fmtools.hxx"
-#ifndef _SVX_FMPROP_HRC
#include "fmprop.hrc"
-#endif
-#include <svx/fmglob.hxx>
#include "fmservs.hxx"
-
-// #include "fmstream.hxx"
#include "fmobj.hxx"
+#include "svditer.hxx"
+#include "fmresids.hrc"
+#include "dbtoolsclient.hxx"
+#include "treevisitor.hxx"
+
+#include <com/sun/star/sdb/CommandType.hpp>
+#include <com/sun/star/util/XCloneable.hpp>
+
+#include <sfx2/objsh.hxx>
+#include <svx/fmglob.hxx>
#include <svx/fmpage.hxx>
#include <svx/fmmodel.hxx>
#include <tools/resid.hxx>
#include <tools/diagnose_ex.h>
-#include "svditer.hxx"
-
-#include "fmresids.hrc"
#include <tools/shl.hxx>
#include <vcl/stdtext.hxx>
#include <svx/dialmgr.hxx>
@@ -64,7 +58,6 @@
#include <comphelper/uno3.hxx>
#include <comphelper/types.hxx>
#include <unotools/streamwrap.hxx>
-#include "dbtoolsclient.hxx"
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
@@ -73,6 +66,8 @@ using namespace ::com::sun::star::sdb;
using namespace ::com::sun::star::container;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::form;
+using ::com::sun::star::util::XCloneable;
+using ::com::sun::star::awt::XControlModel;
using namespace ::svxform;
DBG_NAME(FmFormPageImpl)
@@ -86,54 +81,159 @@ FmFormPageImpl::FmFormPageImpl(FmFormPage* _pPage)
}
//------------------------------------------------------------------------------
+namespace
+{
+ typedef Reference< XInterface > FormComponent;
+
+ class FormComponentInfo
+ {
+ public:
+ size_t childCount( const FormComponent& _component ) const
+ {
+ Reference< XIndexAccess > xContainer( _component, UNO_QUERY );
+ if ( xContainer.is() )
+ return xContainer->getCount();
+ return 0;
+ }
+
+ FormComponent getChild( const FormComponent& _component, size_t _index ) const
+ {
+ Reference< XIndexAccess > xContainer( _component, UNO_QUERY_THROW );
+ return FormComponent( xContainer->getByIndex( _index ), UNO_QUERY );
+ }
+ };
+
+ typedef ::std::pair< FormComponent, FormComponent > FormComponentPair;
+
+ class FormHierarchyComparator
+ {
+ public:
+ FormHierarchyComparator()
+ {
+ }
+
+ size_t childCount( const FormComponentPair& _components ) const
+ {
+ size_t lhsCount = m_aComponentInfo.childCount( _components.first );
+ size_t rhsCount = m_aComponentInfo.childCount( _components.second );
+ if ( lhsCount != rhsCount )
+ throw RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Found inconsistent form component hierarchies (1)!" ) ), NULL );
+ return lhsCount;
+ }
+
+ FormComponentPair getChild( const FormComponentPair& _components, size_t _index ) const
+ {
+ return FormComponentPair(
+ m_aComponentInfo.getChild( _components.first, _index ),
+ m_aComponentInfo.getChild( _components.second, _index )
+ );
+ }
+ private:
+ FormComponentInfo m_aComponentInfo;
+ };
+
+ typedef ::std::map< Reference< XControlModel >, Reference< XControlModel >, ::comphelper::OInterfaceCompare< XControlModel > > MapControlModels;
+
+ class FormComponentAssignment
+ {
+ public:
+ FormComponentAssignment( MapControlModels& _out_controlModelMap )
+ :m_rControlModelMap( _out_controlModelMap )
+ {
+ }
+
+ void process( const FormComponentPair& _component )
+ {
+ Reference< XControlModel > lhsControlModel( _component.first, UNO_QUERY );
+ Reference< XControlModel > rhsControlModel( _component.second, UNO_QUERY );
+ if ( lhsControlModel.is() != rhsControlModel.is() )
+ throw RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Found inconsistent form component hierarchies (2)!" ) ), NULL );
+
+ if ( lhsControlModel.is() )
+ m_rControlModelMap[ lhsControlModel ] = rhsControlModel;
+ }
+
+ private:
+ MapControlModels& m_rControlModelMap;
+ };
+}
+
+//------------------------------------------------------------------------------
FmFormPageImpl::FmFormPageImpl(FmFormPage* _pPage, const FmFormPageImpl& rImpl)
- :pPage(_pPage)
- ,m_bFirstActivation( sal_True )
- ,m_bAttemptedFormCreation( false )
+ :pPage(_pPage)
+ ,m_bFirstActivation( sal_True )
+ ,m_bAttemptedFormCreation( false )
{
DBG_CTOR(FmFormPageImpl,NULL);
- OSL_ENSURE( false, "FmFormPageImpl::FmFormPageImpl: I'm pretty sure the below code isn't valid anymore ..." );
- // streaming of form/controls is not a supported operation anymore, in that it is not guaranteed
- // that really everything is copied. XCloneable should be used instead.
+ // clone the Forms collection
+ Reference< XCloneable > xCloneable( const_cast< FmFormPageImpl& >( rImpl ).getForms( false ), UNO_QUERY );
+ if ( !xCloneable.is() )
+ {
+ // great, nothing to do
+ OSL_ENSURE( !const_cast< FmFormPageImpl& >( rImpl ).getForms( false ).is(), "FmFormPageImpl::FmFormPageImpl: a non-cloneable forms container!?" );
+ return;
+ }
+ try
+ {
+ m_xForms.set( xCloneable->createClone(), UNO_QUERY_THROW );
- // copy it by streaming
- // creating a pipe
- Reference< ::com::sun::star::io::XOutputStream > xOutPipe(::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.io.Pipe")), UNO_QUERY);
- Reference< ::com::sun::star::io::XInputStream > xInPipe(xOutPipe, UNO_QUERY);
+ // create a mapping between the original control models and their clones
+ MapControlModels aModelAssignment;
- // creating the mark streams
- Reference< ::com::sun::star::io::XInputStream > xMarkIn(::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.io.MarkableInputStream")), UNO_QUERY);
- Reference< ::com::sun::star::io::XActiveDataSink > xMarkSink(xMarkIn, UNO_QUERY);
+ typedef TreeVisitor< FormComponentPair, FormHierarchyComparator, FormComponentAssignment > FormComponentVisitor;
+ FormComponentVisitor aVisitor = FormComponentVisitor( FormHierarchyComparator() );
- Reference< ::com::sun::star::io::XOutputStream > xMarkOut(::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.io.MarkableOutputStream")), UNO_QUERY);
- Reference< ::com::sun::star::io::XActiveDataSource > xMarkSource(xMarkOut, UNO_QUERY);
+ FormComponentAssignment aAssignmentProcessor( aModelAssignment );
+ aVisitor.process( FormComponentPair( xCloneable, m_xForms ), aAssignmentProcessor );
- // connect pipe and sink
- Reference< ::com::sun::star::io::XActiveDataSink > xSink(::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.io.ObjectInputStream")), UNO_QUERY);
+ // assign the cloned models to their SdrObjects
+ SdrObjListIter aForeignIter( *rImpl.pPage );
+ SdrObjListIter aOwnIter( *pPage );
- // connect pipe and source
- Reference< ::com::sun::star::io::XActiveDataSource > xSource(::comphelper::getProcessServiceFactory()->createInstance(::rtl::OUString::createFromAscii("com.sun.star.io.ObjectOutputStream")), UNO_QUERY);
+ OSL_ENSURE( aForeignIter.IsMore() == aOwnIter.IsMore(), "FmFormPageImpl::FmFormPageImpl: inconsistent number of objects (1)!" );
+ while ( aForeignIter.IsMore() && aOwnIter.IsMore() )
+ {
+ FmFormObj* pForeignObj = dynamic_cast< FmFormObj* >( aForeignIter.Next() );
+ FmFormObj* pOwnObj = dynamic_cast< FmFormObj* >( aOwnIter.Next() );
- Reference< ::com::sun::star::io::XObjectOutputStream > xOutStrm(xSource, UNO_QUERY);
- Reference< ::com::sun::star::io::XObjectInputStream > xInStrm(xSink, UNO_QUERY);
+ bool bForeignIsForm = pForeignObj && ( pForeignObj->GetObjInventor() == FmFormInventor );
+ bool bOwnIsForm = pOwnObj && ( pOwnObj->GetObjInventor() == FmFormInventor );
- if (xMarkSink.is() && xMarkSource.is() && xSink.is() && xSource.is() && xOutStrm.is() && xInStrm.is())
+ if ( bForeignIsForm != bOwnIsForm )
+ {
+ OSL_ENSURE( false, "FmFormPageImpl::FmFormPageImpl: inconsistent ordering of objects!" );
+ // don't attempt to do further assignments, something's completely messed up
+ break;
+ }
+ if ( !bForeignIsForm )
+ // no form control -> next round
+ continue;
+
+ Reference< XControlModel > xForeignModel( pForeignObj->GetUnoControlModel() );
+ OSL_ENSURE( xForeignModel.is(), "FmFormPageImpl::FmFormPageImpl: control shape without control!" );
+ if ( !xForeignModel.is() )
+ // the SdrObject does not have a UNO Control Model. This is pathological, but well ... So the cloned
+ // SdrObject will also not have a UNO Control Model.
+ continue;
+
+ OSL_ENSURE( !pOwnObj->GetUnoControlModel().is(), "FmFormPageImpl::FmFormPageImpl: there already is a control model for the target object!" );
+
+ MapControlModels::const_iterator assignment = aModelAssignment.find( xForeignModel );
+ OSL_ENSURE( assignment != aModelAssignment.end(), "FmFormPageImpl::FmFormPageImpl: no clone found for this model!" );
+ if ( assignment == aModelAssignment.end() )
+ // the source SdrObject has a model, but it is not part of the model hierarchy in rImpl.getForms().
+ // Pathological, too ...
+ continue;
+
+ pOwnObj->SetUnoControlModel( assignment->second );
+ }
+ OSL_ENSURE( aForeignIter.IsMore() == aOwnIter.IsMore(), "FmFormPageImpl::FmFormPageImpl: inconsistent number of objects (2)!" );
+ }
+ catch( const Exception& )
{
- xMarkSink->setInputStream(xInPipe);
- xMarkSource->setOutputStream(xOutPipe);
- xSink->setInputStream(xMarkIn);
- xSource->setOutputStream(xMarkOut);
-
- // write the objects to source
- rImpl.write(xOutStrm);
- xOutStrm->closeOutput();
-
- // read them
- read(xInStrm);
- xInStrm->closeInput();
+ DBG_UNHANDLED_EXCEPTION();
}
- // what to do else ?
}
//------------------------------------------------------------------------------
@@ -458,6 +558,17 @@ Reference< XForm > FmFormPageImpl::findFormForDataSource(
//------------------------------------------------------------------------------
::rtl::OUString FmFormPageImpl::setUniqueName(const Reference< XFormComponent > & xFormComponent, const Reference< XForm > & xControls)
{
+#if OSL_DEBUG_LEVEL > 0
+ try
+ {
+ Reference< XChild > xChild( xFormComponent, UNO_QUERY_THROW );
+ OSL_ENSURE( !xChild->getParent().is(), "FmFormPageImpl::setUniqueName: to be called before insertion!" );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+#endif
::rtl::OUString sName;
Reference< ::com::sun::star::beans::XPropertySet > xSet(xFormComponent, UNO_QUERY);
if (xSet.is())
@@ -554,89 +665,3 @@ UniString FmFormPageImpl::getDefaultName( sal_Int16 _nClassId, const Reference<
return sName;
}
-//------------------------------------------------------------------------------
-void FmFormPageImpl::write(const Reference< ::com::sun::star::io::XObjectOutputStream > & xOutStrm) const
-{
- Reference< ::com::sun::star::io::XMarkableStream > xMarkStrm(xOutStrm, UNO_QUERY);
- if (!xMarkStrm.is())
- return; // exception
-
- // sortieren der objectlist nach der Reihenfolge
- FmObjectList aList;
- fillList(aList, *pPage, sal_True);
-
- // schreiben aller forms
- Reference< ::com::sun::star::io::XPersistObject > xAsPersist( const_cast< FmFormPageImpl* >( this )->getForms(), UNO_QUERY);
- if (xAsPersist.is())
- xAsPersist->write(xOutStrm);
- // don't use the writeObject of the stream, as this wouldn't be compatible with older documents
-
- // objectliste einfuegen
- sal_Int32 nLength = aList.Count();
-
- // schreiben der laenge
- xOutStrm->writeLong(nLength);
-
- for (sal_Int32 i = 0; i < nLength; i++)
- {
- // schreiben des Objects mit Marke
- // Marke um an den Anfang zu springen
- Reference< ::com::sun::star::io::XPersistObject > xObj(aList.GetObject(i)->GetUnoControlModel(), UNO_QUERY);
- if (xObj.is())
- {
- xOutStrm->writeObject(xObj);
- }
- else
- {
- ;// exception
- }
- }
-}
-
-//------------------------------------------------------------------------------
-void FmFormPageImpl::read(const Reference< ::com::sun::star::io::XObjectInputStream > & xInStrm)
-{
- Reference< ::com::sun::star::io::XMarkableStream > xMarkStrm(xInStrm, UNO_QUERY);
- if (!xMarkStrm.is())
- return; // exception
-
- // sortieren der objectlist nach der Reihenfolge
- FmObjectList aList;
- fillList(aList, *pPage, sal_False);
-
- // lesen aller forms
- Reference< ::com::sun::star::io::XPersistObject > xAsPersist( getForms(), UNO_QUERY );
- if (xAsPersist.is())
- xAsPersist->read(xInStrm);
- // don't use the readObject of the stream, as this wouldn't be compatible with older documents
-
- // Zuordnung der Formobjekte zu den FormComponents
- sal_Int32 nLength = xInStrm->readLong();
- DBG_ASSERT(nLength == (sal_Int32) aList.Count(), "Fehler beim Lesen der UnoModels");
- for (sal_Int32 i = 0; i < nLength; i++)
- {
- Reference< ::com::sun::star::awt::XControlModel > xRef(xInStrm->readObject(), UNO_QUERY);
- if (i < (sal_Int32)aList.Count())
- aList.GetObject(i)->SetUnoControlModel(xRef);
- }
-}
-
-//------------------------------------------------------------------------------
-void FmFormPageImpl::fillList(FmObjectList& rList, const SdrObjList& rObjList, sal_Bool bConnected) const
-{
- SdrObjListIter aIter(rObjList);
- while (aIter.IsMore())
- {
- SdrObject* pObj = aIter.Next();
- if (pObj && pObj->GetObjInventor() == FmFormInventor)
- {
- FmFormObj* pFormObj = PTR_CAST(FmFormObj, pObj);
- DBG_ASSERT(!bConnected || pFormObj->GetUnoControlModel().is(), "Controlshape ohne Control");
- if (!bConnected || pFormObj->GetUnoControlModel().is())
- rList.Insert(pFormObj, LIST_APPEND);
-
- }
- }
-}
-
-
diff --git a/svx/source/form/fmshell.cxx b/svx/source/form/fmshell.cxx
index 8d54f4fabf..7ae8d6a811 100644
--- a/svx/source/form/fmshell.cxx
+++ b/svx/source/form/fmshell.cxx
@@ -317,37 +317,37 @@ sal_uInt16 FmFormShell::PrepareClose(sal_Bool bUI, sal_Bool bForBrowsing)
{
const ::svx::ControllerFeatures& rController = GetImpl()->getActiveControllerFeatures();
if ( rController->commitCurrentControl() )
- {
- sal_Bool bModified = rController->isModifiedRow();
-
- if ( bModified && bUI )
{
- QueryBox aQry(NULL, SVX_RES(RID_QRY_SAVEMODIFIED));
- if (bForBrowsing)
- aQry.AddButton(SVX_RES(RID_STR_NEW_TASK), RET_NEWTASK,
- BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_FOCUSBUTTON);
+ sal_Bool bModified = rController->isModifiedRow();
- switch (aQry.Execute())
+ if ( bModified && bUI )
{
- case RET_NO:
- bModified = sal_False;
- GetImpl()->didPrepareClose( sal_True );
- break;
-
- case RET_CANCEL:
- return sal_False;
-
- case RET_NEWTASK:
- return RET_NEWTASK;
+ QueryBox aQry(NULL, SVX_RES(RID_QRY_SAVEMODIFIED));
+ if (bForBrowsing)
+ aQry.AddButton(SVX_RES(RID_STR_NEW_TASK), RET_NEWTASK,
+ BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_FOCUSBUTTON);
+
+ switch (aQry.Execute())
+ {
+ case RET_NO:
+ bModified = sal_False;
+ GetImpl()->didPrepareClose( sal_True );
+ break;
+
+ case RET_CANCEL:
+ return sal_False;
+
+ case RET_NEWTASK:
+ return RET_NEWTASK;
+ }
+
+ if ( bModified )
+ bResult = rController->commitCurrentRecord( );
}
-
- if ( bModified )
- bResult = rController->commitCurrentRecord( );
}
}
}
}
- }
return bResult;
}
diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index f0b22ad4ea..8c3258fa64 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -1970,7 +1970,8 @@ bool FmXFormShell::setCurrentSelection( const InterfaceBag& _rSelection )
}
}
- impl_updateCurrentForm( xNewCurrentForm );
+ if ( !m_aCurrentSelection.empty() )
+ impl_updateCurrentForm( xNewCurrentForm );
// ensure some slots are updated
for ( size_t i = 0; i < sizeof( SelObjectSlotMap ) / sizeof( SelObjectSlotMap[0] ); ++i )
@@ -2561,6 +2562,10 @@ void FmXFormShell::RemoveElement(const Reference< XInterface>& Element)
RemoveElement(xElement);
}
}
+
+ InterfaceBag::iterator wasSelectedPos = m_aCurrentSelection.find( Element );
+ if ( wasSelectedPos != m_aCurrentSelection.end() )
+ m_aCurrentSelection.erase( wasSelectedPos );
}
//------------------------------------------------------------------------------
diff --git a/svx/source/form/fmstring.src b/svx/source/form/fmstring.src
index a7cd5809fe..0ee4113cf5 100644
--- a/svx/source/form/fmstring.src
+++ b/svx/source/form/fmstring.src
@@ -583,3 +583,7 @@ String RID_STR_ALREADYEXISTOVERWRITE
{
Text [ en-US ] = "The file already exists. Overwrite?" ;
};
+String RID_STR_OBJECT_LABEL
+{
+ Text [ en-US ] = "#object# label";
+};
diff --git a/svx/source/form/fmvwimp.cxx b/svx/source/form/fmvwimp.cxx
index e6167f4cbf..a82064d6b6 100644
--- a/svx/source/form/fmvwimp.cxx
+++ b/svx/source/form/fmvwimp.cxx
@@ -1084,10 +1084,10 @@ namespace
rPage.GetImpl()->findPlaceInFormComponentHierarchy( xFormComponent, _rxDataSource, _rDataSourceName, _rCommand, _nCommandType ),
UNO_SET_THROW );
+ rPage.GetImpl()->setUniqueName( xFormComponent, xTargetForm );
+
Reference< XIndexContainer > xFormAsContainer( xTargetForm, UNO_QUERY_THROW );
xFormAsContainer->insertByIndex( xFormAsContainer->getCount(), makeAny( xFormComponent ) );
-
- rPage.GetImpl()->setUniqueName( xFormComponent, xTargetForm );
}
}
@@ -1287,12 +1287,16 @@ SdrObject* FmXFormView::implCreateFieldControl( const ::svx::ODataAccessDescript
}
//////////////////////////////////////////////////////////////////////
- // Objekte gruppieren
+ // group objects
+ bool bCheckbox = ( OBJ_FM_CHECKBOX == nOBJID );
+ OSL_ENSURE( !bCheckbox || !pLabel, "FmXFormView::implCreateFieldControl: why was there a label created for a check box?" );
+ if ( bCheckbox )
+ return pControl;
+
SdrObjGroup* pGroup = new SdrObjGroup();
SdrObjList* pObjList = pGroup->GetSubList();
- pObjList->InsertObject(pLabel);
- pObjList->InsertObject(pControl);
-
+ pObjList->InsertObject( pLabel );
+ pObjList->InsertObject( pControl );
if ( bDateNTimeField )
{ // so far we created a date field only, but we also need a time field
@@ -1311,7 +1315,7 @@ SdrObject* FmXFormView::implCreateFieldControl( const ::svx::ODataAccessDescript
}
catch(const Exception&)
{
- DBG_ERROR("FmXFormView::implCreateFieldControl: caught an exception while creating the control !");
+ DBG_UNHANDLED_EXCEPTION();
}
@@ -1331,7 +1335,6 @@ SdrObject* FmXFormView::implCreateXFormsControl( const ::svx::OXFormsDescriptor
try
{
// determine the table/query field which we should create a control for
- Reference< XPropertySet > xField;
Reference< XNumberFormats > xNumberFormats;
::rtl::OUString sLabelPostfix = _rDesc.szName;
@@ -1382,7 +1385,7 @@ SdrObject* FmXFormView::implCreateXFormsControl( const ::svx::OXFormsDescriptor
{
SdrUnoObj* pLabel( NULL );
SdrUnoObj* pControl( NULL );
- if ( !createControlLabelPair( *pOutDev, 0, 0, xField, xNumberFormats, nOBJID, sLabelPostfix,
+ if ( !createControlLabelPair( *pOutDev, 0, 0, NULL, xNumberFormats, nOBJID, sLabelPostfix,
pLabel, pControl )
)
{
@@ -1398,6 +1401,11 @@ SdrObject* FmXFormView::implCreateXFormsControl( const ::svx::OXFormsDescriptor
if ( xBindableValue.is() )
xBindableValue->setValueBinding(xValueBinding);
+ bool bCheckbox = ( OBJ_FM_CHECKBOX == nOBJID );
+ OSL_ENSURE( !bCheckbox || !pLabel, "FmXFormView::implCreateXFormsControl: why was there a label created for a check box?" );
+ if ( bCheckbox )
+ return pControl;
+
//////////////////////////////////////////////////////////////////////
// group objects
SdrObjGroup* pGroup = new SdrObjGroup();
@@ -1459,12 +1467,14 @@ bool FmXFormView::createControlLabelPair( OutputDevice& _rOutDev, sal_Int32 _nXO
return false;
// insert the control model(s) into the form component hierachy
- lcl_insertIntoFormComponentHierarchy_throw( *m_pView, *_rpLabel, _rxDataSource, _rDataSourceName, _rCommand, _nCommandType );
+ if ( _rpLabel )
+ lcl_insertIntoFormComponentHierarchy_throw( *m_pView, *_rpLabel, _rxDataSource, _rDataSourceName, _rCommand, _nCommandType );
lcl_insertIntoFormComponentHierarchy_throw( *m_pView, *_rpControl, _rxDataSource, _rDataSourceName, _rCommand, _nCommandType );
// some context-dependent initializations
FormControlFactory aControlFactory( m_aContext );
- aControlFactory.initializeControlModel( impl_getDocumentType(), *_rpLabel );
+ if ( _rpLabel )
+ aControlFactory.initializeControlModel( impl_getDocumentType(), *_rpLabel );
aControlFactory.initializeControlModel( impl_getDocumentType(), *_rpControl );
return true;
@@ -1487,17 +1497,7 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext&
aFieldName >>= sFieldName;
}
- // the label
- ::std::auto_ptr< SdrUnoObj > pLabel( dynamic_cast< SdrUnoObj* >(
- SdrObjFactory::MakeNewObject( _nInventor, _nLabelObjectID, _pLabelPage, _pModel ) ) );
- OSL_ENSURE( pLabel.get(), "FmXFormView::createControlLabelPair: could not create the label!" );
- if ( !pLabel.get() )
- return false;
-
- Reference< XPropertySet > xLabelSet( pLabel->GetUnoControlModel(), UNO_QUERY );
- xLabelSet->setPropertyValue( FM_PROP_LABEL, makeAny( sFieldName + _rFieldPostfix ) );
-
- // positionieren unter Beachtung der Einstellungen des Ziel-Output-Devices
+ // calculate the positions, respecting the settings of the target device
::Size aTextSize( _rOutDev.GetTextWidth(sFieldName + _rFieldPostfix), _rOutDev.GetTextHeight() );
MapMode eTargetMode( _rOutDev.GetMapMode() ),
@@ -1513,13 +1513,38 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext&
aRealSize.Width() = std::max(aRealSize.Width(), aDefTxtSize.Width());
aRealSize.Height()= aDefSize.Height();
- // je nach Skalierung des Zieldevices muss die Groesse noch normiert werden (#53523#)
+ // adjust to scaling of the target device (#53523#)
aRealSize.Width() = long(Fraction(aRealSize.Width(), 1) * eTargetMode.GetScaleX());
aRealSize.Height() = long(Fraction(aRealSize.Height(), 1) * eTargetMode.GetScaleY());
- pLabel->SetLogicRect( ::Rectangle(
- _rOutDev.LogicToLogic( ::Point( _nXOffsetMM, _nYOffsetMM ), eSourceMode, eTargetMode ),
- _rOutDev.LogicToLogic( aRealSize, eSourceMode, eTargetMode )
- ) );
+
+ // for boolean fields, we do not create a label, but just a checkbox
+ bool bNeedLabel = ( _nControlObjectID != OBJ_FM_CHECKBOX );
+
+ // the label
+ ::std::auto_ptr< SdrUnoObj > pLabel;
+ Reference< XPropertySet > xLabelModel;
+ if ( bNeedLabel )
+ {
+ pLabel.reset( dynamic_cast< SdrUnoObj* >(
+ SdrObjFactory::MakeNewObject( _nInventor, _nLabelObjectID, _pLabelPage, _pModel ) ) );
+ OSL_ENSURE( pLabel.get(), "FmXFormView::createControlLabelPair: could not create the label!" );
+ if ( !pLabel.get() )
+ return false;
+
+ xLabelModel.set( pLabel->GetUnoControlModel(), UNO_QUERY );
+ if ( xLabelModel.is() )
+ {
+ xLabelModel->setPropertyValue( FM_PROP_LABEL, makeAny( sFieldName + _rFieldPostfix ) );
+ String sObjectLabel( SVX_RES( RID_STR_OBJECT_LABEL ) );
+ sObjectLabel.SearchAndReplaceAllAscii( "#object#", sFieldName );
+ xLabelModel->setPropertyValue( FM_PROP_NAME, makeAny( ::rtl::OUString( sObjectLabel ) ) );
+ }
+
+ pLabel->SetLogicRect( ::Rectangle(
+ _rOutDev.LogicToLogic( ::Point( _nXOffsetMM, _nYOffsetMM ), eSourceMode, eTargetMode ),
+ _rOutDev.LogicToLogic( aRealSize, eSourceMode, eTargetMode )
+ ) );
+ }
// the control
::std::auto_ptr< SdrUnoObj > pControl( dynamic_cast< SdrUnoObj* >(
@@ -1532,21 +1557,29 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext&
if ( !xControlSet.is() )
return false;
- // position
- ::Size szControlSize;
- if (DataType::BIT == nDataType || nDataType == DataType::BOOLEAN )
- szControlSize = aDefSize;
- else if (OBJ_FM_IMAGECONTROL == _nControlObjectID || DataType::LONGVARCHAR == nDataType || DataType::LONGVARBINARY == nDataType )
- szControlSize = aDefImageSize;
- else
- szControlSize = aDefSize;
+ // size of the control
+ ::Size aControlSize( aDefSize );
+ switch ( nDataType )
+ {
+ case DataType::BIT:
+ case DataType::BOOLEAN:
+ aControlSize = aDefSize;
+ break;
+ case DataType::LONGVARCHAR:
+ case DataType::LONGVARBINARY:
+ aControlSize = aDefImageSize;
+ break;
+ }
+
+ if ( OBJ_FM_IMAGECONTROL == _nControlObjectID )
+ aControlSize = aDefImageSize;
+
+ aControlSize.Width() = long(Fraction(aControlSize.Width(), 1) * eTargetMode.GetScaleX());
+ aControlSize.Height() = long(Fraction(aControlSize.Height(), 1) * eTargetMode.GetScaleY());
- // normieren wie oben
- szControlSize.Width() = long(Fraction(szControlSize.Width(), 1) * eTargetMode.GetScaleX());
- szControlSize.Height() = long(Fraction(szControlSize.Height(), 1) * eTargetMode.GetScaleY());
pControl->SetLogicRect( ::Rectangle(
_rOutDev.LogicToLogic( ::Point( aRealSize.Width() + _nXOffsetMM, _nYOffsetMM ), eSourceMode, eTargetMode ),
- _rOutDev.LogicToLogic( szControlSize, eSourceMode, eTargetMode )
+ _rOutDev.LogicToLogic( aControlSize, eSourceMode, eTargetMode )
) );
// some initializations
@@ -1554,8 +1587,16 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext&
if ( aFieldName.hasValue() )
{
- xControlSet->setPropertyValue(FM_PROP_CONTROLSOURCE, aFieldName);
- xControlSet->setPropertyValue(FM_PROP_NAME, aFieldName);
+ xControlSet->setPropertyValue( FM_PROP_CONTROLSOURCE, aFieldName );
+ xControlSet->setPropertyValue( FM_PROP_NAME, aFieldName );
+ if ( !bNeedLabel )
+ {
+ // no dedicated label control => use the label property
+ if ( xControlPropInfo->hasPropertyByName( FM_PROP_LABEL ) )
+ xControlSet->setPropertyValue( FM_PROP_LABEL, makeAny( sFieldName + _rFieldPostfix ) );
+ else
+ OSL_ENSURE( false, "FmXFormView::createControlLabelPair: can't set a label for the control!" );
+ }
}
if ( nDataType == DataType::LONGVARCHAR && xControlPropInfo->hasPropertyByName( FM_PROP_MULTILINE ) )
@@ -1564,13 +1605,11 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext&
}
// announce the label to the control
- if (xControlPropInfo->hasPropertyByName(FM_PROP_CONTROLLABEL))
+ if ( xControlPropInfo->hasPropertyByName( FM_PROP_CONTROLLABEL ) && xLabelModel.is() )
{
- // (try-catch as the control may refuse a model without the right service name - which we don't know
- // usually a fixed text we use as label should be accepted, but to be sure ....)
try
{
- xControlSet->setPropertyValue(FM_PROP_CONTROLLABEL, makeAny(xLabelSet));
+ xControlSet->setPropertyValue( FM_PROP_CONTROLLABEL, makeAny( xLabelModel ) );
}
catch( const Exception& )
{
@@ -1578,8 +1617,11 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext&
}
}
- FormControlFactory aControlFactory( _rContext );
- aControlFactory.initializeFieldDependentProperties( _rxField, xControlSet, _rxNumberFormats );
+ if ( _rxField.is() )
+ {
+ FormControlFactory aControlFactory( _rContext );
+ aControlFactory.initializeFieldDependentProperties( _rxField, xControlSet, _rxNumberFormats );
+ }
_rpLabel = pLabel.release();
_rpControl = pControl.release();
diff --git a/svx/source/form/formcontrolling.cxx b/svx/source/form/formcontrolling.cxx
index edd2f533d4..668267e141 100644
--- a/svx/source/form/formcontrolling.cxx
+++ b/svx/source/form/formcontrolling.cxx
@@ -1,590 +1,608 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: formcontrolling.cxx,v $
- * $Revision: 1.13 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#include "formcontrolling.hxx"
-#include "fmurl.hxx"
-#include <svx/svxids.hrc>
-#include "fmprop.hrc"
-#include "fmtools.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/form/runtime/FormOperations.hpp>
-#include <com/sun/star/form/runtime/FormFeature.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-/** === end UNO includes === **/
-
-#include <tools/diagnose_ex.h>
-#include <cppuhelper/exc_hlp.hxx>
-#include <osl/diagnose.h>
-
-#include <functional>
-#include <algorithm>
-
-//........................................................................
-namespace svx
-{
-//........................................................................
-
- using namespace ::svxform;
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::lang::XMultiServiceFactory;
- using ::com::sun::star::form::XFormController;
- using ::com::sun::star::form::XForm;
- using ::com::sun::star::form::runtime::FormOperations;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::sdbc::XRowSet;
- using ::com::sun::star::form::runtime::FeatureState;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::beans::NamedValue;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::beans::XPropertySet;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::sdbc::SQLException;
- /** === end UNO using === **/
- namespace FormFeature = ::com::sun::star::form::runtime::FormFeature;
-
- //====================================================================
- //= FeatureSlotTranslation
- //====================================================================
- namespace
- {
- struct FeatureDescription
- {
- ::rtl::OUString sURL; // the URL
- sal_Int32 nSlotId; // the SFX-compatible slot ID
- sal_Int16 nFormFeature; // the css.form.runtime.FormFeature ID
- };
- typedef ::std::vector< FeatureDescription > FeatureDescriptions;
-
- //................................................................
- const FeatureDescriptions& getFeatureDescriptions()
- {
- static FeatureDescriptions s_aFeatureDescriptions;
- if ( s_aFeatureDescriptions.empty() )
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if ( s_aFeatureDescriptions.empty() )
- {
- FeatureDescription aDescriptions[] = {
- { FMURL_FORM_POSITION, SID_FM_RECORD_ABSOLUTE, FormFeature::MoveAbsolute },
- { FMURL_FORM_RECORDCOUNT, SID_FM_RECORD_TOTAL, FormFeature::TotalRecords },
- { FMURL_RECORD_MOVEFIRST, SID_FM_RECORD_FIRST, FormFeature::MoveToFirst },
- { FMURL_RECORD_MOVEPREV, SID_FM_RECORD_PREV, FormFeature::MoveToPrevious },
- { FMURL_RECORD_MOVENEXT, SID_FM_RECORD_NEXT, FormFeature::MoveToNext },
- { FMURL_RECORD_MOVELAST, SID_FM_RECORD_LAST, FormFeature::MoveToLast },
- { FMURL_RECORD_MOVETONEW, SID_FM_RECORD_NEW, FormFeature::MoveToInsertRow },
- { FMURL_RECORD_SAVE, SID_FM_RECORD_SAVE, FormFeature::SaveRecordChanges },
- { FMURL_RECORD_DELETE, SID_FM_RECORD_DELETE, FormFeature::DeleteRecord },
- { FMURL_FORM_REFRESH, SID_FM_REFRESH, FormFeature::ReloadForm },
- { FMURL_FORM_REFRESH_CURRENT_CONTROL,
- SID_FM_REFRESH_FORM_CONTROL,FormFeature::RefreshCurrentControl },
- { FMURL_RECORD_UNDO, SID_FM_RECORD_UNDO, FormFeature::UndoRecordChanges },
- { FMURL_FORM_SORT_UP, SID_FM_SORTUP, FormFeature::SortAscending },
- { FMURL_FORM_SORT_DOWN, SID_FM_SORTDOWN, FormFeature::SortDescending },
- { FMURL_FORM_SORT, SID_FM_ORDERCRIT, FormFeature::InteractiveSort },
- { FMURL_FORM_AUTO_FILTER, SID_FM_AUTOFILTER, FormFeature::AutoFilter },
- { FMURL_FORM_FILTER, SID_FM_FILTERCRIT, FormFeature::InteractiveFilter },
- { FMURL_FORM_APPLY_FILTER, SID_FM_FORM_FILTERED, FormFeature::ToggleApplyFilter },
- { FMURL_FORM_REMOVE_FILTER, SID_FM_REMOVE_FILTER_SORT, FormFeature::RemoveFilterAndSort }
- };
- for ( size_t i=0; i<sizeof(aDescriptions)/sizeof(aDescriptions[0]); ++i )
- s_aFeatureDescriptions.push_back( aDescriptions[i] );
- }
- };
- return s_aFeatureDescriptions;
- }
- }
-
- //--------------------------------------------------------------------
- namespace
- {
- //................................................................
- struct MatchFeatureDescriptionByURL : public ::std::unary_function< FeatureDescription, bool >
- {
- const ::rtl::OUString& m_rURL;
- MatchFeatureDescriptionByURL( const ::rtl::OUString& _rURL ) :m_rURL( _rURL ) { }
-
- bool operator()( const FeatureDescription& _compare )
- {
- return m_rURL == _compare.sURL;
- }
- };
-
- //................................................................
- struct MatchFeatureDescriptionBySlotId : public ::std::unary_function< FeatureDescription, bool >
- {
- sal_Int32 m_nSlotId;
- MatchFeatureDescriptionBySlotId( sal_Int32 _nSlotId ) :m_nSlotId( _nSlotId ) { }
-
- bool operator()( const FeatureDescription& _compare )
- {
- return m_nSlotId == _compare.nSlotId;
- }
- };
-
- //................................................................
- struct MatchFeatureDescriptionByFormFeature : public ::std::unary_function< FeatureDescription, bool >
- {
- sal_Int32 m_nFormFeature;
- MatchFeatureDescriptionByFormFeature( sal_Int32 _nFormFeature ) :m_nFormFeature( _nFormFeature ) { }
-
- bool operator()( const FeatureDescription& _compare )
- {
- return m_nFormFeature == _compare.nFormFeature;
- }
- };
-
- //................................................................
- struct FormFeatureToSlotId : public ::std::unary_function< sal_Int16, sal_Int32 >
- {
- sal_Int32 operator()( sal_Int16 _FormFeature )
- {
- return FeatureSlotTranslation::getSlotIdForFormFeature( _FormFeature );
- }
- };
- }
-
- //--------------------------------------------------------------------
- sal_Int32 FeatureSlotTranslation::getControllerFeatureSlotIdForURL( const ::rtl::OUString& _rMainURL )
- {
- const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
- FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionByURL( _rMainURL ) );
- return ( pos != rDescriptions.end() ) ? pos->nSlotId : -1;
- }
-
- //--------------------------------------------------------------------
- ::rtl::OUString FeatureSlotTranslation::getControllerFeatureURLForSlotId( sal_Int32 _nSlotId )
- {
- const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
- FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionBySlotId( _nSlotId ) );
- OSL_ENSURE( pos != rDescriptions.end(), "FeatureSlotTranslation::getControllerFeatureURLForSlotId: not found!" );
- return ( pos != rDescriptions.end() ) ? pos->sURL : ::rtl::OUString();
- }
-
- //--------------------------------------------------------------------
- sal_Bool FeatureSlotTranslation::isFeatureURL( const ::rtl::OUString& _rMainURL )
- {
- return ( _rMainURL.indexOf( FMURL_FORMSLOTS_PREFIX ) == 0 );
- }
-
- //--------------------------------------------------------------------
- sal_Int16 FeatureSlotTranslation::getFormFeatureForSlotId( sal_Int32 _nSlotId )
- {
- const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
- FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionBySlotId( _nSlotId ) );
- OSL_ENSURE( pos != rDescriptions.end(), "FeatureSlotTranslation::getFormFeatureForSlotId: not found!" );
- return ( pos != rDescriptions.end() ) ? pos->nFormFeature : -1;
- }
-
- //--------------------------------------------------------------------
- sal_Int32 FeatureSlotTranslation::getSlotIdForFormFeature( sal_Int16 _nFormFeature )
- {
- const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
- FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionByFormFeature( _nFormFeature ) );
- OSL_ENSURE( pos != rDescriptions.end(), "FeatureSlotTranslation::getSlotIdForFormFeature: not found!" );
- return ( pos != rDescriptions.end() ) ? pos->nSlotId : -1;
- }
-
- //====================================================================
- //= ControllerFeatures
- //====================================================================
- //--------------------------------------------------------------------
- ControllerFeatures::ControllerFeatures( const Reference< XMultiServiceFactory >& _rxORB, IControllerFeatureInvalidation* _pInvalidationCallback )
- :m_aContext( _rxORB )
- ,m_pInvalidationCallback( _pInvalidationCallback )
- ,m_pImpl( NULL )
- {
- }
-
- //--------------------------------------------------------------------
- ControllerFeatures::ControllerFeatures( const Reference< XMultiServiceFactory >& _rxORB,
- const Reference< XFormController >& _rxController, IControllerFeatureInvalidation* _pInvalidationCallback )
- :m_aContext( _rxORB )
- ,m_pInvalidationCallback( _pInvalidationCallback )
- ,m_pImpl( NULL )
- {
- assign( _rxController );
- }
-
- //--------------------------------------------------------------------
- ControllerFeatures::ControllerFeatures( const Reference< XMultiServiceFactory >& _rxORB,
- const Reference< XForm >& _rxForm, IControllerFeatureInvalidation* _pInvalidationCallback )
- :m_aContext( _rxORB )
- ,m_pInvalidationCallback( _pInvalidationCallback )
- ,m_pImpl( NULL )
- {
- assign( _rxForm );
- }
-
- //--------------------------------------------------------------------
- void ControllerFeatures::assign( const Reference< XFormController >& _rxController )
- {
- dispose();
- m_pImpl = new FormControllerHelper( m_aContext, _rxController, m_pInvalidationCallback );
- m_pImpl->acquire();
- }
-
- //--------------------------------------------------------------------
- void ControllerFeatures::assign( const Reference< XForm >& _rxForm )
- {
- dispose();
- m_pImpl = new FormControllerHelper( m_aContext, _rxForm, m_pInvalidationCallback );
- m_pImpl->acquire();
- }
-
- //--------------------------------------------------------------------
- ControllerFeatures::~ControllerFeatures()
- {
- dispose();
- }
-
- //--------------------------------------------------------------------
- void ControllerFeatures::dispose()
- {
- if ( m_pImpl )
- {
- m_pImpl->dispose();
- m_pImpl->release();
- m_pImpl = NULL;
- }
- }
-
- //====================================================================
- //= FormControllerHelper
- //====================================================================
- //--------------------------------------------------------------------
- FormControllerHelper::FormControllerHelper( const ::comphelper::ComponentContext& _rContext,
- const Reference< XFormController >& _rxController, IControllerFeatureInvalidation* _pInvalidationCallback )
- :m_aContext( _rContext )
- ,m_pInvalidationCallback( _pInvalidationCallback )
- {
- osl_incrementInterlockedCount( &m_refCount );
- try
- {
- m_xFormOperations = FormOperations::createWithFormController( m_aContext.getUNOContext(), _rxController );
- if ( m_xFormOperations.is() )
- m_xFormOperations->setFeatureInvalidation( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
-
- //--------------------------------------------------------------------
- FormControllerHelper::FormControllerHelper( const ::comphelper::ComponentContext& _rContext,
- const Reference< XForm >& _rxForm, IControllerFeatureInvalidation* _pInvalidationCallback )
- :m_aContext( _rContext )
- ,m_pInvalidationCallback( _pInvalidationCallback )
- {
- osl_incrementInterlockedCount( &m_refCount );
- try
- {
- m_xFormOperations = FormOperations::createWithForm( m_aContext.getUNOContext(), _rxForm );
- if ( m_xFormOperations.is() )
- m_xFormOperations->setFeatureInvalidation( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
-
- //--------------------------------------------------------------------
- FormControllerHelper::~FormControllerHelper( )
- {
- try
- {
- acquire();
- dispose();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- //--------------------------------------------------------------------
- void FormControllerHelper::dispose()
- {
- if ( m_xFormOperations.is() )
- m_xFormOperations->dispose();
- m_xFormOperations.clear();
- }
-
- //--------------------------------------------------------------------
- sal_Bool FormControllerHelper::isEnabled( sal_Int32 _nSlotId ) const
- {
- if ( !m_xFormOperations.is() )
- return sal_False;
- return m_xFormOperations->isEnabled( FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ) );
- }
-
- //--------------------------------------------------------------------
- Reference< XRowSet > FormControllerHelper::getCursor() const
- {
- Reference< XRowSet > xCursor;
- if ( m_xFormOperations.is() )
- xCursor = m_xFormOperations->getCursor();
- return xCursor;
- }
-
- //--------------------------------------------------------------------
- void FormControllerHelper::getState( sal_Int32 _nSlotId, FeatureState& _rState ) const
- {
- if ( m_xFormOperations.is() )
- _rState = m_xFormOperations->getState( FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ) );
- }
-
- //--------------------------------------------------------------------
- sal_Bool FormControllerHelper::commitCurrentControl( ) const
- {
- sal_Bool bSuccess = sal_False;
- if ( m_xFormOperations.is() )
- bSuccess = m_xFormOperations->commitCurrentControl();
- return bSuccess;
- }
-
- //--------------------------------------------------------------------
- sal_Bool FormControllerHelper::commitCurrentRecord() const
- {
- sal_Bool bSuccess = sal_False;
- try
- {
- if ( m_xFormOperations.is() )
- {
- sal_Bool bDummy( sal_False );
- bSuccess = m_xFormOperations->commitCurrentRecord( bDummy );
- }
- }
- catch( const Exception& )
- {
- bSuccess = sal_False;
- }
- return bSuccess;
- }
-
- //--------------------------------------------------------------------
- bool FormControllerHelper::moveRight( ) const
- {
- try
- {
- if ( m_xFormOperations.is() )
- {
- m_xFormOperations->execute( FormFeature::MoveToNext );
- return true;
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return false;
- }
-
- //--------------------------------------------------------------------
- bool FormControllerHelper::moveLeft( ) const
- {
- try
- {
- if ( m_xFormOperations.is() )
- {
- m_xFormOperations->execute( FormFeature::MoveToPrevious );
- return true;
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return false;
- }
-
- //--------------------------------------------------------------------
- void FormControllerHelper::execute( sal_Int32 _nSlotId, const ::rtl::OUString& _rParamName, const Any& _rParamValue ) const
- {
- if ( !m_xFormOperations.is() )
- return;
-
- Sequence< NamedValue > aArguments(1);
- aArguments[0].Name = _rParamName;
- aArguments[0].Value = _rParamValue;
-
- Any aError;
- try
- {
- m_xFormOperations->executeWithArguments( FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ), aArguments );
- }
- catch ( const SQLException& ) { aError = ::cppu::getCaughtException(); }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- if ( aError.hasValue() )
- displayException( aError );
- }
-
- //--------------------------------------------------------------------
- void FormControllerHelper::execute( sal_Int32 _nSlotId ) const
- {
- if ( !m_xFormOperations.is() )
- return;
-
- Any aError;
- try
- {
- m_xFormOperations->execute( FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ) );
- }
- catch ( const SQLException& ) { aError = ::cppu::getCaughtException(); }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- if ( aError.hasValue() )
- displayException( aError );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL FormControllerHelper::invalidateFeatures( const Sequence< ::sal_Int16 >& _Features ) throw (RuntimeException)
- {
- if ( !m_pInvalidationCallback )
- // nobody's interested in ...
- return;
-
- ::std::vector< sal_Int32 > aFeatures( _Features.getLength() );
- ::std::transform(
- _Features.getConstArray(),
- _Features.getConstArray() + _Features.getLength(),
- aFeatures.begin(),
- FormFeatureToSlotId()
- );
-
- m_pInvalidationCallback->invalidateFeatures( aFeatures );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL FormControllerHelper::invalidateAllFeatures() throw (RuntimeException)
- {
- if ( !m_pInvalidationCallback )
- // nobody's interested in ...
- return;
-
- // actually, it's a little bit more than the supported features,
- // but on the medium term, we are to support everything listed
- // here
- ::std::vector< sal_Int32 > aSupportedFeatures;
- sal_Int32 pSupportedFeatures[] =
- {
- SID_FM_RECORD_FIRST,
- SID_FM_RECORD_NEXT,
- SID_FM_RECORD_PREV,
- SID_FM_RECORD_LAST,
- SID_FM_RECORD_NEW,
- SID_FM_RECORD_DELETE,
- SID_FM_RECORD_ABSOLUTE,
- SID_FM_RECORD_TOTAL,
- SID_FM_RECORD_SAVE,
- SID_FM_RECORD_UNDO,
- SID_FM_REMOVE_FILTER_SORT,
- SID_FM_SORTUP,
- SID_FM_SORTDOWN,
- SID_FM_ORDERCRIT,
- SID_FM_AUTOFILTER,
- SID_FM_FILTERCRIT,
- SID_FM_FORM_FILTERED,
- SID_FM_REFRESH,
- SID_FM_REFRESH_FORM_CONTROL,
- SID_FM_SEARCH,
- SID_FM_FILTER_START,
- SID_FM_VIEW_AS_GRID
- };
- sal_Int32 nFeatureCount = sizeof( pSupportedFeatures ) / sizeof( pSupportedFeatures[ 0 ] );
- aSupportedFeatures.resize( nFeatureCount );
- ::std::copy( pSupportedFeatures, pSupportedFeatures + nFeatureCount, aSupportedFeatures.begin() );
-
- m_pInvalidationCallback->invalidateFeatures( aSupportedFeatures );
- }
-
- //--------------------------------------------------------------------
- sal_Bool FormControllerHelper::isInsertionRow() const
- {
- sal_Bool bIs = sal_False;
- if ( m_xFormOperations.is() )
- bIs = m_xFormOperations->isInsertionRow();
- return bIs;
- }
-
- //--------------------------------------------------------------------
- sal_Bool FormControllerHelper::isModifiedRow() const
- {
- sal_Bool bIs = sal_False;
- if ( m_xFormOperations.is() )
- bIs = m_xFormOperations->isModifiedRow();
- return bIs;
- }
- //--------------------------------------------------------------------
- bool FormControllerHelper::canDoFormFilter() const
- {
- if ( !m_xFormOperations.is() )
- return false;
-
- bool bCanDo = false;
- try
- {
- Reference< XPropertySet > xCursorProperties( m_xFormOperations->getCursor(), UNO_QUERY_THROW );
-
- bool bEscapeProcessing( false );
- OSL_VERIFY( xCursorProperties->getPropertyValue( FM_PROP_ESCAPE_PROCESSING ) >>= bEscapeProcessing );
-
- ::rtl::OUString sActiveCommand;
- OSL_VERIFY( xCursorProperties->getPropertyValue( FM_PROP_ACTIVECOMMAND ) >>= sActiveCommand );
-
- bool bInsertOnlyForm( false );
- OSL_VERIFY( xCursorProperties->getPropertyValue( FM_PROP_INSERTONLY ) >>= bInsertOnlyForm );
-
- bCanDo = bEscapeProcessing && ( sActiveCommand.getLength() > 0 ) && !bInsertOnlyForm;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return bCanDo;
- }
-
-//........................................................................
-} // namespace svx
-//........................................................................
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: formcontrolling.cxx,v $
+ * $Revision: 1.13 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svx.hxx"
+
+#include "formcontrolling.hxx"
+#include "fmurl.hxx"
+#include <svx/svxids.hrc>
+#include "fmprop.hrc"
+#include "fmtools.hxx"
+
+/** === begin UNO includes === **/
+#include <com/sun/star/form/runtime/FormOperations.hpp>
+#include <com/sun/star/form/runtime/FormFeature.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/sdb/XSQLErrorBroadcaster.hpp>
+/** === end UNO includes === **/
+
+#include <tools/diagnose_ex.h>
+#include <comphelper/anytostring.hxx>
+#include <cppuhelper/exc_hlp.hxx>
+#include <osl/diagnose.h>
+
+#include <functional>
+#include <algorithm>
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ using namespace ::svxform;
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::lang::XMultiServiceFactory;
+ using ::com::sun::star::form::XFormController;
+ using ::com::sun::star::form::XForm;
+ using ::com::sun::star::form::runtime::FormOperations;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::sdbc::XRowSet;
+ using ::com::sun::star::form::runtime::FeatureState;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::beans::NamedValue;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::beans::XPropertySet;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::sdb::XSQLErrorBroadcaster;
+ using ::com::sun::star::sdb::SQLErrorEvent;
+ using ::com::sun::star::lang::EventObject;
+ /** === end UNO using === **/
+ namespace FormFeature = ::com::sun::star::form::runtime::FormFeature;
+
+ //====================================================================
+ //= FeatureSlotTranslation
+ //====================================================================
+ namespace
+ {
+ struct FeatureDescription
+ {
+ ::rtl::OUString sURL; // the URL
+ sal_Int32 nSlotId; // the SFX-compatible slot ID
+ sal_Int16 nFormFeature; // the css.form.runtime.FormFeature ID
+ };
+ typedef ::std::vector< FeatureDescription > FeatureDescriptions;
+
+ //................................................................
+ const FeatureDescriptions& getFeatureDescriptions()
+ {
+ static FeatureDescriptions s_aFeatureDescriptions;
+ if ( s_aFeatureDescriptions.empty() )
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( s_aFeatureDescriptions.empty() )
+ {
+ FeatureDescription aDescriptions[] = {
+ { FMURL_FORM_POSITION, SID_FM_RECORD_ABSOLUTE, FormFeature::MoveAbsolute },
+ { FMURL_FORM_RECORDCOUNT, SID_FM_RECORD_TOTAL, FormFeature::TotalRecords },
+ { FMURL_RECORD_MOVEFIRST, SID_FM_RECORD_FIRST, FormFeature::MoveToFirst },
+ { FMURL_RECORD_MOVEPREV, SID_FM_RECORD_PREV, FormFeature::MoveToPrevious },
+ { FMURL_RECORD_MOVENEXT, SID_FM_RECORD_NEXT, FormFeature::MoveToNext },
+ { FMURL_RECORD_MOVELAST, SID_FM_RECORD_LAST, FormFeature::MoveToLast },
+ { FMURL_RECORD_MOVETONEW, SID_FM_RECORD_NEW, FormFeature::MoveToInsertRow },
+ { FMURL_RECORD_SAVE, SID_FM_RECORD_SAVE, FormFeature::SaveRecordChanges },
+ { FMURL_RECORD_DELETE, SID_FM_RECORD_DELETE, FormFeature::DeleteRecord },
+ { FMURL_FORM_REFRESH, SID_FM_REFRESH, FormFeature::ReloadForm },
+ { FMURL_FORM_REFRESH_CURRENT_CONTROL,
+ SID_FM_REFRESH_FORM_CONTROL,FormFeature::RefreshCurrentControl },
+ { FMURL_RECORD_UNDO, SID_FM_RECORD_UNDO, FormFeature::UndoRecordChanges },
+ { FMURL_FORM_SORT_UP, SID_FM_SORTUP, FormFeature::SortAscending },
+ { FMURL_FORM_SORT_DOWN, SID_FM_SORTDOWN, FormFeature::SortDescending },
+ { FMURL_FORM_SORT, SID_FM_ORDERCRIT, FormFeature::InteractiveSort },
+ { FMURL_FORM_AUTO_FILTER, SID_FM_AUTOFILTER, FormFeature::AutoFilter },
+ { FMURL_FORM_FILTER, SID_FM_FILTERCRIT, FormFeature::InteractiveFilter },
+ { FMURL_FORM_APPLY_FILTER, SID_FM_FORM_FILTERED, FormFeature::ToggleApplyFilter },
+ { FMURL_FORM_REMOVE_FILTER, SID_FM_REMOVE_FILTER_SORT, FormFeature::RemoveFilterAndSort }
+ };
+ for ( size_t i=0; i<sizeof(aDescriptions)/sizeof(aDescriptions[0]); ++i )
+ s_aFeatureDescriptions.push_back( aDescriptions[i] );
+ }
+ };
+ return s_aFeatureDescriptions;
+ }
+ }
+
+ //--------------------------------------------------------------------
+ namespace
+ {
+ //................................................................
+ struct MatchFeatureDescriptionByURL : public ::std::unary_function< FeatureDescription, bool >
+ {
+ const ::rtl::OUString& m_rURL;
+ MatchFeatureDescriptionByURL( const ::rtl::OUString& _rURL ) :m_rURL( _rURL ) { }
+
+ bool operator()( const FeatureDescription& _compare )
+ {
+ return m_rURL == _compare.sURL;
+ }
+ };
+
+ //................................................................
+ struct MatchFeatureDescriptionBySlotId : public ::std::unary_function< FeatureDescription, bool >
+ {
+ sal_Int32 m_nSlotId;
+ MatchFeatureDescriptionBySlotId( sal_Int32 _nSlotId ) :m_nSlotId( _nSlotId ) { }
+
+ bool operator()( const FeatureDescription& _compare )
+ {
+ return m_nSlotId == _compare.nSlotId;
+ }
+ };
+
+ //................................................................
+ struct MatchFeatureDescriptionByFormFeature : public ::std::unary_function< FeatureDescription, bool >
+ {
+ sal_Int32 m_nFormFeature;
+ MatchFeatureDescriptionByFormFeature( sal_Int32 _nFormFeature ) :m_nFormFeature( _nFormFeature ) { }
+
+ bool operator()( const FeatureDescription& _compare )
+ {
+ return m_nFormFeature == _compare.nFormFeature;
+ }
+ };
+
+ //................................................................
+ struct FormFeatureToSlotId : public ::std::unary_function< sal_Int16, sal_Int32 >
+ {
+ sal_Int32 operator()( sal_Int16 _FormFeature )
+ {
+ return FeatureSlotTranslation::getSlotIdForFormFeature( _FormFeature );
+ }
+ };
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int32 FeatureSlotTranslation::getControllerFeatureSlotIdForURL( const ::rtl::OUString& _rMainURL )
+ {
+ const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
+ FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionByURL( _rMainURL ) );
+ return ( pos != rDescriptions.end() ) ? pos->nSlotId : -1;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString FeatureSlotTranslation::getControllerFeatureURLForSlotId( sal_Int32 _nSlotId )
+ {
+ const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
+ FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionBySlotId( _nSlotId ) );
+ OSL_ENSURE( pos != rDescriptions.end(), "FeatureSlotTranslation::getControllerFeatureURLForSlotId: not found!" );
+ return ( pos != rDescriptions.end() ) ? pos->sURL : ::rtl::OUString();
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool FeatureSlotTranslation::isFeatureURL( const ::rtl::OUString& _rMainURL )
+ {
+ return ( _rMainURL.indexOf( FMURL_FORMSLOTS_PREFIX ) == 0 );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int16 FeatureSlotTranslation::getFormFeatureForSlotId( sal_Int32 _nSlotId )
+ {
+ const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
+ FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionBySlotId( _nSlotId ) );
+ OSL_ENSURE( pos != rDescriptions.end(), "FeatureSlotTranslation::getFormFeatureForSlotId: not found!" );
+ return ( pos != rDescriptions.end() ) ? pos->nFormFeature : -1;
+ }
+
+ //--------------------------------------------------------------------
+ sal_Int32 FeatureSlotTranslation::getSlotIdForFormFeature( sal_Int16 _nFormFeature )
+ {
+ const FeatureDescriptions& rDescriptions( getFeatureDescriptions() );
+ FeatureDescriptions::const_iterator pos = ::std::find_if( rDescriptions.begin(), rDescriptions.end(), MatchFeatureDescriptionByFormFeature( _nFormFeature ) );
+ OSL_ENSURE( pos != rDescriptions.end(), "FeatureSlotTranslation::getSlotIdForFormFeature: not found!" );
+ return ( pos != rDescriptions.end() ) ? pos->nSlotId : -1;
+ }
+
+ //====================================================================
+ //= ControllerFeatures
+ //====================================================================
+ //--------------------------------------------------------------------
+ ControllerFeatures::ControllerFeatures( const Reference< XMultiServiceFactory >& _rxORB, IControllerFeatureInvalidation* _pInvalidationCallback )
+ :m_aContext( _rxORB )
+ ,m_pInvalidationCallback( _pInvalidationCallback )
+ ,m_pImpl( NULL )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ ControllerFeatures::ControllerFeatures( const Reference< XMultiServiceFactory >& _rxORB,
+ const Reference< XFormController >& _rxController, IControllerFeatureInvalidation* _pInvalidationCallback )
+ :m_aContext( _rxORB )
+ ,m_pInvalidationCallback( _pInvalidationCallback )
+ ,m_pImpl( NULL )
+ {
+ assign( _rxController );
+ }
+
+ //--------------------------------------------------------------------
+ ControllerFeatures::ControllerFeatures( const Reference< XMultiServiceFactory >& _rxORB,
+ const Reference< XForm >& _rxForm, IControllerFeatureInvalidation* _pInvalidationCallback )
+ :m_aContext( _rxORB )
+ ,m_pInvalidationCallback( _pInvalidationCallback )
+ ,m_pImpl( NULL )
+ {
+ assign( _rxForm );
+ }
+
+ //--------------------------------------------------------------------
+ void ControllerFeatures::assign( const Reference< XFormController >& _rxController )
+ {
+ dispose();
+ m_pImpl = new FormControllerHelper( m_aContext, _rxController, m_pInvalidationCallback );
+ m_pImpl->acquire();
+ }
+
+ //--------------------------------------------------------------------
+ void ControllerFeatures::assign( const Reference< XForm >& _rxForm )
+ {
+ dispose();
+ m_pImpl = new FormControllerHelper( m_aContext, _rxForm, m_pInvalidationCallback );
+ m_pImpl->acquire();
+ }
+
+ //--------------------------------------------------------------------
+ ControllerFeatures::~ControllerFeatures()
+ {
+ dispose();
+ }
+
+ //--------------------------------------------------------------------
+ void ControllerFeatures::dispose()
+ {
+ if ( m_pImpl )
+ {
+ m_pImpl->dispose();
+ m_pImpl->release();
+ m_pImpl = NULL;
+ }
+ }
+
+ //====================================================================
+ //= FormControllerHelper
+ //====================================================================
+ //--------------------------------------------------------------------
+ FormControllerHelper::FormControllerHelper( const ::comphelper::ComponentContext& _rContext,
+ const Reference< XFormController >& _rxController, IControllerFeatureInvalidation* _pInvalidationCallback )
+ :m_aContext( _rContext )
+ ,m_pInvalidationCallback( _pInvalidationCallback )
+ {
+ osl_incrementInterlockedCount( &m_refCount );
+ try
+ {
+ m_xFormOperations = FormOperations::createWithFormController( m_aContext.getUNOContext(), _rxController );
+ if ( m_xFormOperations.is() )
+ m_xFormOperations->setFeatureInvalidation( this );
+
+ // to prevent the controller from displaying any error messages which happen while we operate on it,
+ // we add ourself as XSQLErrorListener. By contract, a FormController displays errors if and only if
+ // no SQLErrorListeners are registered.
+ Reference< XSQLErrorBroadcaster > xErrorBroadcast( _rxController, UNO_QUERY_THROW );
+ xErrorBroadcast->addSQLErrorListener( this );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ osl_decrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ FormControllerHelper::FormControllerHelper( const ::comphelper::ComponentContext& _rContext,
+ const Reference< XForm >& _rxForm, IControllerFeatureInvalidation* _pInvalidationCallback )
+ :m_aContext( _rContext )
+ ,m_pInvalidationCallback( _pInvalidationCallback )
+ {
+ osl_incrementInterlockedCount( &m_refCount );
+ try
+ {
+ m_xFormOperations = FormOperations::createWithForm( m_aContext.getUNOContext(), _rxForm );
+ if ( m_xFormOperations.is() )
+ m_xFormOperations->setFeatureInvalidation( this );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ osl_decrementInterlockedCount( &m_refCount );
+ }
+
+ //--------------------------------------------------------------------
+ FormControllerHelper::~FormControllerHelper( )
+ {
+ try
+ {
+ acquire();
+ dispose();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+ //--------------------------------------------------------------------
+ void FormControllerHelper::dispose()
+ {
+ if ( m_xFormOperations.is() )
+ m_xFormOperations->dispose();
+ m_xFormOperations.clear();
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool FormControllerHelper::isEnabled( sal_Int32 _nSlotId ) const
+ {
+ if ( !m_xFormOperations.is() )
+ return sal_False;
+ return m_xFormOperations->isEnabled( FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ) );
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XRowSet > FormControllerHelper::getCursor() const
+ {
+ Reference< XRowSet > xCursor;
+ if ( m_xFormOperations.is() )
+ xCursor = m_xFormOperations->getCursor();
+ return xCursor;
+ }
+
+ //--------------------------------------------------------------------
+ void FormControllerHelper::getState( sal_Int32 _nSlotId, FeatureState& _rState ) const
+ {
+ if ( m_xFormOperations.is() )
+ _rState = m_xFormOperations->getState( FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ) );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool FormControllerHelper::commitCurrentControl( ) const
+ {
+ return impl_operateForm_nothrow( COMMIT_CONTROL );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool FormControllerHelper::commitCurrentRecord() const
+ {
+ return impl_operateForm_nothrow( COMMIT_RECORD );
+ }
+
+ //--------------------------------------------------------------------
+ bool FormControllerHelper::moveRight( ) const
+ {
+ return impl_operateForm_nothrow( FormFeature::MoveToNext );
+ }
+
+ //--------------------------------------------------------------------
+ bool FormControllerHelper::moveLeft( ) const
+ {
+ return impl_operateForm_nothrow( FormFeature::MoveToPrevious );
+ }
+
+ //--------------------------------------------------------------------
+ void FormControllerHelper::execute( sal_Int32 _nSlotId, const ::rtl::OUString& _rParamName, const Any& _rParamValue ) const
+ {
+ Sequence< NamedValue > aArguments(1);
+ aArguments[0].Name = _rParamName;
+ aArguments[0].Value = _rParamValue;
+
+ impl_operateForm_nothrow( EXECUTE_ARGS, FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ), aArguments );
+ }
+
+ //--------------------------------------------------------------------
+ bool FormControllerHelper::impl_operateForm_nothrow( const FormOperation _eWhat, const sal_Int16 _nFeature,
+ const Sequence< NamedValue >& _rArguments ) const
+ {
+ if ( !m_xFormOperations.is() )
+ return false;
+
+ Any aError;
+ bool bSuccess = false;
+ const_cast< FormControllerHelper* >( this )->m_aOperationError.clear();
+ try
+ {
+ switch ( _eWhat )
+ {
+ case COMMIT_CONTROL:
+ bSuccess = m_xFormOperations->commitCurrentControl();
+ break;
+
+ case COMMIT_RECORD:
+ {
+ sal_Bool bDummy( sal_False );
+ bSuccess = m_xFormOperations->commitCurrentRecord( bDummy );
+ }
+ break;
+
+ case EXECUTE:
+ m_xFormOperations->execute( _nFeature );
+ bSuccess = true;
+ break;
+
+ case EXECUTE_ARGS:
+ m_xFormOperations->executeWithArguments( _nFeature, _rArguments );
+ bSuccess = true;
+ break;
+ }
+ }
+ catch ( const SQLException& )
+ {
+ aError = ::cppu::getCaughtException();
+ }
+ catch( const Exception& )
+ {
+ SQLException aFallbackError;
+ aFallbackError.Message = ::comphelper::anyToString( ::cppu::getCaughtException() );
+ aError <<= aFallbackError;
+ }
+
+ if ( bSuccess )
+ return true;
+
+ // display the error. Prefer the one reported in errorOccured over the one caught.
+ if ( m_aOperationError.hasValue() )
+ displayException( m_aOperationError );
+ else if ( aError.hasValue() )
+ displayException( aError );
+ else
+ OSL_ENSURE( false, "FormControllerHelper::impl_operateForm_nothrow: no success, but no error?" );
+
+ return false;
+ }
+
+ //--------------------------------------------------------------------
+ void FormControllerHelper::execute( sal_Int32 _nSlotId ) const
+ {
+ impl_operateForm_nothrow( EXECUTE, FeatureSlotTranslation::getFormFeatureForSlotId( _nSlotId ),
+ Sequence< NamedValue >() );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL FormControllerHelper::invalidateFeatures( const Sequence< ::sal_Int16 >& _Features ) throw (RuntimeException)
+ {
+ if ( !m_pInvalidationCallback )
+ // nobody's interested in ...
+ return;
+
+ ::std::vector< sal_Int32 > aFeatures( _Features.getLength() );
+ ::std::transform(
+ _Features.getConstArray(),
+ _Features.getConstArray() + _Features.getLength(),
+ aFeatures.begin(),
+ FormFeatureToSlotId()
+ );
+
+ m_pInvalidationCallback->invalidateFeatures( aFeatures );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL FormControllerHelper::invalidateAllFeatures() throw (RuntimeException)
+ {
+ if ( !m_pInvalidationCallback )
+ // nobody's interested in ...
+ return;
+
+ // actually, it's a little bit more than the supported features,
+ // but on the medium term, we are to support everything listed
+ // here
+ ::std::vector< sal_Int32 > aSupportedFeatures;
+ sal_Int32 pSupportedFeatures[] =
+ {
+ SID_FM_RECORD_FIRST,
+ SID_FM_RECORD_NEXT,
+ SID_FM_RECORD_PREV,
+ SID_FM_RECORD_LAST,
+ SID_FM_RECORD_NEW,
+ SID_FM_RECORD_DELETE,
+ SID_FM_RECORD_ABSOLUTE,
+ SID_FM_RECORD_TOTAL,
+ SID_FM_RECORD_SAVE,
+ SID_FM_RECORD_UNDO,
+ SID_FM_REMOVE_FILTER_SORT,
+ SID_FM_SORTUP,
+ SID_FM_SORTDOWN,
+ SID_FM_ORDERCRIT,
+ SID_FM_AUTOFILTER,
+ SID_FM_FILTERCRIT,
+ SID_FM_FORM_FILTERED,
+ SID_FM_REFRESH,
+ SID_FM_REFRESH_FORM_CONTROL,
+ SID_FM_SEARCH,
+ SID_FM_FILTER_START,
+ SID_FM_VIEW_AS_GRID
+ };
+ sal_Int32 nFeatureCount = sizeof( pSupportedFeatures ) / sizeof( pSupportedFeatures[ 0 ] );
+ aSupportedFeatures.resize( nFeatureCount );
+ ::std::copy( pSupportedFeatures, pSupportedFeatures + nFeatureCount, aSupportedFeatures.begin() );
+
+ m_pInvalidationCallback->invalidateFeatures( aSupportedFeatures );
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL FormControllerHelper::errorOccured( const SQLErrorEvent& _Event ) throw (RuntimeException)
+ {
+ OSL_ENSURE( !m_aOperationError.hasValue(), "FormControllerHelper::errorOccured: two errors during one operation?" );
+ m_aOperationError = _Event.Reason;
+ }
+
+ //--------------------------------------------------------------------
+ void SAL_CALL FormControllerHelper::disposing( const EventObject& /*_Source*/ ) throw (RuntimeException)
+ {
+ // not interested in
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool FormControllerHelper::isInsertionRow() const
+ {
+ sal_Bool bIs = sal_False;
+ if ( m_xFormOperations.is() )
+ bIs = m_xFormOperations->isInsertionRow();
+ return bIs;
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool FormControllerHelper::isModifiedRow() const
+ {
+ sal_Bool bIs = sal_False;
+ if ( m_xFormOperations.is() )
+ bIs = m_xFormOperations->isModifiedRow();
+ return bIs;
+ }
+ //--------------------------------------------------------------------
+ bool FormControllerHelper::canDoFormFilter() const
+ {
+ if ( !m_xFormOperations.is() )
+ return false;
+
+ bool bCanDo = false;
+ try
+ {
+ Reference< XPropertySet > xCursorProperties( m_xFormOperations->getCursor(), UNO_QUERY_THROW );
+
+ bool bEscapeProcessing( false );
+ OSL_VERIFY( xCursorProperties->getPropertyValue( FM_PROP_ESCAPE_PROCESSING ) >>= bEscapeProcessing );
+
+ ::rtl::OUString sActiveCommand;
+ OSL_VERIFY( xCursorProperties->getPropertyValue( FM_PROP_ACTIVECOMMAND ) >>= sActiveCommand );
+
+ bool bInsertOnlyForm( false );
+ OSL_VERIFY( xCursorProperties->getPropertyValue( FM_PROP_INSERTONLY ) >>= bInsertOnlyForm );
+
+ bCanDo = bEscapeProcessing && ( sActiveCommand.getLength() > 0 ) && !bInsertOnlyForm;
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ return bCanDo;
+ }
+
+//........................................................................
+} // namespace svx
+//........................................................................
diff --git a/svx/source/inc/fmctrler.hxx b/svx/source/inc/fmctrler.hxx
index 0e86b17d39..cfe5049e59 100644
--- a/svx/source/inc/fmctrler.hxx
+++ b/svx/source/inc/fmctrler.hxx
@@ -555,7 +555,7 @@ protected:
bool impl_isDisposed_nofail() const { return FmXFormController_BASE::rBHelper.bDisposed; }
- void onModify( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxControl );
+ void impl_onModify();
sal_Bool isLocked() const {return m_bLocked;}
sal_Bool determineLockState() const;
diff --git a/svx/source/inc/fmpgeimp.hxx b/svx/source/inc/fmpgeimp.hxx
index e2669c4531..5cf46310d6 100644
--- a/svx/source/inc/fmpgeimp.hxx
+++ b/svx/source/inc/fmpgeimp.hxx
@@ -110,12 +110,6 @@ public:
const Link& GetFormsCreationHdl() const { return m_aFormsCreationHdl; }
protected:
- // lesen und schreiben der Objecte
- void write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& OutStream) const;
- void read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream>& InStream);
-
- void fillList(FmObjectList& rList, const SdrObjList& rObjList, sal_Bool bConnected) const;
-
/** finds a form with a given data source signature
@param rForm
the form to start the search with. This form, including all possible sub forms,
diff --git a/svx/source/inc/fmresids.hrc b/svx/source/inc/fmresids.hrc
index 2561a6fc7a..a5f35af4e0 100644
--- a/svx/source/inc/fmresids.hrc
+++ b/svx/source/inc/fmresids.hrc
@@ -263,6 +263,7 @@
#define RID_STR_SVT_SQL_SYNTAX_QUERY_EXISTS (RID_FORMS_START + 147)
#define RID_STR_READONLY_VIEW (RID_FORMS_START + 148)
#define RID_STR_ALREADYEXISTOVERWRITE (RID_FORMS_START + 149)
+#define RID_STR_OBJECT_LABEL (RID_FORMS_START + 150)
// Error-String-Id's -----------------------------------------------------------
#define RID_ERR_START (RID_FORMS_START + 600)
diff --git a/svx/source/inc/fmtools.hxx b/svx/source/inc/fmtools.hxx
index a45b85c5d0..3da2c92116 100644
--- a/svx/source/inc/fmtools.hxx
+++ b/svx/source/inc/fmtools.hxx
@@ -39,9 +39,7 @@
#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
#include <com/sun/star/sdb/XColumn.hpp>
#include <com/sun/star/sdb/XColumnUpdate.hpp>
-#ifndef _COM_SUN_STAR_SDBC_SQLERROREVENT_HPP_
#include <com/sun/star/sdb/SQLErrorEvent.hpp>
-#endif
#include <com/sun/star/sdbc/XConnection.hpp>
#include <com/sun/star/sdbc/XResultSet.hpp>
#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
@@ -81,9 +79,7 @@
#include <tools/time.hxx>
#include <tools/datetime.hxx>
-#ifndef _SVX_FMPROP_HRC
#include "fmprop.hrc"
-#endif
#include <com/sun/star/sdbc/XConnection.hpp>
#include <com/sun/star/io/XObjectInputStream.hpp>
#include <com/sun/star/io/XObjectOutputStream.hpp>
diff --git a/svx/source/inc/formcontrolling.hxx b/svx/source/inc/formcontrolling.hxx
index 57a7f10b0d..50f27f45ff 100644
--- a/svx/source/inc/formcontrolling.hxx
+++ b/svx/source/inc/formcontrolling.hxx
@@ -1,284 +1,311 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: formcontrolling.hxx,v $
- * $Revision: 1.7 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef SVX_FORMCONTROLLING_HXX
-#define SVX_FORMCONTROLLING_HXX
-
-#include <com/sun/star/form/XFormController.hpp>
-#include <com/sun/star/form/XForm.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/form/runtime/FeatureState.hpp>
-#include <com/sun/star/form/runtime/XFormOperations.hpp>
-
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/componentcontext.hxx>
-
-#include <vector>
-
-//........................................................................
-namespace svx
-{
-//........................................................................
-
- //====================================================================
- //= FeatureSlotTranslation
- //====================================================================
- class FeatureSlotTranslation
- {
- public:
- /// retrieves the feature id for a given feature URL
- static sal_Int32 getControllerFeatureSlotIdForURL( const ::rtl::OUString& _rMainURL );
-
- /// retrieves the feature URL for a given feature id
- static ::rtl::OUString getControllerFeatureURLForSlotId( sal_Int32 _nSlotId );
-
- /// determines whether the given URL is a controller feature URL
- static sal_Bool isFeatureURL( const ::rtl::OUString& _rMainURL );
-
- /// retrieves the css.form.runtime.FormFeature ID for a given slot ID
- static sal_Int16 getFormFeatureForSlotId( sal_Int32 _nSlotId );
-
- /// retrieves the slot id for a given css.form.runtime.FormFeature ID
- static sal_Int32 getSlotIdForFormFeature( sal_Int16 _nFormFeature );
- };
-
- //====================================================================
- //= IControllerFeatureInvalidation
- //====================================================================
- class IControllerFeatureInvalidation
- {
- public:
- /** invalidates the given features
-
- Invalidation means that any user interface representation (such as toolbox buttons), or
- any dispatches associated with the features in question are potentially out-of-date, and
- need to be updated
-
- @param _rFeatures
- Ids of the features to be invalidated.
- */
- virtual void invalidateFeatures( const ::std::vector< sal_Int32 >& _rFeatures ) = 0;
- };
-
- //====================================================================
- //= ControllerFeatures
- //====================================================================
- class FormControllerHelper;
- /** easier access to an FormControllerHelper instance
- */
- class ControllerFeatures
- {
- protected:
- ::comphelper::ComponentContext m_aContext;
- IControllerFeatureInvalidation* m_pInvalidationCallback; // necessary as long as m_pImpl is not yet constructed
- FormControllerHelper* m_pImpl;
-
- public:
- /** standard ctor
-
- The instance is not functional until <method>assign</method> is used.
-
- @param _rxORB
- a multi service factory for creating various needed components
-
- @param _pInvalidationCallback
- the callback for invalidating feature states
- */
- ControllerFeatures(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
- IControllerFeatureInvalidation* _pInvalidationCallback
- );
-
- /** constructs the instance from a <type scope="com::sun::star::form">XFormController<type> instance
-
- @param _rxORB
- a multi service factory for creating various needed components
-
- @param _rxController
- The form controller which the helper should be responsible for. Must not
- be <NULL/>, and must have a valid model (form).
-
- @param _pInvalidationCallback
- the callback for invalidating feature states
- */
- ControllerFeatures(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController >& _rxController,
- IControllerFeatureInvalidation* _pInvalidationCallback
- );
-
- /** constructs the helper form a <type scope="com::sun::star::form">XForm<type> instance
-
- Any functionality which depends on a controller will not be available.
-
- @param _rxORB
- a multi service factory for creating various needed components
-
- @param _rxForm
- The form which the helper should be responsible for. Must not be <NULL/>.
-
- @param _pInvalidationCallback
- the callback for invalidating feature states
- */
- ControllerFeatures(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm,
- IControllerFeatureInvalidation* _pInvalidationCallback
- );
-
- /// dtor
- ~ControllerFeatures();
-
- /// checks whether the instance is properly assigned to a form and/or controller
- inline bool isAssigned( ) const { return m_pImpl != NULL; }
-
- /** assign to a controller
- */
- void assign(
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController >& _rxController
- );
-
- /** assign to a controller
- */
- void assign(
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm
- );
-
- /// clears the instance so that it cannot be used afterwards
- void dispose();
-
- // access to the instance which implements the functionality. Not to be used when not assigned
- inline const FormControllerHelper* operator->() const { return m_pImpl; }
- inline FormControllerHelper* operator->() { return m_pImpl; }
- inline const FormControllerHelper& operator*() const { return *m_pImpl; }
- inline FormControllerHelper& operator*() { return *m_pImpl; }
- };
-
- //====================================================================
- //= FormControllerHelper
- //====================================================================
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::form::runtime::XFeatureInvalidation
- > FormControllerHelper_Base;
- /** is a helper class which manages form controller functionality (such as moveNext etc.).
-
- <p>The class helps implementing form controller functionality, by providing
- methods to determine the state of, and execute, various common form features.<br/>
- A <em>feature</em> is for instance moving the form associated with the controller
- to a certain position, or reloading the form, and so on.</p>
- */
- class FormControllerHelper : public FormControllerHelper_Base
- {
- protected:
- ::comphelper::ComponentContext m_aContext;
- IControllerFeatureInvalidation* m_pInvalidationCallback;
- ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormOperations >
- m_xFormOperations;
-
- public:
- /** constructs the helper from a <type scope="com::sun::star::form">XFormController<type> instance
-
- @param _rContext
- the context the component lives in
- @param _rxController
- The form controller which the helper should be responsible for. Must not
- be <NULL/>, and must have a valid model (form).
- @param _pInvalidationCallback
- the callback for invalidating feature states
- */
- FormControllerHelper(
- const ::comphelper::ComponentContext& _rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController >& _rxController,
- IControllerFeatureInvalidation* _pInvalidationCallback
- );
-
- /** constructs the helper form a <type scope="com::sun::star::form">XForm<type> instance
-
- Any functionality which depends on a controller will not be available.
-
- @param _rContext
- the context the component lives in
- @param _rxForm
- The form which the helper should be responsible for. Must not be <NULL/>.
- @param _pInvalidationCallback
- the callback for invalidating feature states
- */
- FormControllerHelper(
- const ::comphelper::ComponentContext& _rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm,
- IControllerFeatureInvalidation* _pInvalidationCallback
- );
-
- // forwards to the XFormOperations implementation
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >
- getCursor() const;
- void getState(
- sal_Int32 _nSlotId,
- ::com::sun::star::form::runtime::FeatureState& _out_rState
- ) const;
- sal_Bool isEnabled( sal_Int32 _nSlotId ) const;
- void execute( sal_Int32 _nSlotId ) const;
- void execute( sal_Int32 _nSlotId, const ::rtl::OUString& _rParamName, const ::com::sun::star::uno::Any& _rParamValue ) const;
- sal_Bool commitCurrentRecord() const;
- sal_Bool commitCurrentControl( ) const;
- sal_Bool isInsertionRow() const;
- sal_Bool isModifiedRow() const;
-
- bool moveLeft( ) const;
- bool moveRight( ) const;
-
- bool canDoFormFilter() const;
-
- /** disposes this instance.
-
- After this method has been called, the instance is not functional anymore
- */
- void dispose();
-
- const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormOperations >&
- getFormOperations() const { return m_xFormOperations; }
- protected:
- /// dtor
- ~FormControllerHelper();
-
- // XFeatureInvalidation
- virtual void SAL_CALL invalidateFeatures( const ::com::sun::star::uno::Sequence< ::sal_Int16 >& Features ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL invalidateAllFeatures() throw (::com::sun::star::uno::RuntimeException);
-
- private:
- FormControllerHelper(); // never implemented
- FormControllerHelper( const FormControllerHelper& ); // never implemented
- FormControllerHelper& operator=( const FormControllerHelper& ); // never implemented
- };
-
-//........................................................................
-} // namespace svx
-//........................................................................
-
-#endif // SVX_FORMCONTROLLING_HXX
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: formcontrolling.hxx,v $
+ * $Revision: 1.7 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVX_FORMCONTROLLING_HXX
+#define SVX_FORMCONTROLLING_HXX
+
+#include <com/sun/star/form/XFormController.hpp>
+#include <com/sun/star/form/XForm.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/form/runtime/FeatureState.hpp>
+#include <com/sun/star/form/runtime/XFormOperations.hpp>
+#include <com/sun/star/sdb/XSQLErrorListener.hpp>
+
+#include <cppuhelper/implbase2.hxx>
+#include <comphelper/componentcontext.hxx>
+
+#include <vector>
+
+//........................................................................
+namespace svx
+{
+//........................................................................
+
+ //====================================================================
+ //= FeatureSlotTranslation
+ //====================================================================
+ class FeatureSlotTranslation
+ {
+ public:
+ /// retrieves the feature id for a given feature URL
+ static sal_Int32 getControllerFeatureSlotIdForURL( const ::rtl::OUString& _rMainURL );
+
+ /// retrieves the feature URL for a given feature id
+ static ::rtl::OUString getControllerFeatureURLForSlotId( sal_Int32 _nSlotId );
+
+ /// determines whether the given URL is a controller feature URL
+ static sal_Bool isFeatureURL( const ::rtl::OUString& _rMainURL );
+
+ /// retrieves the css.form.runtime.FormFeature ID for a given slot ID
+ static sal_Int16 getFormFeatureForSlotId( sal_Int32 _nSlotId );
+
+ /// retrieves the slot id for a given css.form.runtime.FormFeature ID
+ static sal_Int32 getSlotIdForFormFeature( sal_Int16 _nFormFeature );
+ };
+
+ //====================================================================
+ //= IControllerFeatureInvalidation
+ //====================================================================
+ class IControllerFeatureInvalidation
+ {
+ public:
+ /** invalidates the given features
+
+ Invalidation means that any user interface representation (such as toolbox buttons), or
+ any dispatches associated with the features in question are potentially out-of-date, and
+ need to be updated
+
+ @param _rFeatures
+ Ids of the features to be invalidated.
+ */
+ virtual void invalidateFeatures( const ::std::vector< sal_Int32 >& _rFeatures ) = 0;
+ };
+
+ //====================================================================
+ //= ControllerFeatures
+ //====================================================================
+ class FormControllerHelper;
+ /** easier access to an FormControllerHelper instance
+ */
+ class ControllerFeatures
+ {
+ protected:
+ ::comphelper::ComponentContext m_aContext;
+ IControllerFeatureInvalidation* m_pInvalidationCallback; // necessary as long as m_pImpl is not yet constructed
+ FormControllerHelper* m_pImpl;
+
+ public:
+ /** standard ctor
+
+ The instance is not functional until <method>assign</method> is used.
+
+ @param _rxORB
+ a multi service factory for creating various needed components
+
+ @param _pInvalidationCallback
+ the callback for invalidating feature states
+ */
+ ControllerFeatures(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
+ IControllerFeatureInvalidation* _pInvalidationCallback
+ );
+
+ /** constructs the instance from a <type scope="com::sun::star::form">XFormController<type> instance
+
+ @param _rxORB
+ a multi service factory for creating various needed components
+
+ @param _rxController
+ The form controller which the helper should be responsible for. Must not
+ be <NULL/>, and must have a valid model (form).
+
+ @param _pInvalidationCallback
+ the callback for invalidating feature states
+ */
+ ControllerFeatures(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController >& _rxController,
+ IControllerFeatureInvalidation* _pInvalidationCallback
+ );
+
+ /** constructs the helper form a <type scope="com::sun::star::form">XForm<type> instance
+
+ Any functionality which depends on a controller will not be available.
+
+ @param _rxORB
+ a multi service factory for creating various needed components
+
+ @param _rxForm
+ The form which the helper should be responsible for. Must not be <NULL/>.
+
+ @param _pInvalidationCallback
+ the callback for invalidating feature states
+ */
+ ControllerFeatures(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm,
+ IControllerFeatureInvalidation* _pInvalidationCallback
+ );
+
+ /// dtor
+ ~ControllerFeatures();
+
+ /// checks whether the instance is properly assigned to a form and/or controller
+ inline bool isAssigned( ) const { return m_pImpl != NULL; }
+
+ /** assign to a controller
+ */
+ void assign(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController >& _rxController
+ );
+
+ /** assign to a controller
+ */
+ void assign(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm
+ );
+
+ /// clears the instance so that it cannot be used afterwards
+ void dispose();
+
+ // access to the instance which implements the functionality. Not to be used when not assigned
+ inline const FormControllerHelper* operator->() const { return m_pImpl; }
+ inline FormControllerHelper* operator->() { return m_pImpl; }
+ inline const FormControllerHelper& operator*() const { return *m_pImpl; }
+ inline FormControllerHelper& operator*() { return *m_pImpl; }
+ };
+
+ //====================================================================
+ //= FormControllerHelper
+ //====================================================================
+ typedef ::cppu::WeakImplHelper2 < ::com::sun::star::form::runtime::XFeatureInvalidation
+ , ::com::sun::star::sdb::XSQLErrorListener
+ > FormControllerHelper_Base;
+ /** is a helper class which manages form controller functionality (such as moveNext etc.).
+
+ <p>The class helps implementing form controller functionality, by providing
+ methods to determine the state of, and execute, various common form features.<br/>
+ A <em>feature</em> is for instance moving the form associated with the controller
+ to a certain position, or reloading the form, and so on.</p>
+ */
+ class FormControllerHelper : public FormControllerHelper_Base
+ {
+ protected:
+ ::comphelper::ComponentContext m_aContext;
+ IControllerFeatureInvalidation* m_pInvalidationCallback;
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormOperations >
+ m_xFormOperations;
+
+ ::com::sun::star::uno::Any m_aOperationError;
+
+ public:
+ /** constructs the helper from a <type scope="com::sun::star::form">XFormController<type> instance
+
+ @param _rContext
+ the context the component lives in
+ @param _rxController
+ The form controller which the helper should be responsible for. Must not
+ be <NULL/>, and must have a valid model (form).
+ @param _pInvalidationCallback
+ the callback for invalidating feature states
+ */
+ FormControllerHelper(
+ const ::comphelper::ComponentContext& _rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController >& _rxController,
+ IControllerFeatureInvalidation* _pInvalidationCallback
+ );
+
+ /** constructs the helper form a <type scope="com::sun::star::form">XForm<type> instance
+
+ Any functionality which depends on a controller will not be available.
+
+ @param _rContext
+ the context the component lives in
+ @param _rxForm
+ The form which the helper should be responsible for. Must not be <NULL/>.
+ @param _pInvalidationCallback
+ the callback for invalidating feature states
+ */
+ FormControllerHelper(
+ const ::comphelper::ComponentContext& _rContext,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm,
+ IControllerFeatureInvalidation* _pInvalidationCallback
+ );
+
+ // forwards to the XFormOperations implementation
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >
+ getCursor() const;
+ void getState(
+ sal_Int32 _nSlotId,
+ ::com::sun::star::form::runtime::FeatureState& _out_rState
+ ) const;
+ sal_Bool isEnabled( sal_Int32 _nSlotId ) const;
+ void execute( sal_Int32 _nSlotId ) const;
+ void execute( sal_Int32 _nSlotId, const ::rtl::OUString& _rParamName, const ::com::sun::star::uno::Any& _rParamValue ) const;
+ sal_Bool commitCurrentRecord() const;
+ sal_Bool commitCurrentControl( ) const;
+ sal_Bool isInsertionRow() const;
+ sal_Bool isModifiedRow() const;
+
+ bool moveLeft( ) const;
+ bool moveRight( ) const;
+
+ bool canDoFormFilter() const;
+
+ /** disposes this instance.
+
+ After this method has been called, the instance is not functional anymore
+ */
+ void dispose();
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormOperations >&
+ getFormOperations() const { return m_xFormOperations; }
+ protected:
+ /// dtor
+ ~FormControllerHelper();
+
+ // XFeatureInvalidation
+ virtual void SAL_CALL invalidateFeatures( const ::com::sun::star::uno::Sequence< ::sal_Int16 >& Features ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL invalidateAllFeatures() throw (::com::sun::star::uno::RuntimeException);
+
+ // XSQLErrorListener
+ virtual void SAL_CALL errorOccured( const ::com::sun::star::sdb::SQLErrorEvent& _Event ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
+
+ private:
+ enum FormOperation { EXECUTE, EXECUTE_ARGS, COMMIT_CONTROL, COMMIT_RECORD };
+
+ bool impl_operateForm_nothrow(
+ const FormOperation _eWhat,
+ const sal_Int16 _nFeature, /* ignore for COMMIT_* */
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rArguments /* ignore except for EXECUTE_ARGS */
+ ) const;
+ bool impl_operateForm_nothrow( const FormOperation _eWhat ) const
+ {
+ return impl_operateForm_nothrow( _eWhat, 0, ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >() );
+ }
+ bool impl_operateForm_nothrow( const sal_Int16 _nFeature ) const
+ {
+ return impl_operateForm_nothrow( EXECUTE, _nFeature, ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >() );
+ }
+
+ private:
+ FormControllerHelper(); // never implemented
+ FormControllerHelper( const FormControllerHelper& ); // never implemented
+ FormControllerHelper& operator=( const FormControllerHelper& ); // never implemented
+ };
+
+//........................................................................
+} // namespace svx
+//........................................................................
+
+#endif // SVX_FORMCONTROLLING_HXX
diff --git a/svx/source/inc/treevisitor.hxx b/svx/source/inc/treevisitor.hxx
new file mode 100644
index 0000000000..f846f55d50
--- /dev/null
+++ b/svx/source/inc/treevisitor.hxx
@@ -0,0 +1,112 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* $RCSfile: code,v $
+*
+* $Revision: 1.3 $
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef SVX_TREE_VISITOR_HXX
+#define SVX_TREE_VISITOR_HXX
+
+#include <stack>
+
+template< class ELEMENT, class NODEINFO, class PROCESSOR >
+class TreeVisitor
+{
+public:
+ TreeVisitor( NODEINFO _nodeInfo )
+ :m_visitedRoot( false )
+ ,m_root()
+ ,m_current()
+ ,m_nodeInfo( _nodeInfo )
+ {
+ }
+
+ void process( const ELEMENT& _root, PROCESSOR& _processor )
+ {
+ m_root = _root;
+ m_visitedRoot = false;
+
+ while ( do_step() )
+ _processor.process( m_current );
+ }
+
+private:
+ bool do_step();
+
+private:
+ bool m_visitedRoot;
+ ELEMENT m_root;
+ ELEMENT m_current;
+ const NODEINFO m_nodeInfo;
+
+ ::std::stack< size_t > m_pathToCurrent;
+ ::std::stack< ELEMENT > m_currentAncestors;
+};
+
+template< class ELEMENT, class NODEINFO, class PROCESSOR >
+bool TreeVisitor< ELEMENT, NODEINFO, PROCESSOR >::do_step()
+{
+ if ( !m_visitedRoot )
+ {
+ m_current = m_root;
+ m_visitedRoot = true;
+ return true;
+ }
+
+ // can we step down from the current node?
+ size_t childCount = m_nodeInfo.childCount( m_current );
+ if ( childCount )
+ {
+ m_currentAncestors.push( m_current );
+ m_current = m_nodeInfo.getChild( m_current, 0 );
+ m_pathToCurrent.push( 0 );
+ return true;
+ }
+
+ // is there a right sibling of the current node?
+ while ( !m_pathToCurrent.empty() )
+ {
+ const ELEMENT& currentParent = m_currentAncestors.top();
+ childCount = m_nodeInfo.childCount( currentParent );
+
+ size_t currentChildPos = m_pathToCurrent.top();
+ if ( ++currentChildPos < childCount )
+ {
+ // yes there is
+ m_pathToCurrent.top() = currentChildPos;
+ m_current = m_nodeInfo.getChild( currentParent, currentChildPos );
+ return true;
+ }
+
+ // no there isn't => step up
+ m_currentAncestors.pop();
+ m_pathToCurrent.pop();
+ }
+
+ return false;
+}
+
+#endif // SVX_TREE_VISITOR_HXX
diff --git a/xmlhelp/source/cxxhelp/inc/qe/ConceptData.hxx b/xmlhelp/source/cxxhelp/inc/qe/ConceptData.hxx
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/xmlhelp/source/cxxhelp/inc/qe/ConceptData.hxx
diff --git a/xmlhelp/source/cxxhelp/inc/qe/ContextTables.hxx b/xmlhelp/source/cxxhelp/inc/qe/ContextTables.hxx
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/xmlhelp/source/cxxhelp/inc/qe/ContextTables.hxx
diff --git a/xmlhelp/source/cxxhelp/inc/qe/QueryProcessor.hxx b/xmlhelp/source/cxxhelp/inc/qe/QueryProcessor.hxx
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/xmlhelp/source/cxxhelp/inc/qe/QueryProcessor.hxx
diff --git a/xmlhelp/source/cxxhelp/inc/qe/Search.hxx b/xmlhelp/source/cxxhelp/inc/qe/Search.hxx
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/xmlhelp/source/cxxhelp/inc/qe/Search.hxx
diff --git a/xmlhelp/source/cxxhelp/inc/qe/XmlIndex.hxx b/xmlhelp/source/cxxhelp/inc/qe/XmlIndex.hxx
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/xmlhelp/source/cxxhelp/inc/qe/XmlIndex.hxx
diff --git a/xmloff/inc/xmloff/controlpropertyhdl.hxx b/xmloff/inc/xmloff/controlpropertyhdl.hxx
index 6c85ea32f6..7574932a81 100644
--- a/xmloff/inc/xmloff/controlpropertyhdl.hxx
+++ b/xmloff/inc/xmloff/controlpropertyhdl.hxx
@@ -109,7 +109,7 @@ namespace xmloff
//=====================================================================
//= ImageScaleModeHandler
//=====================================================================
- class ImageScaleModeHandler : public XMLConstantsPropertyHandler
+ class XMLOFF_DLLPUBLIC ImageScaleModeHandler : public XMLConstantsPropertyHandler
{
public:
ImageScaleModeHandler();
diff --git a/xmloff/source/text/txtstyli.cxx b/xmloff/source/text/txtstyli.cxx
index 3a1c921d75..bef97fefa9 100644
--- a/xmloff/source/text/txtstyli.cxx
+++ b/xmloff/source/text/txtstyli.cxx
@@ -478,7 +478,8 @@ void XMLTextStyleContext::FillPropertySet(
{
rPropSet->setPropertyValue( sAutoProp, makeAny(GetAutoName()) );
}
- catch( UnknownPropertyException )
+ catch( const RuntimeException& ) { throw; }
+ catch( const Exception& )
{
bAutomatic = false;
}