| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_dbaccess.hxx" |
| |
| #ifndef _SBA_FORMADAPTER_HXX |
| #include "formadapter.hxx" |
| #endif |
| #ifndef _TOOLS_DEBUG_HXX //autogen |
| #include <tools/debug.hxx> |
| #endif |
| #ifndef _COMPHELPER_TYPES_HXX_ |
| #include <comphelper/types.hxx> |
| #endif |
| #ifndef _COMPHELPER_ENUMHELPER_HXX_ |
| #include <comphelper/enumhelper.hxx> |
| #endif |
| #ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ |
| #include <com/sun/star/lang/XMultiServiceFactory.hpp> |
| #endif |
| #ifndef _STRING_HXX |
| #include <tools/string.hxx> |
| #endif |
| #ifndef _DBU_BRW_HRC_ |
| #include "dbu_brw.hrc" |
| #endif |
| #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC |
| #include "dbustrings.hrc" |
| #endif |
| #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_ |
| #include <cppuhelper/typeprovider.hxx> |
| #endif |
| #ifndef _COMPHELPER_SEQUENCE_HXX_ |
| #include <comphelper/sequence.hxx> |
| #endif |
| |
| using namespace dbaui; |
| using namespace ::com::sun::star::uno; |
| using namespace ::com::sun::star::sdb; |
| using namespace ::com::sun::star::sdbcx; |
| using namespace ::com::sun::star::beans; |
| using namespace ::com::sun::star::container; |
| |
| //================================================================== |
| // SbaXFormAdapter |
| //================================================================== |
| |
| DBG_NAME(SbaXFormAdapter) |
| // ------------------------------------------------------------------------- |
| SbaXFormAdapter::SbaXFormAdapter() |
| :m_aLoadListeners(*this, m_aMutex) |
| ,m_aRowSetListeners(*this, m_aMutex) |
| ,m_aRowSetApproveListeners(*this, m_aMutex) |
| ,m_aErrorListeners(*this, m_aMutex) |
| ,m_aParameterListeners(*this, m_aMutex) |
| ,m_aSubmitListeners(*this, m_aMutex) |
| ,m_aResetListeners(*this, m_aMutex) |
| ,m_aPropertyChangeListeners(*this, m_aMutex) |
| ,m_aVetoablePropertyChangeListeners(*this, m_aMutex) |
| ,m_aPropertiesChangeListeners(*this, m_aMutex) |
| ,m_aDisposeListeners(m_aMutex) |
| ,m_aContainerListeners(m_aMutex) |
| ,m_nNamePropHandle(-1) |
| { |
| DBG_CTOR(SbaXFormAdapter,NULL); |
| |
| } |
| |
| // ------------------------------------------------------------------------- |
| SbaXFormAdapter::~SbaXFormAdapter() |
| { |
| |
| DBG_DTOR(SbaXFormAdapter,NULL); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Sequence< Type > SAL_CALL SbaXFormAdapter::getTypes( ) throw (RuntimeException) |
| { |
| return ::comphelper::concatSequences( |
| SbaXFormAdapter_BASE1::getTypes(), |
| SbaXFormAdapter_BASE2::getTypes(), |
| SbaXFormAdapter_BASE3::getTypes() |
| ); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Sequence< sal_Int8 > SAL_CALL SbaXFormAdapter::getImplementationId( ) throw (RuntimeException) |
| { |
| static ::cppu::OImplementationId * pId = 0; |
| if (! pId) |
| { |
| ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); |
| if (! pId) |
| { |
| static ::cppu::OImplementationId aId; |
| pId = &aId; |
| } |
| } |
| return pId->getImplementationId(); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::queryInterface(const Type& _rType) throw (RuntimeException) |
| { |
| Any aReturn = SbaXFormAdapter_BASE1::queryInterface( _rType ); |
| |
| if (!aReturn.hasValue()) |
| aReturn = SbaXFormAdapter_BASE2::queryInterface( _rType ); |
| |
| if (!aReturn.hasValue()) |
| aReturn = SbaXFormAdapter_BASE3::queryInterface( _rType ); |
| |
| return aReturn; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SbaXFormAdapter::StopListening() |
| { |
| // log off all our multiplexers |
| STOP_MULTIPLEXER_LISTENING(LoadListener, m_aLoadListeners, ::com::sun::star::form::XLoadable, m_xMainForm); |
| STOP_MULTIPLEXER_LISTENING(RowSetListener, m_aRowSetListeners, ::com::sun::star::sdbc::XRowSet, m_xMainForm); |
| STOP_MULTIPLEXER_LISTENING(RowSetApproveListener, m_aRowSetApproveListeners, ::com::sun::star::sdb::XRowSetApproveBroadcaster, m_xMainForm); |
| STOP_MULTIPLEXER_LISTENING(SQLErrorListener, m_aErrorListeners, ::com::sun::star::sdb::XSQLErrorBroadcaster, m_xMainForm); |
| STOP_MULTIPLEXER_LISTENING(SubmitListener, m_aSubmitListeners, ::com::sun::star::form::XSubmit, m_xMainForm); |
| STOP_MULTIPLEXER_LISTENING(ResetListener, m_aResetListeners, ::com::sun::star::form::XReset, m_xMainForm); |
| |
| if (m_aParameterListeners.getLength()) |
| { |
| Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster > xBroadcaster(m_xMainForm, UNO_QUERY); |
| if (xBroadcaster.is()) |
| xBroadcaster->removeParameterListener(&m_aParameterListeners); |
| } |
| |
| STOP_PROPERTY_MULTIPLEXER_LISTENING(PropertyChangeListener, m_aPropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm); |
| STOP_PROPERTY_MULTIPLEXER_LISTENING(VetoableChangeListener, m_aVetoablePropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm); |
| if (m_aPropertiesChangeListeners.getLength()) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xBroadcaster(m_xMainForm, UNO_QUERY); |
| if (xBroadcaster.is()) |
| xBroadcaster->removePropertiesChangeListener(&m_aPropertiesChangeListeners); |
| } |
| |
| // log off ourself |
| Reference< ::com::sun::star::lang::XComponent > xComp(m_xMainForm, UNO_QUERY); |
| if (xComp.is()) |
| xComp->removeEventListener((::com::sun::star::lang::XEventListener*)(::com::sun::star::beans::XPropertyChangeListener*)this); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SbaXFormAdapter::StartListening() |
| { |
| // log off all our multiplexers |
| START_MULTIPLEXER_LISTENING(LoadListener, m_aLoadListeners, ::com::sun::star::form::XLoadable, m_xMainForm); |
| START_MULTIPLEXER_LISTENING(RowSetListener, m_aRowSetListeners, ::com::sun::star::sdbc::XRowSet, m_xMainForm); |
| START_MULTIPLEXER_LISTENING(RowSetApproveListener, m_aRowSetApproveListeners, ::com::sun::star::sdb::XRowSetApproveBroadcaster, m_xMainForm); |
| START_MULTIPLEXER_LISTENING(SQLErrorListener, m_aErrorListeners, ::com::sun::star::sdb::XSQLErrorBroadcaster, m_xMainForm); |
| START_MULTIPLEXER_LISTENING(SubmitListener, m_aSubmitListeners, ::com::sun::star::form::XSubmit, m_xMainForm); |
| START_MULTIPLEXER_LISTENING(ResetListener, m_aResetListeners, ::com::sun::star::form::XReset, m_xMainForm); |
| |
| if (m_aParameterListeners.getLength()) |
| { |
| Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster > xBroadcaster(m_xMainForm, UNO_QUERY); |
| if (xBroadcaster.is()) |
| xBroadcaster->addParameterListener(&m_aParameterListeners); |
| } |
| |
| START_PROPERTY_MULTIPLEXER_LISTENING(PropertyChangeListener, m_aPropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm); |
| START_PROPERTY_MULTIPLEXER_LISTENING(VetoableChangeListener, m_aVetoablePropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm); |
| if (m_aPropertiesChangeListeners.getLength()) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xBroadcaster(m_xMainForm, UNO_QUERY); |
| ::rtl::OUString sEmpty; |
| if (xBroadcaster.is()) |
| xBroadcaster->addPropertiesChangeListener(::comphelper::StringSequence(&sEmpty, 1), &m_aPropertiesChangeListeners); |
| } |
| |
| // log off ourself |
| Reference< ::com::sun::star::lang::XComponent > xComp(m_xMainForm, UNO_QUERY); |
| if (xComp.is()) |
| xComp->addEventListener((::com::sun::star::lang::XEventListener*)(::com::sun::star::beans::XPropertyChangeListener*)this); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SbaXFormAdapter::AttachForm(const Reference< ::com::sun::star::sdbc::XRowSet >& xNewMaster) |
| { |
| if (xNewMaster == m_xMainForm) |
| return; |
| |
| DBG_ASSERT(xNewMaster.get() != static_cast< ::com::sun::star::sdbc::XRowSet* >(this), "SbaXFormAdapter::AttachForm : invalid argument !"); |
| |
| if (m_xMainForm.is()) |
| { |
| StopListening(); |
| |
| // if our old master is loaded we have to send an 'unloaded' event |
| Reference< ::com::sun::star::form::XLoadable > xLoadable(m_xMainForm, UNO_QUERY); |
| if (xLoadable->isLoaded()) |
| { |
| ::com::sun::star::lang::EventObject aEvt(*this); |
| ::cppu::OInterfaceIteratorHelper aIt(m_aLoadListeners); |
| while (aIt.hasMoreElements()) |
| ((::com::sun::star::form::XLoadListener*)aIt.next())->unloaded(aEvt); |
| } |
| } |
| |
| m_xMainForm = xNewMaster; |
| |
| if (m_xMainForm.is()) |
| { |
| StartListening(); |
| |
| // if our new master is loaded we have to send an 'loaded' event |
| Reference< ::com::sun::star::form::XLoadable > xLoadable(m_xMainForm, UNO_QUERY); |
| if (xLoadable->isLoaded()) |
| { |
| ::com::sun::star::lang::EventObject aEvt(*this); |
| ::cppu::OInterfaceIteratorHelper aIt(m_aLoadListeners); |
| while (aIt.hasMoreElements()) |
| ((::com::sun::star::form::XLoadListener*)aIt.next())->loaded(aEvt); |
| } |
| } |
| |
| // TODO : perhaps _all_ of our listeners should be notified about our new state |
| // (nearly every aspect of us may have changed with new master form) |
| } |
| |
| // ::com::sun::star::sdbc::XCloseable |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::close() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XCloseable > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->close(); |
| } |
| |
| // ::com::sun::star::sdbc::XResultSetMetaDataSupplier |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL SbaXFormAdapter::getMetaData() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetMetaDataSupplier > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getMetaData(); |
| return Reference< ::com::sun::star::sdbc::XResultSetMetaData > (); |
| } |
| |
| // ::com::sun::star::sdbc::XColumnLocate |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::findColumn(const ::rtl::OUString& columnName) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XColumnLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->findColumn(columnName); |
| return 0; |
| } |
| |
| // ::com::sun::star::sdbcx::XColumnsSupplier |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::container::XNameAccess > SAL_CALL SbaXFormAdapter::getColumns() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XColumnsSupplier > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getColumns(); |
| return Reference< ::com::sun::star::container::XNameAccess > (); |
| } |
| |
| // ::com::sun::star::sdbc::XRow |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::wasNull() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->wasNull(); |
| return sal_True; |
| } |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL SbaXFormAdapter::getString(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getString(columnIndex); |
| return ::rtl::OUString(); |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::getBoolean(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getBoolean(columnIndex); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int8 SAL_CALL SbaXFormAdapter::getByte(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getByte(columnIndex); |
| return 0; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int16 SAL_CALL SbaXFormAdapter::getShort(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getShort(columnIndex); |
| return 0; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::getInt(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getInt(columnIndex); |
| return 0; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int64 SAL_CALL SbaXFormAdapter::getLong(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getLong(columnIndex); |
| return 0; |
| } |
| // ------------------------------------------------------------------------- |
| float SAL_CALL SbaXFormAdapter::getFloat(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getFloat(columnIndex); |
| return 0.0; |
| } |
| // ------------------------------------------------------------------------- |
| double SAL_CALL SbaXFormAdapter::getDouble(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getDouble(columnIndex); |
| return 0.0; |
| } |
| // ------------------------------------------------------------------------- |
| Sequence< sal_Int8 > SAL_CALL SbaXFormAdapter::getBytes(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getBytes(columnIndex); |
| return Sequence <sal_Int8> (); |
| } |
| // ------------------------------------------------------------------------- |
| ::com::sun::star::util::Date SAL_CALL SbaXFormAdapter::getDate(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getDate(columnIndex); |
| return ::com::sun::star::util::Date(); |
| } |
| // ------------------------------------------------------------------------- |
| ::com::sun::star::util::Time SAL_CALL SbaXFormAdapter::getTime(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getTime(columnIndex); |
| return ::com::sun::star::util::Time(); |
| } |
| // ------------------------------------------------------------------------- |
| ::com::sun::star::util::DateTime SAL_CALL SbaXFormAdapter::getTimestamp(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getTimestamp(columnIndex); |
| return ::com::sun::star::util::DateTime(); |
| } |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::io::XInputStream > SAL_CALL SbaXFormAdapter::getBinaryStream(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getBinaryStream(columnIndex); |
| return Reference< ::com::sun::star::io::XInputStream > (); |
| } |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::io::XInputStream > SAL_CALL SbaXFormAdapter::getCharacterStream(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getCharacterStream(columnIndex); |
| return Reference< ::com::sun::star::io::XInputStream > (); |
| } |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getObject(sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& typeMap) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getObject(columnIndex, typeMap); |
| return Any(); |
| } |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::sdbc::XRef > SAL_CALL SbaXFormAdapter::getRef(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getRef(columnIndex); |
| return Reference< ::com::sun::star::sdbc::XRef > (); |
| } |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL SbaXFormAdapter::getBlob(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getBlob(columnIndex); |
| return Reference< ::com::sun::star::sdbc::XBlob > (); |
| } |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::sdbc::XClob > SAL_CALL SbaXFormAdapter::getClob(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getClob(columnIndex); |
| return Reference< ::com::sun::star::sdbc::XClob > (); |
| } |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::sdbc::XArray > SAL_CALL SbaXFormAdapter::getArray(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRow > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getArray(columnIndex); |
| return Reference< ::com::sun::star::sdbc::XArray > (); |
| } |
| |
| // ::com::sun::star::sdbcx::XRowLocate |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getBookmark() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XRowLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getBookmark(); |
| return Any(); |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::moveToBookmark(const Any& bookmark) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XRowLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->moveToBookmark(bookmark); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XRowLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->moveRelativeToBookmark(bookmark,rows); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::compareBookmarks(const Any& _first, const Any& _second) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XRowLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->compareBookmarks(_first, _second); |
| return 0; |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::hasOrderedBookmarks() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XRowLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->hasOrderedBookmarks(); |
| return sal_False; |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::hashBookmark(const Any& bookmark) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XRowLocate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->hashBookmark(bookmark); |
| return 0; |
| } |
| |
| // ::com::sun::star::sdbc::XRowUpdate |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateNull(sal_Int32 columnIndex) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateNull(columnIndex); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateBoolean(sal_Int32 columnIndex, sal_Bool x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateBoolean(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateByte(sal_Int32 columnIndex, sal_Int8 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateByte(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateShort(sal_Int32 columnIndex, sal_Int16 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateShort(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateInt(sal_Int32 columnIndex, sal_Int32 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateInt(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateLong(sal_Int32 columnIndex, sal_Int64 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateLong(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateFloat(sal_Int32 columnIndex, float x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateFloat(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateDouble(sal_Int32 columnIndex, double x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateDouble(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateString(sal_Int32 columnIndex, const ::rtl::OUString& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateString(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateBytes(sal_Int32 columnIndex, const Sequence< sal_Int8 >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateBytes(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateDate(sal_Int32 columnIndex, const ::com::sun::star::util::Date& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateDate(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateTime(sal_Int32 columnIndex, const ::com::sun::star::util::Time& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateTime(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateTimestamp(sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateTimestamp(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateBinaryStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateBinaryStream(columnIndex, x, length); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateCharacterStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateCharacterStream(columnIndex, x, length); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateObject(sal_Int32 columnIndex, const Any& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateObject(columnIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateNumericObject(sal_Int32 columnIndex, const Any& x, sal_Int32 scale) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XRowUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateNumericObject(columnIndex, x, scale); |
| } |
| |
| // ::com::sun::star::sdbc::XResultSet |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::next() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->next(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::isBeforeFirst() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->isBeforeFirst(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::isAfterLast() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->isAfterLast(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::isFirst() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->isFirst(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::isLast() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->isLast(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::beforeFirst() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| m_xMainForm->beforeFirst(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::afterLast() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| m_xMainForm->afterLast(); |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::first() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->first(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::last() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->last(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::getRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->getRow(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::absolute(sal_Int32 row) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->absolute(row); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::relative(sal_Int32 rows) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->relative(rows); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::previous() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->previous(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::refreshRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| m_xMainForm->refreshRow(); |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::rowUpdated() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->rowUpdated(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::rowInserted() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->rowInserted(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::rowDeleted() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->rowDeleted(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| Reference< XInterface > SAL_CALL SbaXFormAdapter::getStatement() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| return m_xMainForm->getStatement(); |
| return NULL; |
| } |
| |
| // ::com::sun::star::sdbc::XResultSetUpdate |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::insertRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->insertRow(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::updateRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->updateRow(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::deleteRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->deleteRow(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::cancelRowUpdates() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->cancelRowUpdates(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::moveToInsertRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->moveToInsertRow(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::moveToCurrentRow() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XResultSetUpdate > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->moveToCurrentRow(); |
| } |
| |
| // ::com::sun::star::sdbc::XRowSet |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::execute() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| if (m_xMainForm.is()) |
| m_xMainForm->execute(); |
| } |
| // ------------------------------------------------------------------------- |
| IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, sdbc, RowSetListener, m_aRowSetListeners, ::com::sun::star::sdbc::XRowSet, m_xMainForm) |
| |
| // ::com::sun::star::sdbcx::XDeleteRows |
| // ------------------------------------------------------------------------- |
| Sequence<sal_Int32> SAL_CALL SbaXFormAdapter::deleteRows(const Sequence< Any >& rows) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbcx::XDeleteRows > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->deleteRows(rows); |
| return Sequence<sal_Int32>(); |
| } |
| |
| // ::com::sun::star::sdbc::XWarningsSupplier |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getWarnings() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XWarningsSupplier > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->getWarnings(); |
| return Any(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::clearWarnings() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XWarningsSupplier > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->clearWarnings(); |
| } |
| |
| // ::com::sun::star::sdb::XRowSetApproveBroadcaster |
| // ------------------------------------------------------------------------- |
| IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, sdb, RowSetApproveListener, m_aRowSetApproveListeners, ::com::sun::star::sdb::XRowSetApproveBroadcaster, m_xMainForm) |
| |
| // com::sun::star::sdbc::XSQLErrorBroadcaster |
| // ------------------------------------------------------------------------- |
| IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, sdb, SQLErrorListener, m_aErrorListeners, ::com::sun::star::sdb::XSQLErrorBroadcaster, m_xMainForm) |
| |
| // ::com::sun::star::sdb::XResultSetAccess |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL SbaXFormAdapter::createResultSet() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdb::XResultSetAccess > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->createResultSet(); |
| return Reference< ::com::sun::star::sdbc::XResultSet > (); |
| } |
| |
| // com::sun::star::form::XLoadable |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::load() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::form::XLoadable > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->load(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::unload() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::form::XLoadable > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->unload(); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::reload() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::form::XLoadable > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->reload(); |
| } |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::isLoaded() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::form::XLoadable > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| return xIface->isLoaded(); |
| return sal_False; |
| } |
| // ------------------------------------------------------------------------- |
| IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, form, LoadListener, m_aLoadListeners, ::com::sun::star::form::XLoadable, m_xMainForm) |
| |
| // ::com::sun::star::sdbc::XParameters |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setNull(sal_Int32 parameterIndex, sal_Int32 sqlType) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setNull(parameterIndex, sqlType); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setObjectNull(sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setObjectNull(parameterIndex, sqlType, typeName); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setBoolean(sal_Int32 parameterIndex, sal_Bool x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setBoolean(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setByte(sal_Int32 parameterIndex, sal_Int8 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setByte(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setShort(sal_Int32 parameterIndex, sal_Int16 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setShort(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setInt(sal_Int32 parameterIndex, sal_Int32 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setInt(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setLong(sal_Int32 parameterIndex, sal_Int64 x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setLong(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setFloat(sal_Int32 parameterIndex, float x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setFloat(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setDouble(sal_Int32 parameterIndex, double x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setDouble(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setString(sal_Int32 parameterIndex, const ::rtl::OUString& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setString(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setBytes(sal_Int32 parameterIndex, const Sequence< sal_Int8 >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setBytes(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setDate(sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setDate(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setTime(sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setTime(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setTimestamp(sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setTimestamp(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setBinaryStream(sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setBinaryStream(parameterIndex, x, length); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setCharacterStream(sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setCharacterStream(parameterIndex, x, length); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setObject(sal_Int32 parameterIndex, const Any& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setObject(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setObjectWithInfo(sal_Int32 parameterIndex, const Any& x, sal_Int32 targetSqlType, sal_Int32 scale) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setObjectWithInfo(parameterIndex, x, targetSqlType, scale); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setRef(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XRef >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setRef(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setBlob(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XBlob >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setBlob(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setClob(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XClob >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setClob(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setArray(sal_Int32 parameterIndex, const Reference< ::com::sun::star::sdbc::XArray >& x) throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->setArray(parameterIndex, x); |
| } |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::clearParameters() throw( ::com::sun::star::sdbc::SQLException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::sdbc::XParameters > xIface(m_xMainForm, UNO_QUERY); |
| if (xIface.is()) |
| xIface->clearParameters(); |
| } |
| |
| // ::com::sun::star::form::XDatabaseParameterBroadcaster |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::addParameterListener(const Reference< ::com::sun::star::form::XDatabaseParameterListener >& aListener) throw( RuntimeException ) |
| { |
| m_aParameterListeners.addInterface(aListener); |
| if (m_aParameterListeners.getLength() == 1) |
| { |
| Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster > xBroadcaster(m_xMainForm, UNO_QUERY); |
| if (xBroadcaster.is()) |
| xBroadcaster->addParameterListener(&m_aParameterListeners); |
| } |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::removeParameterListener(const Reference< ::com::sun::star::form::XDatabaseParameterListener >& aListener) throw( RuntimeException ) |
| { |
| if (m_aParameterListeners.getLength() == 1) |
| { |
| Reference< ::com::sun::star::form::XDatabaseParameterBroadcaster > xBroadcaster(m_xMainForm, UNO_QUERY); |
| if (xBroadcaster.is()) |
| xBroadcaster->removeParameterListener(&m_aParameterListeners); |
| } |
| m_aParameterListeners.removeInterface(aListener); |
| } |
| |
| // ::com::sun::star::container::XChild |
| // ------------------------------------------------------------------------- |
| Reference< XInterface > SAL_CALL SbaXFormAdapter::getParent() throw( RuntimeException ) |
| { |
| return m_xParent; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setParent(const Reference< XInterface >& Parent) throw( ::com::sun::star::lang::NoSupportException, RuntimeException ) |
| { |
| m_xParent = Parent; |
| } |
| |
| // ::com::sun::star::form::XSubmit |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::submit(const Reference< ::com::sun::star::awt::XControl >& aControl, const ::com::sun::star::awt::MouseEvent& aMouseEvt) throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::form::XSubmit > xSubmit(m_xMainForm, UNO_QUERY); |
| if (xSubmit.is()) |
| xSubmit->submit(aControl, aMouseEvt); |
| } |
| |
| IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, form, SubmitListener, m_aSubmitListeners, ::com::sun::star::form::XSubmit, m_xMainForm) |
| |
| // ::com::sun::star::awt::XTabControllerModel |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::getGroupControl() throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroupControl : not supported !"); |
| return sal_False; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setGroupControl(sal_Bool /*GroupControl*/) throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::setGroupControl : not supported !"); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setControlModels(const Sequence< Reference< ::com::sun::star::awt::XControlModel > >& /*Controls*/) throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::setControlModels : not supported !"); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Sequence< Reference< ::com::sun::star::awt::XControlModel > > SAL_CALL SbaXFormAdapter::getControlModels() throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::getControlModels : not supported !"); |
| return Sequence< Reference< ::com::sun::star::awt::XControlModel > >(); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setGroup(const Sequence< Reference< ::com::sun::star::awt::XControlModel > >& /*_rGroup*/, const ::rtl::OUString& /*GroupName*/) throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::setGroup : not supported !"); |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::getGroupCount() throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroupCount : not supported !"); |
| return 0; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::getGroup(sal_Int32 /*nGroup*/, Sequence< Reference< ::com::sun::star::awt::XControlModel > >& /*_rGroup*/, ::rtl::OUString& /*Name*/) throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroup : not supported !"); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::getGroupByName(const ::rtl::OUString& /*Name*/, Sequence< Reference< ::com::sun::star::awt::XControlModel > >& /*_rGroup*/) throw( RuntimeException ) |
| { |
| DBG_ERROR("SAL_CALL SbaXFormAdapter::getGroupByName : not supported !"); |
| } |
| |
| // ::com::sun::star::lang::XComponent |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::dispose() throw( RuntimeException ) |
| { |
| // log off all multiplexers |
| if (m_xMainForm.is()) |
| StopListening(); |
| |
| ::com::sun::star::lang::EventObject aEvt(*this); |
| m_aLoadListeners.disposeAndClear(aEvt); |
| m_aRowSetListeners.disposeAndClear(aEvt); |
| m_aRowSetApproveListeners.disposeAndClear(aEvt); |
| m_aErrorListeners.disposeAndClear(aEvt); |
| m_aParameterListeners.disposeAndClear(aEvt); |
| m_aSubmitListeners.disposeAndClear(aEvt); |
| m_aResetListeners.disposeAndClear(aEvt); |
| |
| m_aVetoablePropertyChangeListeners.disposeAndClear(); |
| m_aPropertyChangeListeners.disposeAndClear(); |
| m_aPropertiesChangeListeners.disposeAndClear(aEvt); |
| |
| m_aDisposeListeners.disposeAndClear(aEvt); |
| m_aContainerListeners.disposeAndClear(aEvt); |
| |
| // dispose all childs |
| for ( ::std::vector< Reference< ::com::sun::star::form::XFormComponent > >::iterator aIter = m_aChildren.begin(); |
| aIter != m_aChildren.end(); |
| ++aIter |
| ) |
| { |
| Reference< ::com::sun::star::beans::XPropertySet > xSet(*aIter, UNO_QUERY); |
| if (xSet.is()) |
| xSet->removePropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this); |
| |
| Reference< ::com::sun::star::container::XChild > xChild(*aIter, UNO_QUERY); |
| if (xChild.is()) |
| xChild->setParent(Reference< XInterface > ()); |
| |
| Reference< ::com::sun::star::lang::XComponent > xComp(*aIter, UNO_QUERY); |
| if (xComp.is()) |
| xComp->dispose(); |
| } |
| m_aChildren.clear(); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::addEventListener(const Reference< ::com::sun::star::lang::XEventListener >& xListener) throw( RuntimeException ) |
| { |
| m_aDisposeListeners.addInterface(xListener); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::removeEventListener(const Reference< ::com::sun::star::lang::XEventListener >& aListener) throw( RuntimeException ) |
| { |
| m_aDisposeListeners.removeInterface(aListener); |
| } |
| |
| // ::com::sun::star::beans::XFastPropertySet |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setFastPropertyValue(sal_Int32 nHandle, const Any& aValue) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XFastPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| DBG_ASSERT(xSet.is(), "SAL_CALL SbaXFormAdapter::setFastPropertyValue : have no master form !"); |
| |
| if (m_nNamePropHandle == nHandle) |
| { |
| if (aValue.getValueType().getTypeClass() != TypeClass_STRING) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| // for notifying property listeners |
| ::com::sun::star::beans::PropertyChangeEvent aEvt; |
| aEvt.Source = *this; |
| aEvt.PropertyName = PROPERTY_NAME; |
| aEvt.PropertyHandle = m_nNamePropHandle; |
| aEvt.OldValue <<= m_sName; |
| aEvt.NewValue = aValue; |
| |
| aValue >>= m_sName; |
| |
| ::cppu::OInterfaceIteratorHelper aIt(*m_aPropertyChangeListeners.getContainer(PROPERTY_NAME)); |
| while (aIt.hasMoreElements()) |
| ((::com::sun::star::beans::XPropertyChangeListener*)aIt.next())->propertyChange(aEvt); |
| |
| return; |
| } |
| |
| xSet->setFastPropertyValue(nHandle, aValue); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getFastPropertyValue(sal_Int32 nHandle) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XFastPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| DBG_ASSERT(xSet.is(), "SAL_CALL SbaXFormAdapter::getFastPropertyValue : have no master form !"); |
| |
| if (m_nNamePropHandle == nHandle) |
| return makeAny(m_sName); |
| |
| return xSet->getFastPropertyValue(nHandle); |
| } |
| |
| // ::com::sun::star::container::XNamed |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL SbaXFormAdapter::getName() throw( RuntimeException ) |
| { |
| return ::comphelper::getString(getPropertyValue(PROPERTY_NAME)); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setName(const ::rtl::OUString& aName) throw( RuntimeException ) |
| { |
| setPropertyValue(PROPERTY_NAME, makeAny(aName)); |
| } |
| |
| // ::com::sun::star::io::XPersistObject |
| // ------------------------------------------------------------------------- |
| ::rtl::OUString SAL_CALL SbaXFormAdapter::getServiceName() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::io::XPersistObject > xPersist(m_xMainForm, UNO_QUERY); |
| if (xPersist.is()) |
| return xPersist->getServiceName(); |
| return ::rtl::OUString(); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::write(const Reference< ::com::sun::star::io::XObjectOutputStream >& _rxOutStream) throw( ::com::sun::star::io::IOException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::io::XPersistObject > xPersist(m_xMainForm, UNO_QUERY); |
| if (xPersist.is()) |
| xPersist->write(_rxOutStream); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::read(const Reference< ::com::sun::star::io::XObjectInputStream >& _rxInStream) throw( ::com::sun::star::io::IOException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::io::XPersistObject > xPersist(m_xMainForm, UNO_QUERY); |
| if (xPersist.is()) |
| xPersist->read(_rxInStream); |
| } |
| |
| // ::com::sun::star::beans::XMultiPropertySet |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL SbaXFormAdapter::getPropertySetInfo() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| if (!xSet.is()) |
| return Reference< ::com::sun::star::beans::XPropertySetInfo > (); |
| |
| Reference< ::com::sun::star::beans::XPropertySetInfo > xReturn = xSet->getPropertySetInfo(); |
| if (-1 == m_nNamePropHandle) |
| { |
| // we need to determine the handle for the NAME property |
| Sequence< ::com::sun::star::beans::Property> aProps = xReturn->getProperties(); |
| const ::com::sun::star::beans::Property* pProps = aProps.getConstArray(); |
| |
| for (sal_Int32 i=0; i<aProps.getLength(); ++i, ++pProps) |
| { |
| if (pProps->Name.equals(PROPERTY_NAME)) |
| { |
| ((SbaXFormAdapter*)this)->m_nNamePropHandle = pProps->Handle; |
| break; |
| } |
| } |
| } |
| return xReturn; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setPropertyValues(const Sequence< ::rtl::OUString >& PropertyNames, const Sequence< Any >& Values) throw( ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| if (xSet.is()) |
| xSet->setPropertyValues(PropertyNames, Values); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Sequence< Any > SAL_CALL SbaXFormAdapter::getPropertyValues(const Sequence< ::rtl::OUString >& aPropertyNames) throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| if (!xSet.is()) |
| return Sequence< Any>(aPropertyNames.getLength()); |
| |
| Sequence< Any> aReturn = xSet->getPropertyValues(aPropertyNames); |
| |
| // search for (and fake) the NAME property |
| const ::rtl::OUString* pNames = aPropertyNames.getConstArray(); |
| Any* pValues = aReturn.getArray(); |
| DBG_ASSERT(aReturn.getLength() == aPropertyNames.getLength(), "SAL_CALL SbaXFormAdapter::getPropertyValues : the main form returned an invalid-length sequence !"); |
| for (sal_Int32 i=0; i<aPropertyNames.getLength(); ++i, ++pNames, ++pValues) |
| if (pNames->equals(PROPERTY_NAME)) |
| { |
| (*pValues) <<= m_sName; |
| break; |
| } |
| |
| return aReturn; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::addPropertiesChangeListener(const Sequence< ::rtl::OUString>& /*aPropertyNames*/, const Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener) throw( RuntimeException ) |
| { |
| // we completely ignore the property names, _all_ changes of _all_ properties will be forwarded to _all_ listeners |
| m_aPropertiesChangeListeners.addInterface(xListener); |
| if (m_aPropertiesChangeListeners.getLength() == 1) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xBroadcaster(m_xMainForm, UNO_QUERY); |
| ::rtl::OUString sEmpty; |
| if (xBroadcaster.is()) |
| xBroadcaster->addPropertiesChangeListener(Sequence< ::rtl::OUString>(&sEmpty, 1), &m_aPropertiesChangeListeners); |
| } |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::removePropertiesChangeListener(const Reference< ::com::sun::star::beans::XPropertiesChangeListener >& Listener) throw( RuntimeException ) |
| { |
| if (m_aPropertiesChangeListeners.getLength() == 1) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xBroadcaster(m_xMainForm, UNO_QUERY); |
| if (xBroadcaster.is()) |
| xBroadcaster->removePropertiesChangeListener(&m_aPropertiesChangeListeners); |
| } |
| m_aPropertiesChangeListeners.removeInterface(Listener); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::firePropertiesChangeEvent(const Sequence< ::rtl::OUString >& aPropertyNames, const Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener) throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XMultiPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| if (xSet.is()) |
| xSet->firePropertiesChangeEvent(aPropertyNames, xListener); |
| } |
| |
| |
| // ::com::sun::star::beans::XPropertySet |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setPropertyValue(const ::rtl::OUString& aPropertyName, const Any& aValue) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| if (!xSet.is()) |
| return; |
| |
| // special handling for the "name" property |
| if (aPropertyName.equals(PROPERTY_NAME)) |
| setFastPropertyValue(m_nNamePropHandle, aValue); |
| |
| xSet->setPropertyValue(aPropertyName, aValue); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getPropertyValue(const ::rtl::OUString& PropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XPropertySet > xSet(m_xMainForm, UNO_QUERY); |
| if (!xSet.is()) |
| return Any(); |
| |
| // special handling for the "name" property |
| if (PropertyName.equals(PROPERTY_NAME)) |
| return getFastPropertyValue(m_nNamePropHandle); |
| |
| return xSet->getPropertyValue(PropertyName); |
| } |
| |
| IMPLEMENT_PROPERTY_LISTENER_ADMINISTRATION(SbaXFormAdapter, PropertyChangeListener, m_aPropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm); |
| IMPLEMENT_PROPERTY_LISTENER_ADMINISTRATION(SbaXFormAdapter, VetoableChangeListener, m_aVetoablePropertyChangeListeners, ::com::sun::star::beans::XPropertySet, m_xMainForm); |
| |
| // ::com::sun::star::util::XCancellable |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::cancel() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::util::XCancellable > xCancel(m_xMainForm, UNO_QUERY); |
| if (xCancel.is()) |
| return; |
| xCancel->cancel(); |
| } |
| |
| // ::com::sun::star::beans::XPropertyState |
| // ------------------------------------------------------------------------- |
| ::com::sun::star::beans::PropertyState SAL_CALL SbaXFormAdapter::getPropertyState(const ::rtl::OUString& PropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XPropertyState > xState(m_xMainForm, UNO_QUERY); |
| if (xState.is()) |
| return xState->getPropertyState(PropertyName); |
| return ::com::sun::star::beans::PropertyState_DEFAULT_VALUE; |
| } |
| |
| // ------------------------------------------------------------------------- |
| Sequence< ::com::sun::star::beans::PropertyState> SAL_CALL SbaXFormAdapter::getPropertyStates(const Sequence< ::rtl::OUString >& aPropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XPropertyState > xState(m_xMainForm, UNO_QUERY); |
| if (xState.is()) |
| return xState->getPropertyStates(aPropertyName); |
| |
| // set them all to DEFAULT |
| Sequence< ::com::sun::star::beans::PropertyState> aReturn(aPropertyName.getLength()); |
| ::com::sun::star::beans::PropertyState* pStates = aReturn.getArray(); |
| for (sal_uInt16 i=0; i<aPropertyName.getLength(); ++i, ++pStates) |
| *pStates = ::com::sun::star::beans::PropertyState_DEFAULT_VALUE; |
| return aReturn; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::setPropertyToDefault(const ::rtl::OUString& PropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XPropertyState > xState(m_xMainForm, UNO_QUERY); |
| if (xState.is()) |
| xState->setPropertyToDefault(PropertyName); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getPropertyDefault(const ::rtl::OUString& aPropertyName) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| Reference< ::com::sun::star::beans::XPropertyState > xState(m_xMainForm, UNO_QUERY); |
| if (xState.is()) |
| return xState->getPropertyDefault(aPropertyName); |
| return Any(); |
| } |
| |
| // ::com::sun::star::form::XReset |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::reset() throw( RuntimeException ) |
| { |
| Reference< ::com::sun::star::form::XReset > xReset(m_xMainForm, UNO_QUERY); |
| if (xReset.is()) |
| xReset->reset(); |
| } |
| |
| IMPLEMENT_LISTENER_ADMINISTRATION(SbaXFormAdapter, form, ResetListener, m_aResetListeners, ::com::sun::star::form::XReset, m_xMainForm) |
| |
| // ::com::sun::star::container::XNameContainer |
| // ------------------------------------------------------------------------- |
| void SbaXFormAdapter::implInsert(const Any& aElement, sal_Int32 nIndex, const ::rtl::OUString* pNewElName) throw( ::com::sun::star::lang::IllegalArgumentException ) |
| { |
| // extract the form component |
| if (aElement.getValueType().getTypeClass() != TypeClass_INTERFACE) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| Reference< ::com::sun::star::form::XFormComponent > xElement(*(Reference< XInterface > *)aElement.getValue(), UNO_QUERY); |
| if (!xElement.is()) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| // for the name we need the propset |
| Reference< ::com::sun::star::beans::XPropertySet > xElementSet(xElement, UNO_QUERY); |
| if (!xElementSet.is()) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| ::rtl::OUString sName; |
| try |
| { |
| if (pNewElName) |
| xElementSet->setPropertyValue(PROPERTY_NAME, makeAny(*pNewElName)); |
| |
| xElementSet->getPropertyValue(PROPERTY_NAME) >>= sName; |
| } |
| catch(Exception&) |
| { |
| // the set didn't support the name prop |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| // check the index |
| OSL_ASSERT(nIndex >= 0); |
| if (sal::static_int_cast< sal_uInt32 >(nIndex) > m_aChildren.size()) |
| nIndex = m_aChildren.size(); |
| |
| DBG_ASSERT(m_aChildren.size() == m_aChildNames.size(), "SAL_CALL SbaXFormAdapter::implInsert : inconsistent container state !"); |
| m_aChildren.insert(m_aChildren.begin() + nIndex, xElement); |
| m_aChildNames.insert(m_aChildNames.begin() + nIndex, sName); |
| |
| // listen for a changes of the name |
| xElementSet->addPropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this); |
| |
| // we are now the parent of the new element |
| xElement->setParent((::com::sun::star::container::XContainer*)this); |
| |
| // notify the container listeners |
| ::com::sun::star::container::ContainerEvent aEvt; |
| aEvt.Source = *this; |
| aEvt.Accessor <<= nIndex; |
| aEvt.Element <<= xElement; |
| ::cppu::OInterfaceIteratorHelper aIt(m_aContainerListeners); |
| while (aIt.hasMoreElements()) |
| ((::com::sun::star::container::XContainerListener*)aIt.next())->elementInserted(aEvt); |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Int32 SbaXFormAdapter::implGetPos(const ::rtl::OUString& rName) |
| { |
| ::std::vector< ::rtl::OUString>::iterator aIter = ::std::find_if( m_aChildNames.begin(), |
| m_aChildNames.end(), |
| ::std::bind2nd(::std::equal_to< rtl::OUString>(),rName)); |
| |
| if(aIter != m_aChildNames.end()) |
| return aIter - m_aChildNames.begin(); |
| |
| return -1; |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::insertByName(const ::rtl::OUString& aName, const Any& aElement) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| implInsert(aElement, m_aChildren.size(), &aName); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::removeByName(const ::rtl::OUString& Name) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| sal_Int32 nPos = implGetPos(Name); |
| if (-1 == nPos) |
| { |
| throw ::com::sun::star::container::NoSuchElementException(); |
| } |
| removeByIndex(nPos); |
| } |
| |
| // ::com::sun::star::container::XNameReplace |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::replaceByName(const ::rtl::OUString& aName, const Any& aElement) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| sal_Int32 nPos = implGetPos(aName); |
| if (-1 == nPos) |
| { |
| throw ::com::sun::star::container::NoSuchElementException(); |
| } |
| replaceByIndex(nPos, aElement); |
| } |
| |
| // ::com::sun::star::container::XNameAccess |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getByName(const ::rtl::OUString& aName) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| sal_Int32 nPos = implGetPos(aName); |
| if (-1 == nPos) |
| { |
| throw ::com::sun::star::container::NoSuchElementException(); |
| } |
| return makeAny(m_aChildren[nPos]); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Sequence< ::rtl::OUString > SAL_CALL SbaXFormAdapter::getElementNames() throw( RuntimeException ) |
| { |
| ::rtl::OUString *pChildNames = m_aChildNames.empty() ? 0 : &m_aChildNames[0]; |
| return Sequence< ::rtl::OUString >(pChildNames, m_aChildNames.size()); |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::hasByName(const ::rtl::OUString& aName) throw( RuntimeException ) |
| { |
| return (-1 != implGetPos(aName)); |
| } |
| |
| // ::com::sun::star::container::XElementAccess |
| // ------------------------------------------------------------------------- |
| Type SAL_CALL SbaXFormAdapter::getElementType() throw(RuntimeException) |
| { |
| return ::getCppuType( |
| static_cast< Reference< ::com::sun::star::form::XFormComponent >* >(NULL)); |
| } |
| |
| // ------------------------------------------------------------------------- |
| sal_Bool SAL_CALL SbaXFormAdapter::hasElements() throw(RuntimeException) |
| { |
| return m_aChildren.size() > 0; |
| } |
| |
| |
| // ::com::sun::star::container::XIndexContainer |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::insertByIndex(sal_Int32 _rIndex, const Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) ) |
| throw ::com::sun::star::lang::IndexOutOfBoundsException(); |
| implInsert(Element, _rIndex); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::removeByIndex(sal_Int32 _rIndex) throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) ) |
| throw ::com::sun::star::lang::IndexOutOfBoundsException(); |
| |
| Reference< ::com::sun::star::form::XFormComponent > xAffected = *(m_aChildren.begin() + _rIndex); |
| |
| DBG_ASSERT(m_aChildren.size() == m_aChildNames.size(), "SAL_CALL SbaXFormAdapter::removeByIndex : inconsistent container state !"); |
| m_aChildren.erase(m_aChildren.begin() + _rIndex); |
| m_aChildNames.erase(m_aChildNames.begin() + _rIndex); |
| |
| // no need to listen anymore |
| Reference< ::com::sun::star::beans::XPropertySet > xAffectedSet(xAffected, UNO_QUERY); |
| xAffectedSet->removePropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this); |
| |
| // we are no longer the parent |
| xAffected->setParent(Reference< XInterface > ()); |
| |
| // notify container listeners |
| ::com::sun::star::container::ContainerEvent aEvt; |
| aEvt.Source = *this; |
| aEvt.Element <<= xAffected; |
| ::cppu::OInterfaceIteratorHelper aIt(m_aContainerListeners); |
| while (aIt.hasMoreElements()) |
| ((::com::sun::star::container::XContainerListener*)aIt.next())->elementRemoved(aEvt); |
| |
| } |
| |
| // ::com::sun::star::container::XIndexReplace |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::replaceByIndex(sal_Int32 _rIndex, const Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) ) |
| throw ::com::sun::star::lang::IndexOutOfBoundsException(); |
| |
| // extract the form component |
| if (Element.getValueType().getTypeClass() != TypeClass_INTERFACE) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| Reference< ::com::sun::star::form::XFormComponent > xElement(*(Reference< XInterface > *)Element.getValue(), UNO_QUERY); |
| if (!xElement.is()) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| // for the name we need the propset |
| Reference< ::com::sun::star::beans::XPropertySet > xElementSet(xElement, UNO_QUERY); |
| if (!xElementSet.is()) |
| { |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| ::rtl::OUString sName; |
| try |
| { |
| xElementSet->getPropertyValue(PROPERTY_NAME) >>= sName; |
| } |
| catch(Exception&) |
| { |
| // the set didn't support the name prop |
| throw ::com::sun::star::lang::IllegalArgumentException(); |
| } |
| |
| Reference< ::com::sun::star::form::XFormComponent > xOld = *(m_aChildren.begin() + _rIndex); |
| |
| DBG_ASSERT(m_aChildren.size() == m_aChildNames.size(), "SAL_CALL SbaXFormAdapter::replaceByIndex : inconsistent container state !"); |
| *(m_aChildren.begin() + _rIndex) = xElement; |
| *(m_aChildNames.begin() + _rIndex) = sName; |
| |
| // correct property change listening |
| Reference< ::com::sun::star::beans::XPropertySet > xOldSet(xOld, UNO_QUERY); |
| xOldSet->removePropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this); |
| xElementSet->addPropertyChangeListener(PROPERTY_NAME, (::com::sun::star::beans::XPropertyChangeListener*)this); |
| |
| // parent reset |
| xOld->setParent(Reference< XInterface > ()); |
| xElement->setParent((::com::sun::star::container::XContainer*)this); |
| |
| // notify container listeners |
| ::com::sun::star::container::ContainerEvent aEvt; |
| aEvt.Source = *this; |
| aEvt.Accessor <<= (sal_Int32)_rIndex; |
| aEvt.Element <<= xElement; |
| aEvt.ReplacedElement <<= xOld; |
| |
| ::cppu::OInterfaceIteratorHelper aIt(m_aContainerListeners); |
| while (aIt.hasMoreElements()) |
| ((::com::sun::star::container::XContainerListener*)aIt.next())->elementReplaced(aEvt); |
| } |
| |
| // ::com::sun::star::container::XIndexAccess |
| // ------------------------------------------------------------------------- |
| sal_Int32 SAL_CALL SbaXFormAdapter::getCount() throw( RuntimeException ) |
| { |
| return m_aChildren.size(); |
| } |
| |
| // ------------------------------------------------------------------------- |
| Any SAL_CALL SbaXFormAdapter::getByIndex(sal_Int32 _rIndex) throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) |
| { |
| if ( ( _rIndex < 0 ) || ( (size_t)_rIndex >= m_aChildren.size() ) ) |
| throw ::com::sun::star::lang::IndexOutOfBoundsException(); |
| |
| Reference< ::com::sun::star::form::XFormComponent > xElement = *(m_aChildren.begin() + _rIndex); |
| return makeAny(xElement); |
| } |
| |
| // ::com::sun::star::container::XContainer |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::addContainerListener(const Reference< ::com::sun::star::container::XContainerListener >& xListener) throw( RuntimeException ) |
| { |
| m_aContainerListeners.addInterface(xListener); |
| } |
| |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::removeContainerListener(const Reference< ::com::sun::star::container::XContainerListener >& xListener) throw( RuntimeException ) |
| { |
| m_aContainerListeners.removeInterface(xListener); |
| } |
| |
| // ::com::sun::star::container::XEnumerationAccess |
| // ------------------------------------------------------------------------- |
| Reference< ::com::sun::star::container::XEnumeration > SAL_CALL SbaXFormAdapter::createEnumeration() throw( RuntimeException ) |
| { |
| return new ::comphelper::OEnumerationByName(this); |
| } |
| |
| // ::com::sun::star::beans::XPropertyChangeListener |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw( RuntimeException ) |
| { |
| if (evt.PropertyName.equals(PROPERTY_NAME)) |
| { |
| ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > >::iterator aIter = ::std::find_if( m_aChildren.begin(), |
| m_aChildren.end(), |
| ::std::bind2nd(::std::equal_to< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >(),evt.Source)); |
| |
| if(aIter != m_aChildren.end()) |
| { |
| sal_Int32 nPos = aIter - m_aChildren.begin(); |
| DBG_ASSERT(*(m_aChildNames.begin() + nPos) == ::comphelper::getString(evt.OldValue), "SAL_CALL SbaXFormAdapter::propertyChange : object has a wrong name !"); |
| *(m_aChildNames.begin() + nPos) = ::comphelper::getString(evt.NewValue); |
| } |
| } |
| } |
| |
| // ::com::sun::star::lang::XEventListener |
| // ------------------------------------------------------------------------- |
| void SAL_CALL SbaXFormAdapter::disposing(const ::com::sun::star::lang::EventObject& Source) throw( RuntimeException ) |
| { |
| // was it our main form ? |
| if (Source.Source == m_xMainForm) |
| dispose(); |
| |
| ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > >::iterator aIter = ::std::find_if( m_aChildren.begin(), |
| m_aChildren.end(), |
| ::std::bind2nd(::std::equal_to< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >(),Source.Source)); |
| if(aIter != m_aChildren.end()) |
| removeByIndex(aIter - m_aChildren.begin()); |
| } |
| // ----------------------------------------------------------------------------- |
| |
| |