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)
58 osl::ResettableMutexGuard aGuard(
m_aMutex);
64 bool isCleared =
false;
69 OSL_FAIL(
"broadcaster was disposed already" );
109 catch (
const IllegalArgumentException&)
112 catch (
const CannotConvertException&)
126 : m_xContentIdentifierMapping( xMapping )
138 m_pMappedReminder.reset();
153 sal_Int32 nStart = m_pResult->StartIndex;
154 sal_Int32 nEnd = nStart;
155 if( m_pResult->Orientation )
156 nEnd += m_pResult->Rows.getLength() - 1;
158 nStart -= m_pResult->Rows.getLength() + 1;
160 return nStart <= row && row <= nEnd;
168 sal_Int32 nEnd = m_pResult->StartIndex;
169 if( m_pResult->Orientation )
170 return nEnd + m_pResult->Rows.getLength() - 1;
181 return ( m_pResult->FetchError & FetchError::ENDOFDATA )
182 && m_pResult->Orientation
183 && m_pResult->Rows.hasElements();
191 if( !( m_pResult->FetchError & FetchError::EXCEPTION ) )
194 sal_Int32 nEnd = m_pResult->StartIndex;
195 if( m_pResult->Orientation )
196 nEnd += m_pResult->Rows.getLength();
198 return nRow == nEnd+1;
205 throw SQLException();
207 throw SQLException();
208 if( !hasRow( nRow ) )
209 throw SQLException();
211 sal_Int32 nDiff = nRow - m_pResult->StartIndex;
215 return m_pResult->Rows.getArray()[nDiff];
224 sal_Int32 nDiff = nRow - m_pResult->StartIndex;
228 if( nDiff < rMappedReminder.getLength() )
230 sal_Bool* pMappedReminder = rMappedReminder.getArray();
231 pMappedReminder[nDiff] =
true;
238 if( !m_pMappedReminder || !m_pResult )
240 sal_Int32 nDiff = nRow - m_pResult->StartIndex;
243 if( nDiff < m_pMappedReminder->
getLength() )
244 return (*m_pMappedReminder)[nDiff];
251 if( !m_pMappedReminder )
253 sal_Int32
nCount = m_pResult->Rows.getLength();
254 m_pMappedReminder.emplace(
nCount );
255 std::fill_n(m_pMappedReminder->getArray(), m_pMappedReminder->getLength(),
false);
257 return *m_pMappedReminder;
261 ::getAny( sal_Int32 nRow, sal_Int32 nColumnIndex )
264 throw SQLException();
267 Any& rRow = getRowAny( nRow );
273 remindMapped( nRow );
278 auto & rowAny = getRowAny(nRow);
279 auto rRow = o3tl::doAccess<Sequence<Any>>(rowAny);
281 if( nColumnIndex > rRow->getLength() )
282 throw SQLException();
283 return (*rRow)[nColumnIndex-1];
293 Any& rRow = getRowAny( nRow );
297 remindMapped( nRow );
299 return *o3tl::doAccess<OUString>(getRowAny(nRow));
301 catch(
const SQLException&
ex)
304 throw css::lang::WrappedTargetRuntimeException(
ex.Message,
305 css::uno::Reference< css::uno::XInterface >(),
317 Any& rRow = getRowAny( nRow );
321 remindMapped( nRow );
323 return *o3tl::doAccess<Reference<XContentIdentifier>>(getRowAny(nRow));
325 catch(
const SQLException&
ex)
328 throw css::lang::WrappedTargetRuntimeException(
ex.Message,
329 css::uno::Reference< css::uno::XInterface >(),
341 Any& rRow = getRowAny( nRow );
345 remindMapped( nRow );
347 return *o3tl::doAccess<Reference<XContent>>(getRowAny(nRow));
349 catch (
const SQLException&
ex)
352 throw css::lang::WrappedTargetRuntimeException(
ex.Message,
353 css::uno::Reference< css::uno::XInterface >(),
363 public css::lang::XTypeProvider,
364 public css::beans::XPropertySetInfo
369 std::optional<Sequence< css::beans::Property >>
377 impl_getRemainedHandle()
const;
381 std::u16string_view rName
382 , css::beans::Property& rProp )
const;
384 impl_getPos( std::u16string_view rName )
const;
387 impl_isMyPropertyName( std::u16string_view rName );
391 XPropertySetInfo >
const & xPropertySetInfoOrigin );
394 virtual css::uno::Any SAL_CALL
queryInterface(
const css::uno::Type & rType )
override;
395 virtual void SAL_CALL
acquire()
397 virtual
void SAL_CALL
release()
405 virtual
Sequence< css::beans::Property > SAL_CALL
406 getProperties() override;
408 virtual css::beans::Property SAL_CALL
409 getPropertyByName( const OUString& aName ) override;
412 hasPropertyByName( const OUString& Name ) override;
422 Reference< XPropertySetInfo > const & xInfo )
423 : m_nFetchSizePropertyHandle( -1 )
424 , m_nFetchDirectionPropertyHandle( -1 )
438 OSL_FAIL(
"The received XPropertySetInfo doesn't contain required properties" );
439 m_xProperties.emplace();
445 sal_Int32 nDeleted = 0;
446 if( nFetchSize != -1 )
448 if( nFetchDirection != -1 )
452 sal_Int32 nOrigProps = aOrigProps.getLength();
454 m_xProperties->realloc( nOrigProps + 2 - nDeleted );
455 auto pProperties = m_xProperties->getArray();
456 for( sal_Int32
n = 0,
m = 0;
n < nOrigProps;
n++,
m++ )
458 if(
n == nFetchSize ||
n == nFetchDirection )
461 pProperties[
m ] = aOrigProps[
n ];
464 Property& rMyProp = pProperties[ nOrigProps - nDeleted ];
467 rMyProp.Attributes = PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT;
469 if( nFetchSize != -1 )
470 m_nFetchSizePropertyHandle = aOrigProps[nFetchSize].Handle;
472 m_nFetchSizePropertyHandle = impl_getRemainedHandle();
474 rMyProp.Handle = m_nFetchSizePropertyHandle;
478 Property& rMyProp = pProperties[ nOrigProps - nDeleted + 1 ];
481 rMyProp.Attributes = PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT;
483 m_nFetchDirectionPropertyHandle = rMyProp.Handle;
492 OWeakObject::acquire();
498 OWeakObject::release();
504 static_cast< XTypeProvider*
>(
this),
505 static_cast< XPropertySetInfo*
>(
this)
507 return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
524 return *m_xProperties;
532 if ( impl_queryProperty(
aName, aProp ) )
535 throw UnknownPropertyException(
aName);
542 return ( impl_getPos(
Name ) != -1 );
552 for( sal_Int32 nN = m_xProperties->getLength(); nN--; )
554 const Property& rMyProp = (*m_xProperties)[nN];
555 if( rMyProp.Name == rName )
564 for(
const Property& rMyProp : std::as_const(*m_xProperties) )
566 if( rMyProp.Name == rName )
568 rProp.Name = rMyProp.Name;
569 rProp.Handle = rMyProp.Handle;
570 rProp.Type = rMyProp.Type;
571 rProp.Attributes = rMyProp.Attributes;
596 OSL_FAIL(
"Properties not initialized yet" );
603 for(
const auto & rProp : std::as_const(*m_xProperties) )
623 xContentIdentifierMapping )
649 OSL_ENSURE(
m_xFetchProvider.is(),
"interface XFetchProvider is required" );
678 osl::ResettableMutexGuard aGuard(
m_aMutex);
679 OSL_ENSURE( nRow >= 0,
"only positive values supported" );
682 OSL_FAIL(
"broadcaster was disposed already" );
694 if( bAfterLastApplied || nLastAppliedPos != nRow )
696 if( nForwardOnly == 1 )
698 if( bAfterLastApplied || bAfterLast || !nRow || nRow < nLastAppliedPos )
699 throw SQLException();
701 sal_Int32 nN = nRow - nLastAppliedPos;
703 for( nM = 0; nN--; nM++ )
728 if( !nLastAppliedPos || bAfterLast || bAfterLastApplied )
747 catch (
const SQLException&)
749 if( !bAfterLastApplied && !bAfterLast && nRow > nLastAppliedPos &&
impl_isForwardOnly() )
751 sal_Int32 nN = nRow - nLastAppliedPos;
753 for( nM = 0; nN--; nM++ )
776#define FETCH_XXX( aCache, fetchInterface, fetchMethod ) \
777bool bDirection = !!( \
778 nFetchDirection != FetchDirection::REVERSE ); \
779FetchResult aResult = \
780 fetchInterface->fetchMethod( nRow, nFetchSize, bDirection ); \
781osl::ClearableGuard< osl::Mutex > aGuard2( m_aMutex ); \
782aCache.loadData( aResult ); \
783sal_Int32 nMax = aCache.getMaxRow(); \
784sal_Int32 nCurCount = m_nKnownCount; \
785bool bIsFinalCount = aCache.hasKnownLast(); \
786bool bCurIsFinalCount = m_bFinalCount; \
788if( nMax > nCurCount ) \
789 impl_changeRowCount( nCurCount, nMax ); \
790if( bIsFinalCount && !bCurIsFinalCount ) \
791 impl_changeIsRowCountFinal( bCurIsFinalCount, bIsFinalCount );
795 , sal_Int32 nFetchSize, sal_Int32 nFetchDirection )
803 OSL_ENSURE( nNew > nOld,
"RowCount only can grow" );
808 PropertyChangeEvent aEvt;
810 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
812 aEvt.Further =
false;
813 aEvt.OldValue <<= nOld;
814 aEvt.NewValue <<= nNew;
826 OSL_ENSURE( !bOld && bNew,
"This change is not allowed for IsRowCountFinal" );
831 PropertyChangeEvent aEvt;
833 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
835 aEvt.Further =
false;
836 aEvt.OldValue <<= bOld;
837 aEvt.NewValue <<= bNew;
870 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
882 OWeakObject::acquire();
888 OWeakObject::release();
897 if( aRet.hasValue() )
901 static_cast< XTypeProvider*
>(
this ),
902 static_cast< XServiceInfo*
>(
this ) );
904 return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
916 , XResultSetMetaDataSupplier
919 , XPropertyChangeListener
920 , XVetoableChangeListener
932 return "com.sun.star.comp.ucb.CachedContentResultSet";
942 return {
"com.sun.star.ucb.CachedContentResultSet" };
958 OSL_FAIL(
"broadcaster was disposed already" );
959 throw UnknownPropertyException();
965 if( aProp.Attributes & PropertyAttribute::READONLY )
969 throw IllegalArgumentException();
975 if( !( aValue >>= nNew ) )
977 throw IllegalArgumentException();
980 if( nNew == FetchDirection::UNKNOWN )
984 else if( nNew != FetchDirection::FORWARD && nNew != FetchDirection::REVERSE )
986 throw IllegalArgumentException();
990 PropertyChangeEvent aEvt;
992 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
994 aEvt.PropertyName = aPropertyName;
995 aEvt.Further =
false;
997 m_nFetchDirectionPropertyHandle;
999 aEvt.NewValue <<= nNew;
1011 if( !( aValue >>= nNew ) )
1013 throw IllegalArgumentException();
1022 PropertyChangeEvent aEvt;
1024 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1026 aEvt.PropertyName = aPropertyName;
1027 aEvt.Further =
false;
1029 m_nFetchSizePropertyHandle;
1031 aEvt.NewValue <<= nNew;
1043 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1046 OSL_FAIL(
"broadcaster was disposed already" );
1063 OSL_FAIL(
"broadcaster was disposed already" );
1064 throw UnknownPropertyException();
1073 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1078 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1083 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1088 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1095 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1098 OSL_FAIL(
"broadcaster was disposed already" );
1099 throw UnknownPropertyException();
1117 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1131 PropertyChangeEvent aEvt( rEvt );
1133 aEvt.Further =
false;
1137 ::impl_isMyPropertyName( rEvt.PropertyName ) )
1150 if( !( aEvt.NewValue >>= nNew ) )
1152 OSL_FAIL(
"PropertyChangeEvent contains wrong data" );
1163 if( !( aEvt.NewValue >>= bNew ) )
1165 OSL_FAIL(
"PropertyChangeEvent contains wrong data" );
1186 ::impl_isMyPropertyName( rEvt.PropertyName ) )
1192 PropertyChangeEvent aEvt( rEvt );
1194 aEvt.Further =
false;
1203#define XCONTENTACCESS_queryXXX( queryXXX, XXX, TYPE ) \
1204impl_EnsureNotDisposed(); \
1205osl::ResettableMutexGuard aGuard(m_aMutex); \
1206sal_Int32 nRow = m_nRow; \
1207sal_Int32 nFetchSize = m_nFetchSize; \
1208sal_Int32 nFetchDirection = m_nFetchDirection; \
1209if( !m_aCache##XXX.hasRow( nRow ) ) \
1213 bool isCleared = false; \
1214 if( !m_aCache##XXX.hasCausedException( nRow ) ) \
1216 if( !m_xFetchProviderForContentAccess.is() ) \
1218 OSL_FAIL( "broadcaster was disposed already" ); \
1219 throw RuntimeException(); \
1223 if( impl_isForwardOnly() ) \
1224 applyPositionToOrigin( nRow ); \
1226 FETCH_XXX( m_aCache##XXX, m_xFetchProviderForContentAccess, fetch##XXX##s ); \
1232 if( !m_aCache##XXX.hasRow( nRow ) ) \
1235 applyPositionToOrigin( nRow ); \
1236 TYPE aRet = ContentResultSetWrapper::queryXXX();\
1237 if( m_xContentIdentifierMapping.is() ) \
1238 return m_xContentIdentifierMapping->map##XXX( aRet );\
1242 catch (const RuntimeException&) \
1246 catch (const Exception& e) \
1248 Any a(cppu::getCaughtException()); \
1249 throw WrappedTargetRuntimeException( \
1250 "wrapped Exception " + e.Message, \
1251 Reference<XInterface>(), a); \
1254return m_aCache##XXX.get##XXX( nRow );
1289 osl::ResettableMutexGuard aGuard(
m_aMutex);
1329 throw SQLException();
1331 osl::ResettableMutexGuard aGuard(
m_aMutex);
1368 throw SQLException();
1371 throw SQLException();
1373 osl::ResettableMutexGuard aGuard(
m_aMutex);
1377 OSL_FAIL(
"broadcaster was disposed already" );
1419 return nCurRow != 0;
1442 sal_Int32 nNewRow = row;
1464 return nCurRow && !bIsAfterLast;
1474 throw SQLException();
1476 osl::ResettableMutexGuard aGuard(
m_aMutex);
1478 throw SQLException();
1483 sal_Int32 nNewRow =
m_nRow + rows;
1527 throw SQLException();
1529 osl::ResettableMutexGuard aGuard(
m_aMutex);
1560 throw SQLException();
1562 osl::ResettableMutexGuard aGuard(
m_aMutex);
1572 OSL_FAIL(
"broadcaster was disposed already" );
1594 OSL_ENSURE( nCurRow >=
m_nKnownCount,
"position of last row < known Count, that could not be" );
1597 return nCurRow != 0;
1607 throw SQLException();
1609 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1621 throw SQLException();
1623 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1634 osl::ResettableMutexGuard aGuard(
m_aMutex);
1644 OSL_FAIL(
"broadcaster was disposed already" );
1665 osl::ResettableMutexGuard aGuard(
m_aMutex);
1677 OSL_FAIL(
"broadcaster was disposed already" );
1703 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1720 return xResultSetOrigin->isFirst();
1735 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1750 return xResultSetOrigin->isLast();
1763 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1828 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
1833 OSL_FAIL(
"broadcaster was disposed already" );
1844 return rowOriginGet<OUString>(&css::sdbc::XRow::getString, columnIndex);
1851 return rowOriginGet<sal_Bool>(&css::sdbc::XRow::getBoolean, columnIndex);
1858 return rowOriginGet<sal_Int8>(&css::sdbc::XRow::getByte, columnIndex);
1865 return rowOriginGet<sal_Int16>(&css::sdbc::XRow::getShort, columnIndex);
1872 return rowOriginGet<sal_Int32>(&css::sdbc::XRow::getInt, columnIndex);
1879 return rowOriginGet<sal_Int64>(&css::sdbc::XRow::getLong, columnIndex);
1886 return rowOriginGet<float>(&css::sdbc::XRow::getFloat, columnIndex);
1893 return rowOriginGet<double>(&css::sdbc::XRow::getDouble, columnIndex);
1900 return rowOriginGet< css::uno::Sequence<sal_Int8> >(
1901 &css::sdbc::XRow::getBytes, columnIndex);
1908 return rowOriginGet<css::util::Date>(
1909 &css::sdbc::XRow::getDate, columnIndex);
1916 return rowOriginGet<css::util::Time>(
1917 &css::sdbc::XRow::getTime, columnIndex);
1924 return rowOriginGet<css::util::DateTime>(
1925 &css::sdbc::XRow::getTimestamp, columnIndex);
1933 return rowOriginGet< css::uno::Reference<css::io::XInputStream> >(
1934 &css::sdbc::XRow::getBinaryStream, columnIndex);
1942 return rowOriginGet< css::uno::Reference<css::io::XInputStream> >(
1943 &css::sdbc::XRow::getCharacterStream, columnIndex);
1950 css::container::XNameAccess >& typeMap )
1955 osl::ResettableMutexGuard aGuard(
m_aMutex);
1961 bool isCleared =
false;
1966 OSL_FAIL(
"broadcaster was disposed already" );
1984 return m_xRowOrigin->getObject( columnIndex, typeMap );
1998 return rowOriginGet< css::uno::Reference<css::sdbc::XRef> >(
1999 &css::sdbc::XRow::getRef, columnIndex);
2006 return rowOriginGet< css::uno::Reference<css::sdbc::XBlob> >(
2007 &css::sdbc::XRow::getBlob, columnIndex);
2014 return rowOriginGet< css::uno::Reference<css::sdbc::XClob> >(
2015 &css::sdbc::XRow::getClob, columnIndex);
2022 return rowOriginGet< css::uno::Reference<css::sdbc::XArray> >(
2023 &css::sdbc::XRow::getArray, columnIndex);
2032 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
2040 "PropertyValueSet::getTypeConverter() - "
2041 "Service 'com.sun.star.script.Converter' n/a!" );
2063 return "com.sun.star.comp.ucb.CachedContentResultSetFactory";
2071 return {
"com.sun.star.ucb.CachedContentResultSetFactory" };
2078extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
2080 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
void impl_fetchData(sal_Int32 nRow, sal_Int32 nCount, sal_Int32 nFetchDirection)
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
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 OUString SAL_CALL queryContentIdentifierString() override
virtual sal_Bool SAL_CALL getBoolean(sal_Int32 columnIndex) override
virtual void impl_initPropertySetInfo() 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)
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 css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
bool impl_isKnownValidPosition(sal_Int32 nRow) const
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
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 impl_isKnownInvalidPosition(sal_Int32 nRow) const
bool m_bLastCachedReadWasNull
virtual sal_Bool SAL_CALL isAfterLast() override
const css::uno::Reference< css::script::XTypeConverter > & getTypeConverter()
sal_Int32 m_nFetchDirection
virtual OUString SAL_CALL getImplementationName() override
bool applyPositionToOrigin(sal_Int32 nRow)
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 void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
virtual css::uno::Reference< css::sdbc::XRef > SAL_CALL getRef(sal_Int32 columnIndex) override
void impl_changeIsRowCountFinal(bool bOld, bool bNew)
virtual sal_Bool SAL_CALL previous() override
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
void impl_changeRowCount(sal_Int32 nOld, sal_Int32 nNew)
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_init_xRowOrigin()
void impl_notifyVetoableChangeListeners(const css::beans::PropertyChangeEvent &rEvt)
css::uno::Reference< css::beans::XPropertySetInfo > m_xPropertySetInfo
! call impl_init_xPropertySetOrigin() bevor you access this member
virtual void impl_initPropertySetInfo()
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
css::uno::Reference< css::beans::XPropertySet > m_xPropertySetOrigin
! call impl_init_xContentAccessOrigin() bevor you access this member
void impl_init_xPropertySetOrigin()
css::uno::Reference< css::sdbc::XRow > m_xRowOrigin
void impl_EnsureNotDisposed()
bool impl_isForwardOnly()
void impl_notifyPropertyChangeListeners(const css::beans::PropertyChangeEvent &rEvt)
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()