2010-10-27 12:33:13 +01:00
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2012-06-14 17:39:53 +01:00
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2.0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2.0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
2013-11-05 02:18:53 +01:00
# ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_DEXPORT_HXX
# define INCLUDED_DBACCESS_SOURCE_UI_INC_DEXPORT_HXX
2001-02-16 14:54:09 +00:00
# include <com/sun/star/sdbc/XResultSet.hpp>
# include <com/sun/star/sdbc/XResultSetMetaData.hpp>
# include <com/sun/star/beans/XPropertySet.hpp>
# include <com/sun/star/util/XNumberFormatter.hpp>
# include <com/sun/star/container/XNameAccess.hpp>
# include <com/sun/star/container/XIndexAccess.hpp>
# include <com/sun/star/lang/Locale.hpp>
2001-02-23 14:02:06 +00:00
# include <com/sun/star/lang/XMultiServiceFactory.hpp>
2009-04-23 10:42:05 +00:00
# include <com/sun/star/util/Date.hpp>
2014-01-02 23:52:37 +01:00
# include <com/sun/star/uno/XComponentContext.hpp>
2013-12-06 10:17:37 +01:00
# include <map>
2001-02-16 14:54:09 +00:00
# include <vector>
2001-02-23 14:02:06 +00:00
# include <comphelper/stl_types.hxx>
# include "TypeInfo.hxx"
2008-01-30 07:46:24 +00:00
# include "WTypeSelect.hxx"
2005-09-23 11:32:45 +00:00
# include "commontypes.hxx"
2006-04-19 12:20:32 +00:00
# include "IUpdateHelper.hxx"
2001-02-16 14:54:09 +00:00
2006-04-19 12:20:32 +00:00
namespace com { namespace sun { namespace star {
namespace awt {
struct FontDescriptor ;
}
namespace sdbc {
class XPreparedStatement ;
class XDatabaseMetaData ;
}
} } }
2002-01-22 06:22:37 +00:00
2006-06-20 02:11:09 +00:00
# define COLUMN_POSITION_NOT_FOUND ((sal_Int32)-1)
2006-05-04 07:42:41 +00:00
class SvNumberFormatter ;
2001-02-16 14:54:09 +00:00
namespace dbaui
{
2001-02-23 14:02:06 +00:00
class OFieldDescription ;
2001-02-16 14:54:09 +00:00
class ODatabaseExport
{
2001-02-23 14:02:06 +00:00
public :
2013-12-06 10:17:37 +01:00
typedef std : : map < OUString , OFieldDescription * , : : comphelper : : UStringMixLess > TColumns ;
2002-05-23 10:10:43 +00:00
typedef : : std : : vector < TColumns : : const_iterator > TColumnVector ;
typedef : : std : : vector < : : std : : pair < sal_Int32 , sal_Int32 > > TPositions ;
2008-01-30 07:46:24 +00:00
2001-02-16 14:54:09 +00:00
protected :
2012-08-12 18:22:40 +02:00
TPositions m_vColumns ; ///< columns to be used
: : std : : vector < sal_Int32 > m_vColumnTypes ; ///< ColumnTypes for faster access
2001-02-23 14:02:06 +00:00
: : std : : vector < sal_Int32 > m_vColumnSize ;
2007-11-21 14:59:12 +00:00
: : std : : vector < sal_Int16 > m_vNumberFormat ;
2006-06-20 02:11:09 +00:00
: : com : : sun : : star : : lang : : Locale m_aLocale ;
2001-02-16 14:54:09 +00:00
2012-08-12 18:22:40 +02:00
TColumns m_aDestColumns ; ///< container for new created columns
2006-06-20 02:11:09 +00:00
TColumnVector m_vDestVector ;
2001-02-23 14:02:06 +00:00
2012-08-12 18:22:40 +02:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : beans : : XPropertySet > m_xTable ; ///< dest table
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : container : : XNameAccess > m_xTables ; ///< container
SharedConnection m_xConnection ; ///< dest conn
2001-02-16 14:54:09 +00:00
2006-04-19 12:20:32 +00:00
: : boost : : shared_ptr < IUpdateHelper > m_pUpdateHelper ;
2012-08-12 18:22:40 +02:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : sdbc : : XResultSet > m_xResultSet ;
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : util : : XNumberFormatter > m_xFormatter ; ///< a number formatter working with the connection's NumberFormatsSupplier
2012-12-06 14:15:55 +02:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : uno : : XComponentContext > m_xContext ;
2009-04-23 10:42:05 +00:00
: : com : : sun : : star : : util : : Date m_aNullDate ;
2001-02-16 14:54:09 +00:00
2006-05-04 07:42:41 +00:00
SvNumberFormatter * m_pFormatter ;
2008-01-30 07:46:24 +00:00
SvStream & m_rInputStream ;
2012-08-12 18:22:40 +02:00
/// for saving the selected tablename
2013-04-07 12:06:47 +02:00
OUString m_sDefaultTableName ;
2011-02-27 22:55:22 +01:00
2013-09-26 12:17:53 +02:00
OUString m_sTextToken ; ///< cell content
OUString m_sNumToken ; ///< SDNUM value
OUString m_sValToken ; ///< SDVAL value
2012-08-12 18:22:40 +02:00
TOTypeInfoSP m_pTypeInfo ; ///< contains the default type
2006-01-19 14:42:16 +00:00
const TColumnVector * m_pColumnList ;
const OTypeInfoMap * m_pInfoMap ;
2012-08-12 18:22:40 +02:00
sal_Int32 m_nColumnPos ; ///< current column position
sal_Int32 m_nRows ; ///< number of rows to be searched
sal_Int32 m_nRowCount ; ///< current count of rows
rtl_TextEncoding m_nDefToken ; ///< language
sal_Bool m_bError ; ///< error and termination code
sal_Bool m_bInTbl ; ///< true, if parser is in RTF table
sal_Bool m_bHead ; ///< true, if the header hasn't been read yet
sal_Bool m_bDontAskAgain ; ///< if there is an error when pasting, don't show it again
sal_Bool m_bIsAutoIncrement ; ///< if PKey is set by user
sal_Bool m_bFoundTable ; ///< set to true when a table was found
2002-05-28 07:08:11 +00:00
sal_Bool m_bCheckOnly ;
2007-11-21 14:59:12 +00:00
bool m_bAppendFirstLine ;
2001-02-16 14:54:09 +00:00
2012-08-12 18:45:53 +02:00
virtual sal_Bool CreateTable ( int nToken ) = 0 ;
2008-01-30 07:46:24 +00:00
virtual TypeSelectionPageFactory
2012-08-12 18:45:53 +02:00
getTypeSelectionPageFactory ( ) = 0 ;
2002-01-22 06:22:37 +00:00
2013-04-07 12:06:47 +02:00
void CreateDefaultColumn ( const OUString & _rColumnName ) ;
2013-09-26 12:17:53 +02:00
sal_Int16 CheckString ( const OUString & aToken , sal_Int16 _nOldNumberFormat ) ;
2012-08-12 18:45:53 +02:00
void adjustFormat ( ) ;
void eraseTokens ( ) ;
void insertValueIntoColumn ( ) ;
sal_Bool createRowSet ( ) ;
void showErrorDialog ( const : : com : : sun : : star : : sdbc : : SQLException & e ) ;
void ensureFormatter ( ) ;
2002-01-22 06:22:37 +00:00
/** executeWizard calls a wizard to create/append data
2012-08-12 18:22:40 +02:00
2002-01-22 06:22:37 +00:00
@ param _sTableName the tablename
@ param _aTextColor the text color of the new created table
@ param _rFont the font of the new table
@ return true when an error occurs
*/
2013-04-07 12:06:47 +02:00
sal_Bool executeWizard ( const OUString & _sTableName ,
2012-08-12 18:45:53 +02:00
const : : com : : sun : : star : : uno : : Any & _aTextColor ,
const : : com : : sun : : star : : awt : : FontDescriptor & _rFont ) ;
2001-02-16 14:54:09 +00:00
virtual ~ ODatabaseExport ( ) ;
2012-08-12 18:38:58 +02:00
2001-02-16 14:54:09 +00:00
public :
2008-01-30 07:46:24 +00:00
ODatabaseExport (
const SharedConnection & _rxConnection ,
const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : util : : XNumberFormatter > & _rxNumberF ,
2012-12-06 14:15:55 +02:00
const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : uno : : XComponentContext > & _rxContext ,
2008-01-30 07:46:24 +00:00
const TColumnVector * rList ,
const OTypeInfoMap * _pInfoMap ,
SvStream & _rInputStream
) ;
2012-08-10 21:24:32 +02:00
// required for automatic type recognition
2008-01-30 07:46:24 +00:00
ODatabaseExport (
sal_Int32 nRows ,
const TPositions & _rColumnPositions ,
const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : util : : XNumberFormatter > & _rxNumberF ,
2012-12-06 14:15:55 +02:00
const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : uno : : XComponentContext > & _rxContext ,
2008-01-30 07:46:24 +00:00
const TColumnVector * rList ,
const OTypeInfoMap * _pInfoMap ,
sal_Bool _bAutoIncrementEnabled ,
SvStream & _rInputStream
) ;
2001-02-16 14:54:09 +00:00
2012-08-12 18:48:35 +02:00
void SetColumnTypes ( const TColumnVector * rList , const OTypeInfoMap * _pInfoMap ) ;
2007-09-26 13:49:39 +00:00
2013-04-07 12:06:47 +02:00
inline void SetTableName ( const OUString & _sTableName ) { m_sDefaultTableName = _sTableName ; }
2007-09-26 13:49:39 +00:00
2001-11-23 13:51:40 +00:00
virtual void release ( ) = 0 ;
2002-05-28 07:08:11 +00:00
void enableCheckOnly ( ) { m_bCheckOnly = sal_True ; }
sal_Bool isCheckEnabled ( ) const { return m_bCheckOnly ; }
2006-04-19 12:20:32 +00:00
static : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : sdbc : : XPreparedStatement > createPreparedStatment ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : sdbc : : XDatabaseMetaData > & _xMetaData
, const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : beans : : XPropertySet > & _xDestTable
, const TPositions & _rvColumns ) ;
2001-02-16 14:54:09 +00:00
} ;
}
2012-08-12 18:38:58 +02:00
# endif
2001-02-16 14:54:09 +00:00
2010-10-27 12:33:13 +01:00
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */