diff options
author | Jan Holesovsky <kendy@suse.cz> | 2011-03-18 15:49:47 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2011-03-18 15:49:47 +0100 |
commit | 091e4aee3386f3bfee081dc8646494e0eb97f88a (patch) | |
tree | dd79298b4e8729ca7dc874274d4a33ea88fe107d /connectivity/source/commontools/DateConversion.cxx | |
parent | f0681adbf092e2b455db52535f2df882bc87343a (diff) | |
parent | 224bd63b3fa459baa0a6bb5cd03f5dc2ca475d82 (diff) |
Merge remote-tracking branch 'origin/integration/dev300_m101'
Conflicts:
avmedia/source/framework/mediacontrol.cxx
connectivity/source/commontools/DateConversion.cxx
desktop/source/deployment/registry/component/dp_component.cxx
editeng/inc/editeng/numitem.hxx
editeng/inc/editeng/txtrange.hxx
editeng/source/editeng/editobj.cxx
editeng/source/editeng/editview.cxx
editeng/source/editeng/eehtml.cxx
editeng/source/editeng/impedit3.cxx
editeng/source/editeng/impedit4.cxx
editeng/source/misc/txtrange.cxx
editeng/source/outliner/outlin2.cxx
editeng/source/outliner/outlvw.cxx
framework/source/layoutmanager/layoutmanager.cxx
linguistic/source/lngsvcmgr.hxx
sfx2/source/appl/app.cxx
sfx2/source/appl/app.src
sfx2/source/appl/appbas.cxx
sfx2/source/appl/appcfg.cxx
sfx2/source/appl/appdde.cxx
sfx2/source/appl/appmain.cxx
sfx2/source/appl/appopen.cxx
sfx2/source/appl/appquit.cxx
sfx2/source/appl/appserv.cxx
sfx2/source/appl/childwin.cxx
sfx2/source/appl/fileobj.cxx
sfx2/source/appl/fileobj.hxx
sfx2/source/appl/workwin.cxx
sfx2/source/control/dispatch.cxx
sfx2/source/control/macro.cxx
sfx2/source/control/objface.cxx
sfx2/source/control/request.cxx
sfx2/source/control/shell.cxx
sfx2/source/control/statcach.cxx
sfx2/source/dialog/dinfdlg.cxx
sfx2/source/dialog/dockwin.cxx
sfx2/source/dialog/mailmodel.cxx
sfx2/source/dialog/mailmodelapi.cxx
sfx2/source/dialog/mgetempl.cxx
sfx2/source/dialog/splitwin.cxx
sfx2/source/dialog/styledlg.cxx
sfx2/source/dialog/tabdlg.cxx
sfx2/source/dialog/templdlg.cxx
sfx2/source/dialog/tplcitem.cxx
sfx2/source/dialog/tplpitem.cxx
sfx2/source/doc/doctempl.cxx
sfx2/source/doc/docvor.cxx
sfx2/source/doc/new.cxx
sfx2/source/doc/objcont.cxx
sfx2/source/doc/objserv.cxx
sfx2/source/doc/objxtor.cxx
sfx2/source/inc/appdata.hxx
sfx2/source/inc/helpid.hrc
sfx2/source/inc/sfxlocal.hrc
sfx2/source/inc/statcach.hxx
sfx2/source/inc/templdgi.hxx
sfx2/source/inc/virtmenu.hxx
sfx2/source/inc/workwin.hxx
sfx2/source/menu/mnumgr.cxx
sfx2/source/menu/virtmenu.cxx
sfx2/source/statbar/stbitem.cxx
sfx2/source/view/frame.cxx
sfx2/source/view/frame2.cxx
sfx2/source/view/orgmgr.cxx
sfx2/source/view/printer.cxx
sfx2/source/view/prnmon.cxx
sfx2/source/view/sfxbasecontroller.cxx
sfx2/source/view/viewfrm.cxx
sfx2/source/view/viewfrm2.cxx
sfx2/source/view/viewprn.cxx
sfx2/source/view/viewsh.cxx
svx/inc/svx/svditer.hxx
svx/source/dialog/sdstring.src
svx/source/form/fmpage.cxx
svx/source/form/formcontroller.cxx
svx/source/svdraw/svdcrtv.cxx
svx/source/svdraw/svditer.cxx
svx/source/svdraw/svdview.cxx
xmloff/source/forms/elementimport.cxx
Diffstat (limited to 'connectivity/source/commontools/DateConversion.cxx')
-rwxr-xr-x[-rw-r--r--] | connectivity/source/commontools/DateConversion.cxx | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/connectivity/source/commontools/DateConversion.cxx b/connectivity/source/commontools/DateConversion.cxx index e02dd44c0e53..7170ee48a501 100644..100755 --- a/connectivity/source/commontools/DateConversion.cxx +++ b/connectivity/source/commontools/DateConversion.cxx @@ -44,6 +44,7 @@ #include "diagnose_ex.h" #include <comphelper/numbers.hxx> #include <rtl/ustrbuf.hxx> +#include <tools/diagnose_ex.h> using namespace ::connectivity; @@ -364,56 +365,59 @@ void DBTypeConversion::setValue(const Reference<XColumnUpdate>& xVariant, } //------------------------------------------------------------------------------ -double DBTypeConversion::getValue(const Reference<XColumn>& xVariant, - const Date& rNullDate, - sal_Int16 nKeyType) +double DBTypeConversion::getValue( const Reference< XColumn >& i_column, const Date& i_relativeToNullDate ) { try { - switch (nKeyType & ~NumberFormat::DEFINED) + const Reference< XPropertySet > xProp( i_column, UNO_QUERY_THROW ); + + const sal_Int32 nColumnType = ::comphelper::getINT32( xProp->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_TYPE ) ) ); + switch ( nColumnType ) { - case NumberFormat::DATE: - return toDouble( xVariant->getDate(), rNullDate); - case NumberFormat::DATETIME: - return toDouble(xVariant->getTimestamp(),rNullDate); - case NumberFormat::TIME: - return toDouble(xVariant->getTime()); - default: + case DataType::DATE: + return toDouble( i_column->getDate(), i_relativeToNullDate ); + + case DataType::TIME: + return toDouble( i_column->getTime() ); + + case DataType::TIMESTAMP: + return toDouble( i_column->getTimestamp(), i_relativeToNullDate ); + + default: { - Reference<XPropertySet> xProp(xVariant,UNO_QUERY); - if ( xProp.is() - && xProp->getPropertySetInfo()->hasPropertyByName(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSIGNED)) - && !::comphelper::getBOOL(xProp->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSIGNED))) ) + sal_Bool bIsSigned = sal_True; + OSL_VERIFY( xProp->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_ISSIGNED ) ) >>= bIsSigned ); + if ( !bIsSigned ) { - switch (::comphelper::getINT32(xProp->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)))) + switch ( nColumnType) { case DataType::TINYINT: - return static_cast<double>(static_cast<sal_uInt8>(xVariant->getByte())); + return static_cast<double>(static_cast<sal_uInt8>(i_column->getByte())); case DataType::SMALLINT: - return static_cast<double>(static_cast<sal_uInt16>(xVariant->getShort())); + return static_cast<double>(static_cast<sal_uInt16>(i_column->getShort())); case DataType::INTEGER: - return static_cast<double>(static_cast<sal_uInt32>(xVariant->getInt())); + return static_cast<double>(static_cast<sal_uInt32>(i_column->getInt())); case DataType::BIGINT: - return static_cast<double>(static_cast<sal_uInt64>(xVariant->getLong())); + return static_cast<double>(static_cast<sal_uInt64>(i_column->getLong())); } } - - return xVariant->getDouble(); } + return i_column->getDouble(); } } - catch(const Exception& ) + catch( const Exception& ) { + DBG_UNHANDLED_EXCEPTION(); return 0.0; } } //------------------------------------------------------------------------------ -::rtl::OUString DBTypeConversion::getValue(const Reference< XPropertySet>& _xColumn, +::rtl::OUString DBTypeConversion::getFormattedValue(const Reference< XPropertySet>& _xColumn, const Reference<XNumberFormatter>& _xFormatter, const ::com::sun::star::lang::Locale& _rLocale, const Date& _rNullDate) { - OSL_ENSURE(_xColumn.is() && _xFormatter.is(), "DBTypeConversion::getValue: invalid arg !"); + OSL_ENSURE(_xColumn.is() && _xFormatter.is(), "DBTypeConversion::getFormattedValue: invalid arg !"); if (!_xColumn.is() || !_xFormatter.is()) return ::rtl::OUString(); @@ -440,11 +444,11 @@ double DBTypeConversion::getValue(const Reference<XColumn>& xVariant, sal_Int16 nKeyType = getNumberFormatType(_xFormatter, nKey) & ~NumberFormat::DEFINED; - return DBTypeConversion::getValue(Reference< XColumn > (_xColumn, UNO_QUERY), _xFormatter, _rNullDate, nKey, nKeyType); + return DBTypeConversion::getFormattedValue(Reference< XColumn > (_xColumn, UNO_QUERY), _xFormatter, _rNullDate, nKey, nKeyType); } //------------------------------------------------------------------------------ -::rtl::OUString DBTypeConversion::getValue(const Reference<XColumn>& xVariant, +::rtl::OUString DBTypeConversion::getFormattedValue(const Reference<XColumn>& xVariant, const Reference<XNumberFormatter>& xFormatter, const Date& rNullDate, sal_Int32 nKey, @@ -461,23 +465,20 @@ double DBTypeConversion::getValue(const Reference<XColumn>& xVariant, case NumberFormat::DATETIME: { // get a value which represents the given date, relative to the given null date - double fValue = getValue(xVariant, rNullDate, nKeyType); + double fValue = getValue( xVariant, rNullDate ); if ( !xVariant->wasNull() ) { // get the null date of the formatter Date aFormatterNullDate( rNullDate ); try { - Reference< XPropertySet > xFormatterSettings; - Reference< XNumberFormatsSupplier > xSupplier( xFormatter->getNumberFormatsSupplier( ) ); - if ( xSupplier.is() ) - xFormatterSettings = xSupplier->getNumberFormatSettings(); - if ( xFormatterSettings.is() ) - xFormatterSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NullDate" ) ) ) >>= aFormatterNullDate; + Reference< XNumberFormatsSupplier > xSupplier( xFormatter->getNumberFormatsSupplier(), UNO_SET_THROW ); + Reference< XPropertySet > xFormatterSettings( xSupplier->getNumberFormatSettings(), UNO_SET_THROW ); + OSL_VERIFY( xFormatterSettings->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NullDate" ) ) ) >>= aFormatterNullDate ); } catch( const Exception& ) { - OSL_ENSURE( sal_False, "DBTypeConversion::getValue: caught an exception while retrieving the formatter's NullDate!" ); + DBG_UNHANDLED_EXCEPTION(); } // get a value which represents the given date, relative to the null date of the formatter fValue -= toDays( rNullDate, aFormatterNullDate ); |