22#include <com/sun/star/sdbc/FetchDirection.hpp>
23#include <com/sun/star/sdbc/SQLException.hpp>
24#include <com/sun/star/ucb/FetchError.hpp>
25#include <com/sun/star/beans/PropertyAttribute.hpp>
26#include <com/sun/star/script/CannotConvertException.hpp>
27#include <com/sun/star/script/Converter.hpp>
28#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
29#include <rtl/ustring.hxx>
31#include <osl/diagnose.h>
48#define COMSUNSTARUCBCCRS_DEFAULT_FETCH_SIZE 256
49#define COMSUNSTARUCBCCRS_DEFAULT_FETCH_DIRECTION FetchDirection::FORWARD
55 T (SAL_CALL css::sdbc::XRow::* f)(sal_Int32), sal_Int32 columnIndex)
68 OSL_FAIL(
"broadcaster was disposed already" );
102 catch (
const IllegalArgumentException&)
105 catch (
const CannotConvertException&)
119 : m_xContentIdentifierMapping( xMapping )
131 m_pMappedReminder.reset();
146 sal_Int32 nStart = m_pResult->StartIndex;
147 sal_Int32 nEnd = nStart;
148 if( m_pResult->Orientation )
149 nEnd += m_pResult->Rows.getLength() - 1;
151 nStart -= m_pResult->Rows.getLength() + 1;
153 return nStart <= row && row <= nEnd;
161 sal_Int32 nEnd = m_pResult->StartIndex;
162 if( m_pResult->Orientation )
163 return nEnd + m_pResult->Rows.getLength() - 1;
174 return ( m_pResult->FetchError & FetchError::ENDOFDATA )
175 && m_pResult->Orientation
176 && m_pResult->Rows.hasElements();
184 if( !( m_pResult->FetchError & FetchError::EXCEPTION ) )
187 sal_Int32 nEnd = m_pResult->StartIndex;
188 if( m_pResult->Orientation )
189 nEnd += m_pResult->Rows.getLength();
191 return nRow == nEnd+1;
198 throw SQLException();
200 throw SQLException();
201 if( !hasRow( nRow ) )
202 throw SQLException();
204 sal_Int32 nDiff = nRow - m_pResult->StartIndex;
208 return m_pResult->Rows.getArray()[nDiff];
217 sal_Int32 nDiff = nRow - m_pResult->StartIndex;
221 if( nDiff < rMappedReminder.getLength() )
223 sal_Bool* pMappedReminder = rMappedReminder.getArray();
224 pMappedReminder[nDiff] =
true;
231 if( !m_pMappedReminder || !m_pResult )
233 sal_Int32 nDiff = nRow - m_pResult->StartIndex;
236 if( nDiff < m_pMappedReminder->
getLength() )
237 return (*m_pMappedReminder)[nDiff];
244 if( !m_pMappedReminder )
246 sal_Int32
nCount = m_pResult->Rows.getLength();
247 m_pMappedReminder.emplace(
nCount );
248 std::fill_n(m_pMappedReminder->getArray(), m_pMappedReminder->getLength(),
false);
250 return *m_pMappedReminder;
254 ::getAny( sal_Int32 nRow, sal_Int32 nColumnIndex )
257 throw SQLException();
260 Any& rRow = getRowAny( nRow );
266 remindMapped( nRow );
271 auto & rowAny = getRowAny(nRow);
272 auto rRow = o3tl::doAccess<Sequence<Any>>(rowAny);
274 if( nColumnIndex > rRow->getLength() )
275 throw SQLException();
276 return (*rRow)[nColumnIndex-1];
286 Any& rRow = getRowAny( nRow );
290 remindMapped( nRow );
292 return *o3tl::doAccess<OUString>(getRowAny(nRow));
294 catch(
const SQLException&
ex)
297 throw css::lang::WrappedTargetRuntimeException(
ex.Message,
298 css::uno::Reference< css::uno::XInterface >(),
310 Any& rRow = getRowAny( nRow );
314 remindMapped( nRow );
316 return *o3tl::doAccess<Reference<XContentIdentifier>>(getRowAny(nRow));
318 catch(
const SQLException&
ex)
321 throw css::lang::WrappedTargetRuntimeException(
ex.Message,
322 css::uno::Reference< css::uno::XInterface >(),
334 Any& rRow = getRowAny( nRow );
338 remindMapped( nRow );
340 return *o3tl::doAccess<Reference<XContent>>(getRowAny(nRow));
342 catch (
const SQLException&
ex)
345 throw css::lang::WrappedTargetRuntimeException(
ex.Message,
346 css::uno::Reference< css::uno::XInterface >(),
356 public css::lang::XTypeProvider,
357 public css::beans::XPropertySetInfo
362 std::optional<Sequence< css::beans::Property >>
370 impl_getRemainedHandle()
const;
374 std::u16string_view rName
375 , css::beans::Property& rProp )
const;
377 impl_getPos( std::u16string_view rName )
const;
380 impl_isMyPropertyName( std::u16string_view rName );
384 XPropertySetInfo >
const & xPropertySetInfoOrigin );
387 virtual css::uno::Any SAL_CALL
queryInterface(
const css::uno::Type & rType )
override;
388 virtual void SAL_CALL
acquire()
390 virtual
void SAL_CALL
release()
398 virtual
Sequence< css::beans::Property > SAL_CALL
399 getProperties() override;
401 virtual css::beans::Property SAL_CALL
402 getPropertyByName( const OUString& aName ) override;
405 hasPropertyByName( const OUString& Name ) override;
415 Reference< XPropertySetInfo > const & xInfo )
416 : m_nFetchSizePropertyHandle( -1 )
417 , m_nFetchDirectionPropertyHandle( -1 )
431 OSL_FAIL(
"The received XPropertySetInfo doesn't contain required properties" );
432 m_xProperties.emplace();
438 sal_Int32 nDeleted = 0;
439 if( nFetchSize != -1 )
441 if( nFetchDirection != -1 )
445 sal_Int32 nOrigProps = aOrigProps.getLength();
447 m_xProperties->realloc( nOrigProps + 2 - nDeleted );
448 auto pProperties = m_xProperties->getArray();
449 for( sal_Int32
n = 0,
m = 0;
n < nOrigProps;
n++,
m++ )
451 if(
n == nFetchSize ||
n == nFetchDirection )
454 pProperties[
m ] = aOrigProps[
n ];
457 Property& rMyProp = pProperties[ nOrigProps - nDeleted ];
460 rMyProp.Attributes = PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT;
462 if( nFetchSize != -1 )
463 m_nFetchSizePropertyHandle = aOrigProps[nFetchSize].Handle;
465 m_nFetchSizePropertyHandle = impl_getRemainedHandle();
467 rMyProp.Handle = m_nFetchSizePropertyHandle;
471 Property& rMyProp = pProperties[ nOrigProps - nDeleted + 1 ];
474 rMyProp.Attributes = PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT;
476 m_nFetchDirectionPropertyHandle = rMyProp.Handle;
485 OWeakObject::acquire();
491 OWeakObject::release();
497 static_cast< XTypeProvider*
>(
this),
498 static_cast< XPropertySetInfo*
>(
this)
500 return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
517 return *m_xProperties;
525 if ( impl_queryProperty(
aName, aProp ) )
528 throw UnknownPropertyException(
aName);
535 return ( impl_getPos(
Name ) != -1 );
545 for( sal_Int32 nN = m_xProperties->getLength(); nN--; )
547 const Property& rMyProp = (*m_xProperties)[nN];
548 if( rMyProp.Name == rName )
557 for(
const Property& rMyProp : std::as_const(*m_xProperties) )
559 if( rMyProp.Name == rName )
561 rProp.Name = rMyProp.Name;
562 rProp.Handle = rMyProp.Handle;
563 rProp.Type = rMyProp.Type;
564 rProp.Attributes = rMyProp.Attributes;
589 OSL_FAIL(
"Properties not initialized yet" );
596 for(
const auto & rProp : std::as_const(*m_xProperties) )
616 xContentIdentifierMapping )
642 OSL_ENSURE(
m_xFetchProvider.is(),
"interface XFetchProvider is required" );
671 OSL_ENSURE( nRow >= 0,
"only positive values supported" );
674 OSL_FAIL(
"broadcaster was disposed already" );
686 if( bAfterLastApplied || nLastAppliedPos != nRow )
688 if( nForwardOnly == 1 )
690 if( bAfterLastApplied || bAfterLast || !nRow || nRow < nLastAppliedPos )
691 throw SQLException();
693 sal_Int32 nN = nRow - nLastAppliedPos;
695 for( nM = 0; nN--; nM++ )
720 if( !nLastAppliedPos || bAfterLast || bAfterLastApplied )
739 catch (
const SQLException&)
742 if( !bAfterLastApplied && !bAfterLast && nRow > nLastAppliedPos &&
impl_isForwardOnly(rGuard) )
744 sal_Int32 nN = nRow - nLastAppliedPos;
746 for( nM = 0; nN--; nM++ )
768#define FETCH_XXX( aCache, fetchInterface, fetchMethod ) \
769bool bDirection = !!( \
770 nFetchDirection != FetchDirection::REVERSE ); \
771FetchResult aResult = \
772 fetchInterface->fetchMethod( nRow, nFetchSize, bDirection ); \
773aCache.loadData( aResult ); \
774sal_Int32 nMax = aCache.getMaxRow(); \
775sal_Int32 nCurCount = m_nKnownCount; \
776bool bIsFinalCount = aCache.hasKnownLast(); \
777bool bCurIsFinalCount = m_bFinalCount; \
778if( nMax > nCurCount ) \
779 impl_changeRowCount( rGuard, nCurCount, nMax ); \
780if( bIsFinalCount && !bCurIsFinalCount ) \
781 impl_changeIsRowCountFinal( rGuard, bCurIsFinalCount, bIsFinalCount );
785 , sal_Int32 nFetchSize, sal_Int32 nFetchDirection )
793 OSL_ENSURE( nNew > nOld,
"RowCount only can grow" );
798 PropertyChangeEvent aEvt;
800 aEvt.Further =
false;
801 aEvt.OldValue <<= nOld;
802 aEvt.NewValue <<= nNew;
813 OSL_ENSURE( !bOld && bNew,
"This change is not allowed for IsRowCountFinal" );
818 PropertyChangeEvent aEvt;
820 aEvt.Further =
false;
821 aEvt.OldValue <<= bOld;
822 aEvt.NewValue <<= bNew;
865 OWeakObject::acquire();
871 OWeakObject::release();
880 if( aRet.hasValue() )
884 static_cast< XTypeProvider*
>(
this ),
885 static_cast< XServiceInfo*
>(
this ) );
887 return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
899 , XResultSetMetaDataSupplier
902 , XPropertyChangeListener
903 , XVetoableChangeListener
915 return "com.sun.star.comp.ucb.CachedContentResultSet";
925 return {
"com.sun.star.ucb.CachedContentResultSet" };
935 ::setPropertyValueImpl( std::unique_lock<std::mutex>& rGuard,
const OUString& aPropertyName,
const Any& aValue )
941 OSL_FAIL(
"broadcaster was disposed already" );
942 throw UnknownPropertyException();
948 if( aProp.Attributes & PropertyAttribute::READONLY )
952 throw IllegalArgumentException();
958 if( !( aValue >>= nNew ) )
960 throw IllegalArgumentException();
963 if( nNew == FetchDirection::UNKNOWN )
967 else if( nNew != FetchDirection::FORWARD && nNew != FetchDirection::REVERSE )
969 throw IllegalArgumentException();
973 PropertyChangeEvent aEvt;
975 aEvt.PropertyName = aPropertyName;
976 aEvt.Further =
false;
978 m_nFetchDirectionPropertyHandle;
980 aEvt.NewValue <<= nNew;
991 if( !( aValue >>= nNew ) )
993 throw IllegalArgumentException();
1002 PropertyChangeEvent aEvt;
1004 aEvt.PropertyName = aPropertyName;
1005 aEvt.Further =
false;
1007 m_nFetchSizePropertyHandle;
1009 aEvt.NewValue <<= nNew;
1021 OSL_FAIL(
"broadcaster was disposed already" );
1038 OSL_FAIL(
"broadcaster was disposed already" );
1039 throw UnknownPropertyException();
1067 OSL_FAIL(
"broadcaster was disposed already" );
1068 throw UnknownPropertyException();
1101 PropertyChangeEvent aEvt( rEvt );
1103 aEvt.Further =
false;
1107 ::impl_isMyPropertyName( rEvt.PropertyName ) )
1120 if( !( aEvt.NewValue >>= nNew ) )
1122 OSL_FAIL(
"PropertyChangeEvent contains wrong data" );
1133 if( !( aEvt.NewValue >>= bNew ) )
1135 OSL_FAIL(
"PropertyChangeEvent contains wrong data" );
1157 ::impl_isMyPropertyName( rEvt.PropertyName ) )
1163 PropertyChangeEvent aEvt( rEvt );
1165 aEvt.Further =
false;
1174#define XCONTENTACCESS_queryXXX( queryXXX, XXX, TYPE ) \
1175impl_EnsureNotDisposed(rGuard); \
1176sal_Int32 nRow = m_nRow; \
1177sal_Int32 nFetchSize = m_nFetchSize; \
1178sal_Int32 nFetchDirection = m_nFetchDirection; \
1179if( !m_aCache##XXX.hasRow( nRow ) ) \
1183 if( !m_aCache##XXX.hasCausedException( nRow ) ) \
1185 if( !m_xFetchProviderForContentAccess.is() ) \
1187 OSL_FAIL( "broadcaster was disposed already" ); \
1188 throw RuntimeException(); \
1190 if( impl_isForwardOnly(rGuard) ) \
1191 applyPositionToOrigin( rGuard, nRow ); \
1193 FETCH_XXX( m_aCache##XXX, m_xFetchProviderForContentAccess, fetch##XXX##s ); \
1195 if( !m_aCache##XXX.hasRow( nRow ) ) \
1197 applyPositionToOrigin( rGuard, nRow ); \
1198 TYPE aRet = ContentResultSetWrapper::query##XXX();\
1199 if( m_xContentIdentifierMapping.is() ) \
1200 return m_xContentIdentifierMapping->map##XXX( aRet );\
1204 catch (const RuntimeException&) \
1208 catch (const Exception& e) \
1210 Any a(cppu::getCaughtException()); \
1211 throw WrappedTargetRuntimeException( \
1212 "wrapped Exception " + e.Message, \
1213 Reference<XInterface>(), a); \
1216return m_aCache##XXX.get##XXX( nRow );
1292 throw SQLException();
1329 throw SQLException();
1332 throw SQLException();
1336 OSL_FAIL(
"broadcaster was disposed already" );
1378 return nCurRow != 0;
1401 sal_Int32 nNewRow = row;
1423 return nCurRow && !bIsAfterLast;
1434 throw SQLException();
1437 throw SQLException();
1442 sal_Int32 nNewRow =
m_nRow + rows;
1484 throw SQLException();
1513 throw SQLException();
1524 OSL_FAIL(
"broadcaster was disposed already" );
1546 OSL_ENSURE( nCurRow >=
m_nKnownCount,
"position of last row < known Count, that could not be" );
1549 return nCurRow != 0;
1560 throw SQLException();
1574 throw SQLException();
1596 OSL_FAIL(
"broadcaster was disposed already" );
1629 OSL_FAIL(
"broadcaster was disposed already" );
1671 return xResultSetOrigin->isFirst();
1697 return xResultSetOrigin->isLast();
1781 OSL_FAIL(
"broadcaster was disposed already" );
1792 return rowOriginGet<OUString>(&css::sdbc::XRow::getString, columnIndex);
1799 return rowOriginGet<sal_Bool>(&css::sdbc::XRow::getBoolean, columnIndex);
1806 return rowOriginGet<sal_Int8>(&css::sdbc::XRow::getByte, columnIndex);
1813 return rowOriginGet<sal_Int16>(&css::sdbc::XRow::getShort, columnIndex);
1820 return rowOriginGet<sal_Int32>(&css::sdbc::XRow::getInt, columnIndex);
1827 return rowOriginGet<sal_Int64>(&css::sdbc::XRow::getLong, columnIndex);
1834 return rowOriginGet<float>(&css::sdbc::XRow::getFloat, columnIndex);
1841 return rowOriginGet<double>(&css::sdbc::XRow::getDouble, columnIndex);
1848 return rowOriginGet< css::uno::Sequence<sal_Int8> >(
1849 &css::sdbc::XRow::getBytes, columnIndex);
1856 return rowOriginGet<css::util::Date>(
1857 &css::sdbc::XRow::getDate, columnIndex);
1864 return rowOriginGet<css::util::Time>(
1865 &css::sdbc::XRow::getTime, columnIndex);
1872 return rowOriginGet<css::util::DateTime>(
1873 &css::sdbc::XRow::getTimestamp, columnIndex);
1881 return rowOriginGet< css::uno::Reference<css::io::XInputStream> >(
1882 &css::sdbc::XRow::getBinaryStream, columnIndex);
1890 return rowOriginGet< css::uno::Reference<css::io::XInputStream> >(
1891 &css::sdbc::XRow::getCharacterStream, columnIndex);
1898 css::container::XNameAccess >& typeMap )
1913 OSL_FAIL(
"broadcaster was disposed already" );
1924 return m_xRowOrigin->getObject( columnIndex, typeMap );
1938 return rowOriginGet< css::uno::Reference<css::sdbc::XRef> >(
1939 &css::sdbc::XRow::getRef, columnIndex);
1946 return rowOriginGet< css::uno::Reference<css::sdbc::XBlob> >(
1947 &css::sdbc::XRow::getBlob, columnIndex);
1954 return rowOriginGet< css::uno::Reference<css::sdbc::XClob> >(
1955 &css::sdbc::XRow::getClob, columnIndex);
1962 return rowOriginGet< css::uno::Reference<css::sdbc::XArray> >(
1963 &css::sdbc::XRow::getArray, columnIndex);
1978 "PropertyValueSet::getTypeConverter() - "
1979 "Service 'com.sun.star.script.Converter' n/a!" );
2001 return "com.sun.star.comp.ucb.CachedContentResultSetFactory";
2009 return {
"com.sun.star.ucb.CachedContentResultSetFactory" };
2016extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
2018 css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any>
const&)
constexpr OUStringLiteral g_sPropertyNameForFetchSize(u"FetchSize")
#define FETCH_XXX(aCache, fetchInterface, fetchMethod)
const char16_t g_sPropertyNameForCount[]
const char16_t g_sPropertyNameForFinalCount[]
constexpr OUStringLiteral g_sPropertyNameForFetchDirection(u"FetchDirection")
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * ucb_CachedContentResultSetFactory_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
#define COMSUNSTARUCBCCRS_DEFAULT_FETCH_SIZE
XTYPEPROVIDER_IMPL_11(CachedContentResultSet, XTypeProvider, XServiceInfo, XComponent, XCloseable, XResultSetMetaDataSupplier, XPropertySet, XPropertyChangeListener, XVetoableChangeListener, XContentAccess, XResultSet, XRow)
XTYPEPROVIDER_IMPL_2(CCRS_PropertySetInfo, XTypeProvider, XPropertySetInfo)
#define COMSUNSTARUCBCCRS_DEFAULT_FETCH_DIRECTION
#define XCONTENTACCESS_queryXXX(queryXXX, XXX, TYPE)
sal_Int32 impl_getPos(std::u16string_view rName) const
virtual sal_Bool SAL_CALL hasPropertyByName(const OUString &Name) override
std::optional< Sequence< css::beans::Property > > m_xProperties
bool impl_queryProperty(std::u16string_view rName, css::beans::Property &rProp) const
sal_Int32 m_nFetchDirectionPropertyHandle
static bool impl_isMyPropertyName(std::u16string_view rName)
virtual Sequence< css::beans::Property > SAL_CALL getProperties() override
sal_Int32 impl_getRemainedHandle() const
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
virtual void SAL_CALL release() noexcept override
sal_Int32 m_nFetchSizePropertyHandle
virtual css::beans::Property SAL_CALL getPropertyByName(const OUString &aName) override
virtual void SAL_CALL acquire() noexcept override
virtual OUString SAL_CALL getImplementationName() override
virtual ~CachedContentResultSetFactory() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL createCachedContentResultSet(const css::uno::Reference< css::sdbc::XResultSet > &xSource, const css::uno::Reference< css::ucb::XContentIdentifierMapping > &xMapping) override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
CachedContentResultSetFactory(const css::uno::Reference< css::uno::XComponentContext > &rxContext)
void remindMapped(sal_Int32 nRow)
const css::uno::Any & getAny(sal_Int32 nRow, sal_Int32 nColumnIndex)
bool hasCausedException(sal_Int32 nRow) const
bool hasKnownLast() const
css::uno::Any & getRowAny(sal_Int32 nRow)
bool hasRow(sal_Int32 nRow) const
CCRS_Cache(const css::uno::Reference< css::ucb::XContentIdentifierMapping > &xMapping)
css::uno::Sequence< sal_Bool > & getMappedReminder()
void loadData(const css::ucb::FetchResult &rResult)
css::uno::Reference< css::ucb::XContentIdentifier > getContentIdentifier(sal_Int32 nRow)
css::uno::Reference< css::ucb::XContent > getContent(sal_Int32 nRow)
bool isRowMapped(sal_Int32 nRow)
OUString const & getContentIdentifierString(sal_Int32 nRow)
sal_Int32 getMaxRow() const
virtual ~CachedContentResultSet() override
const css::uno::Reference< css::script::XTypeConverter > & getTypeConverter(std::unique_lock< std::mutex > &rGuard)
bool m_bTriedToGetTypeConverter
virtual void impl_propertyChange(const css::beans::PropertyChangeEvent &evt) override
virtual css::uno::Reference< css::ucb::XContentIdentifier > SAL_CALL queryContentIdentifier() override
virtual css::util::Date SAL_CALL getDate(sal_Int32 columnIndex) override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
bool impl_isKnownValidPosition(std::unique_lock< std::mutex > &rGuard, sal_Int32 nRow) const
bool impl_isKnownInvalidPosition(std::unique_lock< std::mutex > &rGuard, sal_Int32 nRow) const
virtual OUString queryContentIdentifierStringImpl(std::unique_lock< std::mutex > &rGuard) override
virtual float SAL_CALL getFloat(sal_Int32 columnIndex) override
CCRS_Cache m_aCacheContentIdentifier
virtual sal_Bool SAL_CALL rowInserted() override
virtual css::util::DateTime SAL_CALL getTimestamp(sal_Int32 columnIndex) override
virtual sal_Bool SAL_CALL getBoolean(sal_Int32 columnIndex) override
virtual sal_Bool SAL_CALL first() override
sal_Int32 m_nLastAppliedPos
virtual sal_Bool SAL_CALL last() override
CachedContentResultSet(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const css::uno::Reference< css::sdbc::XResultSet > &xOrigin, const css::uno::Reference< css::ucb::XContentIdentifierMapping > &xContentIdentifierMapping)
void impl_fetchData(std::unique_lock< std::mutex > &rGuard, sal_Int32 nRow, sal_Int32 nCount, sal_Int32 nFetchDirection)
virtual sal_Bool SAL_CALL isBeforeFirst() override
virtual sal_Int16 SAL_CALL getShort(sal_Int32 columnIndex) override
virtual css::uno::Any SAL_CALL getObject(sal_Int32 columnIndex, const css::uno::Reference< css::container::XNameAccess > &typeMap) override
virtual void SAL_CALL release() noexcept override
virtual css::uno::Reference< css::ucb::XContent > SAL_CALL queryContent() override
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
CCRS_Cache m_aCacheContent
virtual double SAL_CALL getDouble(sal_Int32 columnIndex) override
virtual css::util::Time SAL_CALL getTime(sal_Int32 columnIndex) override
virtual void setPropertyValueImpl(std::unique_lock< std::mutex > &rGuard, const OUString &aPropertyName, const css::uno::Any &aValue) override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
CCRS_Cache m_aCacheContentIdentifierString
bool m_bLastReadWasFromCache
css::uno::Reference< css::script::XTypeConverter > m_xTypeConverter
virtual sal_Int32 SAL_CALL getInt(sal_Int32 columnIndex) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
virtual void impl_vetoableChange(const css::beans::PropertyChangeEvent &aEvent) override
virtual sal_Bool SAL_CALL next() override
virtual css::uno::Reference< css::sdbc::XArray > SAL_CALL getArray(sal_Int32 columnIndex) override
virtual OUString SAL_CALL getString(sal_Int32 columnIndex) override
virtual sal_Bool SAL_CALL isFirst() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
void impl_changeIsRowCountFinal(std::unique_lock< std::mutex > &rGuard, bool bOld, bool bNew)
css::uno::Reference< css::ucb::XFetchProvider > m_xFetchProvider
virtual css::uno::Reference< css::sdbc::XClob > SAL_CALL getClob(sal_Int32 columnIndex) override
virtual void SAL_CALL afterLast() override
virtual sal_Int64 SAL_CALL getLong(sal_Int32 columnIndex) override
virtual void SAL_CALL refreshRow() override
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getStatement() override
T rowOriginGet(T(SAL_CALL css::sdbc::XRow::*f)(sal_Int32), sal_Int32 columnIndex)
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual void SAL_CALL beforeFirst() override
virtual sal_Bool SAL_CALL isLast() override
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getCharacterStream(sal_Int32 columnIndex) override
bool m_bLastCachedReadWasNull
virtual sal_Bool SAL_CALL isAfterLast() override
bool applyPositionToOrigin(std::unique_lock< std::mutex > &rGuard, sal_Int32 nRow)
sal_Int32 m_nFetchDirection
virtual OUString SAL_CALL getImplementationName() override
void impl_changeRowCount(std::unique_lock< std::mutex > &rGuard, sal_Int32 nOld, sal_Int32 nNew)
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getBytes(sal_Int32 columnIndex) override
virtual sal_Bool SAL_CALL wasNull() override
virtual void SAL_CALL acquire() noexcept override
virtual sal_Int32 SAL_CALL getRow() override
virtual sal_Bool SAL_CALL rowDeleted() override
virtual sal_Bool SAL_CALL absolute(sal_Int32 row) override
virtual void impl_disposing(const css::lang::EventObject &Source) override
virtual css::uno::Reference< css::sdbc::XRef > SAL_CALL getRef(sal_Int32 columnIndex) override
virtual sal_Bool SAL_CALL previous() override
virtual void impl_initPropertySetInfo(std::unique_lock< std::mutex > &rGuard) override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
virtual sal_Bool SAL_CALL rowUpdated() override
css::uno::Reference< css::ucb::XContentIdentifierMapping > m_xContentIdentifierMapping
virtual sal_Bool SAL_CALL relative(sal_Int32 rows) override
css::uno::Reference< css::ucb::XFetchProviderForContentAccess > m_xFetchProviderForContentAccess
virtual css::uno::Reference< css::io::XInputStream > SAL_CALL getBinaryStream(sal_Int32 columnIndex) override
virtual css::uno::Reference< css::sdbc::XBlob > SAL_CALL getBlob(sal_Int32 columnIndex) override
rtl::Reference< CCRS_PropertySetInfo > m_xMyPropertySetInfo
virtual sal_Int8 SAL_CALL getByte(sal_Int32 columnIndex) override
virtual void impl_disposing(const css::lang::EventObject &Source)
css::uno::Reference< css::sdbc::XResultSet > m_xResultSetOrigin
void impl_notifyVetoableChangeListeners(std::unique_lock< std::mutex > &rGuard, const css::beans::PropertyChangeEvent &rEvt)
void impl_EnsureNotDisposed(std::unique_lock< std::mutex > &rGuard)
virtual OUString SAL_CALL queryContentIdentifierString() override final
css::uno::Reference< css::beans::XPropertySetInfo > m_xPropertySetInfo
! call impl_init_xPropertySetOrigin() bevor you access this member
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
css::uno::Reference< css::beans::XPropertySet > m_xPropertySetOrigin
! call impl_init_xContentAccessOrigin() bevor you access this member
css::uno::Reference< css::sdbc::XRow > m_xRowOrigin
void impl_init_xPropertySetOrigin(std::unique_lock< std::mutex > &)
css::uno::Reference< css::beans::XPropertySetInfo > getPropertySetInfoImpl(std::unique_lock< std::mutex > &rGuard)
bool impl_isForwardOnly(std::unique_lock< std::mutex > &rGuard)
void impl_init_xRowOrigin(std::unique_lock< std::mutex > &)
void impl_notifyPropertyChangeListeners(std::unique_lock< std::mutex > &rGuard, const css::beans::PropertyChangeEvent &rEvt)
virtual void impl_initPropertySetInfo(std::unique_lock< std::mutex > &rGuard)
css::uno::Type const & get()
Reference< XTypeConverter > xConverter
double getLength(const B2DPolygon &rCandidate)
class SAL_NO_VTABLE XPropertySet
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
Any SAL_CALL getCaughtException()