diff options
Diffstat (limited to 'dbaccess/source/ui/misc/DExport.cxx')
-rw-r--r-- | dbaccess/source/ui/misc/DExport.cxx | 85 |
1 files changed, 38 insertions, 47 deletions
diff --git a/dbaccess/source/ui/misc/DExport.cxx b/dbaccess/source/ui/misc/DExport.cxx index dc71f6588828..f533c719160e 100644 --- a/dbaccess/source/ui/misc/DExport.cxx +++ b/dbaccess/source/ui/misc/DExport.cxx @@ -66,6 +66,7 @@ #include "WExtendPages.hxx" #include "WCPage.hxx" #include <svtools/syslocale.hxx> +#include <svtools/zforlist.hxx> #include <connectivity/dbexception.hxx> #include <connectivity/FValue.hxx> #include <com/sun/star/sdbc/SQLWarning.hpp> @@ -234,7 +235,7 @@ ODatabaseExport::ODatabaseExport(const SharedConnection& _rxConnection, sal_Int32 nType = aValue; ++nPos; - if( nType == DataType::VARCHAR) + if( nType == DataType::VARCHAR ) { m_pTypeInfo = TOTypeInfoSP(new OTypeInfo()); @@ -291,7 +292,9 @@ ODatabaseExport::ODatabaseExport(const SharedConnection& _rxConnection, break; } } - } + } // if(xSet.is()) + if ( !m_pTypeInfo ) + m_pTypeInfo = TOTypeInfoSP(new OTypeInfo()); SetColumnTypes(pList,_pInfoMap); } //--------------------------------------------------------------------------- @@ -342,19 +345,25 @@ void ODatabaseExport::insertValueIntoColumn() bool bNumberFormatError = false; if ( m_pFormatter && m_sNumToken.Len() ) { - LanguageType eNumLang; - sal_uInt32 nNumberFormat2; + LanguageType eNumLang = LANGUAGE_NONE; + sal_uInt32 nNumberFormat2( nNumberFormat ); fOutNumber = SfxHTMLParser::GetTableDataOptionsValNum(nNumberFormat2,eNumLang,m_sTextToken,m_sNumToken,*m_pFormatter); + if ( eNumLang != LANGUAGE_NONE ) + { + nNumberFormat2 = m_pFormatter->GetFormatForLanguageIfBuiltIn( nNumberFormat2, eNumLang ); + m_pFormatter->IsNumberFormat( m_sTextToken, nNumberFormat2, fOutNumber ); + } nNumberFormat = static_cast<sal_Int32>(nNumberFormat2); } else { Reference< XNumberFormatsSupplier > xSupplier = m_xFormatter->getNumberFormatsSupplier(); Reference<XNumberFormatTypes> xNumType(xSupplier->getNumberFormats(),UNO_QUERY); - sal_Int16 nFormats[] = { NumberFormat::DATETIME - ,NumberFormat::DATETIME + sal_Int16 nFormats[] = { + NumberFormat::DATETIME ,NumberFormat::DATE ,NumberFormat::TIME + ,NumberFormat::CURRENCY ,NumberFormat::NUMBER ,NumberFormat::LOGICAL }; @@ -391,13 +400,17 @@ void ODatabaseExport::insertValueIntoColumn() switch(nType) { case NumberFormat::DATE: + m_pUpdateHelper->updateDate(nPos,::dbtools::DBTypeConversion::toDate(fOutNumber,m_aNullDate)); + break; case NumberFormat::DATETIME: - fOutNumber = ::dbtools::DBTypeConversion::toStandardDbDate(m_aNullDate,fOutNumber); + m_pUpdateHelper->updateTimestamp(nPos,::dbtools::DBTypeConversion::toDateTime(fOutNumber,m_aNullDate)); + break; + case NumberFormat::TIME: + m_pUpdateHelper->updateTime(nPos,::dbtools::DBTypeConversion::toTime(fOutNumber)); break; default: - ; + m_pUpdateHelper->updateDouble(nPos,fOutNumber); } - m_pUpdateHelper->updateDouble(nPos,fOutNumber);//::dbtools::DBTypeConversion::getStandardDate() } catch(Exception&) { @@ -432,10 +445,15 @@ sal_Int16 ODatabaseExport::CheckString(const String& aCheckToken, sal_Int16 _nOl if ( m_pFormatter && m_sNumToken.Len() ) { LanguageType eNumLang; - sal_uInt32 nNumberFormat2; - fOutNumber = SfxHTMLParser::GetTableDataOptionsValNum(nNumberFormat2,eNumLang,m_sTextToken,m_sNumToken,*m_pFormatter); - //double fOutNumber2 = SfxHTMLParser::GetTableDataOptionsValNum(nNumberFormat2,eNumLang,m_sValToken,m_sNumToken,*m_pFormatter); - nNumberFormat = static_cast<sal_Int16>(nNumberFormat2); + sal_uInt32 nFormatKey(0); + fOutNumber = SfxHTMLParser::GetTableDataOptionsValNum(nFormatKey,eNumLang,m_sTextToken,m_sNumToken,*m_pFormatter); + if ( eNumLang != LANGUAGE_NONE ) + { + nFormatKey = m_pFormatter->GetFormatForLanguageIfBuiltIn( nFormatKey, eNumLang ); + m_pFormatter->IsNumberFormat( m_sTextToken, nFormatKey, fOutNumber ); + } + Reference<XPropertySet> xProp = xFormats->getByKey(nFormatKey); + xProp->getPropertyValue(PROPERTY_TYPE) >>= nNumberFormat; } else { @@ -559,17 +577,16 @@ void ODatabaseExport::SetColumnTypes(const TColumnVector* _pList,const OTypeInfo DBG_CHKTHIS(ODatabaseExport,NULL); if(_pList && _pInfoMap) { + OSL_ENSURE(m_vNumberFormat.size() == m_vColumnSize.size() && m_vColumnSize.size() == _pList->size(),"Illegal columns in list"); Reference< XNumberFormatsSupplier > xSupplier = m_xFormatter->getNumberFormatsSupplier(); Reference< XNumberFormats > xFormats = xSupplier->getNumberFormats(); TColumnVector::const_iterator aIter = _pList->begin(); TColumnVector::const_iterator aEnd = _pList->end(); - for(sal_Int32 i= 0;aIter != aEnd;++aIter,++i) + for(sal_Int32 i= 0;aIter != aEnd && (i) < static_cast<sal_Int32>(m_vNumberFormat.size()) && (i) < static_cast<sal_Int32>(m_vColumnSize.size()) ;++aIter,++i) { sal_Int32 nDataType; sal_Int32 nLength(0),nScale(0); - OSL_ENSURE((i) < static_cast<sal_Int32>(m_vNumberFormat.size()),"m_vFormatKey: Illegal index for vector"); - OSL_ENSURE((i) < static_cast<sal_Int32>(m_vColumnSize.size()),"m_vColumnSize: Illegal index for vector"); - sal_Int16 nType = m_vNumberFormat[i]; + sal_Int16 nType = m_vNumberFormat[i] & ~NumberFormat::DEFINED; switch ( nType ) { @@ -684,35 +701,7 @@ sal_Bool ODatabaseExport::createRowSet() { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "misc", "Ocke.Janssen@sun.com", "ODatabaseExport::createRowSet" ); DBG_CHKTHIS(ODatabaseExport,NULL); - //Reference<XResultSet> xDestSet(m_xFactory->createInstance(::rtl::OUString::createFromAscii("com.sun.star.sdb.RowSet")),UNO_QUERY); - //Reference<XPropertySet > xProp(xDestSet,UNO_QUERY); - //if(xProp.is()) - //{ - // ::rtl::OUString sDestName = ::dbtools::composeTableName( - // m_xConnection->getMetaData(), m_xTable, ::dbtools::eInDataManipulation, false, false, false ); - - // xProp->setPropertyValue(PROPERTY_ACTIVE_CONNECTION,makeAny(m_xConnection.getTyped())); - // xProp->setPropertyValue(PROPERTY_COMMAND_TYPE,makeAny(CommandType::TABLE)); - // xProp->setPropertyValue(PROPERTY_COMMAND,makeAny(sDestName)); - // xProp->setPropertyValue(PROPERTY_IGNORERESULT,::cppu::bool2any(sal_True)); - // xProp->setPropertyValue(PROPERTY_FETCHSIZE,sal_Int32(1)); - // Reference<XRowSet> xRowSet(xProp,UNO_QUERY); - // xRowSet->execute(); - - // Reference< XResultSetMetaDataSupplier> xSrcMetaSup(xRowSet,UNO_QUERY_THROW); - // m_xResultSetMetaData = xSrcMetaSup->getMetaData(); - - // if ( ::dbtools::canInsert(xProp) ) - // { - // m_pUpdateHelper.reset(new ORowUpdateHelper(xRowSet)); - // OSL_ENSURE(m_xResultSetMetaData.is(),"No ResultSetMetaData!"); - // TPositions::iterator aIter = m_vColumns.begin(); - // for (;aIter != m_vColumns.end() ; ++aIter) - // aIter->first = aIter->second; - // } - // else - m_pUpdateHelper.reset(new OParameterUpdateHelper(createPreparedStatment(m_xConnection->getMetaData(),m_xTable,m_vColumns))); - //} + m_pUpdateHelper.reset(new OParameterUpdateHelper(createPreparedStatment(m_xConnection->getMetaData(),m_xTable,m_vColumns))); return m_pUpdateHelper.get() != NULL; } @@ -758,6 +747,7 @@ sal_Bool ODatabaseExport::executeWizard(const ::rtl::OUString& _rTableName,const m_bIsAutoIncrement = aWizard.shouldCreatePrimaryKey(); m_vColumns = aWizard.GetColumnPositions(); m_vColumnTypes = aWizard.GetColumnTypes(); + m_bAppendFirstLine = !aWizard.UseHeaderLine(); } break; default: @@ -889,7 +879,8 @@ Reference< XPreparedStatement > ODatabaseExport::createPreparedStatment( const R i = 1; // create the sql string - for (::std::vector< ::rtl::OUString>::iterator aInsertIter = aInsertList.begin(); aInsertIter != aInsertList.end(); ++aInsertIter) + ::std::vector< ::rtl::OUString>::iterator aInsertEnd = aInsertList.end(); + for (::std::vector< ::rtl::OUString>::iterator aInsertIter = aInsertList.begin(); aInsertIter != aInsertEnd; ++aInsertIter) { if ( aInsertIter->getLength() ) { |