20#include <osl/diagnose.h>
21#include <com/sun/star/beans/Property.hpp>
22#include <com/sun/star/beans/XPropertySetInfo.hpp>
23#include <com/sun/star/io/XInputStream.hpp>
24#include <com/sun/star/sdbc/ColumnValue.hpp>
25#include <com/sun/star/sdbc/DataType.hpp>
26#include <com/sun/star/sdbc/XArray.hpp>
27#include <com/sun/star/sdbc/XBlob.hpp>
28#include <com/sun/star/sdbc/XClob.hpp>
29#include <com/sun/star/sdbc/XRef.hpp>
30#include <com/sun/star/util/Date.hpp>
31#include <com/sun/star/util/Time.hpp>
32#include <com/sun/star/util/DateTime.hpp>
33#include <com/sun/star/ucb/PropertiesManager.hpp>
58 std::vector< ::ucbhelper::ResultSetColumnData >&& rColumnData )
82ResultSetMetaData::ResultSetMetaData(
85 std::vector< ResultSetColumnData >&& rColumnData )
90 OSL_ENSURE(
m_pImpl->m_aColumnData.size() == sal_uInt32( rProps.getLength() ),
91 "ResultSetMetaData ctor - different array sizes!" );
96ResultSetMetaData::~ResultSetMetaData()
105sal_Int32 SAL_CALL ResultSetMetaData::getColumnCount()
112sal_Bool SAL_CALL ResultSetMetaData::isAutoIncrement( sal_Int32 )
123sal_Bool SAL_CALL ResultSetMetaData::isCaseSensitive( sal_Int32 column )
125 if ( ( column < 1 ) || ( column >
m_aProps.getLength() ) )
128 return m_pImpl->m_aColumnData[ column - 1 ].isCaseSensitive;
133sal_Bool SAL_CALL ResultSetMetaData::isSearchable( sal_Int32 )
140sal_Bool SAL_CALL ResultSetMetaData::isCurrency( sal_Int32 )
147sal_Int32 SAL_CALL ResultSetMetaData::isNullable( sal_Int32 )
149 return ColumnValue::NULLABLE;
154sal_Bool SAL_CALL ResultSetMetaData::isSigned( sal_Int32 )
161sal_Int32 SAL_CALL ResultSetMetaData::getColumnDisplaySize( sal_Int32 )
171OUString SAL_CALL ResultSetMetaData::getColumnLabel( sal_Int32 column )
178 if ( ( column < 1 ) || ( column >
m_aProps.getLength() ) )
181 return m_aProps.getConstArray()[ column - 1 ].Name;
186OUString SAL_CALL ResultSetMetaData::getColumnName( sal_Int32 column )
192 if ( ( column < 1 ) || ( column >
m_aProps.getLength() ) )
195 return m_aProps.getConstArray()[ column - 1 ].Name;
200OUString SAL_CALL ResultSetMetaData::getSchemaName( sal_Int32 )
213sal_Int32 SAL_CALL ResultSetMetaData::getPrecision( sal_Int32 )
220sal_Int32 SAL_CALL ResultSetMetaData::getScale( sal_Int32 )
227OUString SAL_CALL ResultSetMetaData::getTableName( sal_Int32 )
240OUString SAL_CALL ResultSetMetaData::getCatalogName( sal_Int32 )
253sal_Int32 SAL_CALL ResultSetMetaData::getColumnType( sal_Int32 column )
262 if ( ( column < 1 ) || ( column >
m_aProps.getLength() ) )
263 return DataType::SQLNULL;
265 if (
m_aProps.getConstArray()[ column - 1 ].Type
270 std::unique_lock aGuard(
m_pImpl->m_aMutex );
272 if ( !
m_pImpl->m_bObtainedTypes )
283 auto pProp = std::find_if(aProps.begin(), aProps.end(),
284 [&rProp](
const Property& rProp1) { return rProp.Name == rProp1.Name; });
285 if (pProp != aProps.end())
288 rProp.Type = pProp->Type;
301 m_pImpl->m_bObtainedTypes =
true;
305 const Type& rType =
m_aProps.getConstArray()[ column - 1 ].Type;
306 sal_Int32
nType = DataType::OTHER;
309 nType = DataType::VARCHAR;
311 nType = DataType::BIT;
313 nType = DataType::INTEGER;
315 nType = DataType::BIGINT;
317 nType = DataType::SMALLINT;
319 nType = DataType::TINYINT;
321 nType = DataType::REAL;
323 nType = DataType::DOUBLE;
325 nType = DataType::VARBINARY;
327 nType = DataType::DATE;
329 nType = DataType::TIME;
331 nType = DataType::TIMESTAMP;
333 nType = DataType::LONGVARBINARY;
336 nType = DataType::CLOB;
338 nType = DataType::BLOB;
340 nType = DataType::ARRAY;
342 nType = DataType::REF;
344 nType = DataType::OBJECT;
351OUString SAL_CALL ResultSetMetaData::getColumnTypeName( sal_Int32 )
364sal_Bool SAL_CALL ResultSetMetaData::isReadOnly( sal_Int32 )
371sal_Bool SAL_CALL ResultSetMetaData::isWritable( sal_Int32 )
378sal_Bool SAL_CALL ResultSetMetaData::isDefinitelyWritable( sal_Int32 )
385OUString SAL_CALL ResultSetMetaData::getColumnServiceName( sal_Int32 )
Reference< XComponentContext > m_xContext
double getLength(const B2DPolygon &rCandidate)
uno::Sequence< beans::Property > m_aProps