1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef DBUI_TABLECOPYHELPER_HXX 24*b1cdbd2cSJim Jagielski #define DBUI_TABLECOPYHELPER_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #ifndef DBAUI_APPELEMENTTYPE_HXX 27*b1cdbd2cSJim Jagielski #include "AppElementType.hxx" 28*b1cdbd2cSJim Jagielski #endif 29*b1cdbd2cSJim Jagielski #ifndef _DBAUI_COMMON_TYPES_HXX_ 30*b1cdbd2cSJim Jagielski #include "commontypes.hxx" 31*b1cdbd2cSJim Jagielski #endif 32*b1cdbd2cSJim Jagielski #ifndef _SVX_DATACCESSDESCRIPTOR_HXX_ 33*b1cdbd2cSJim Jagielski #include <svx/dataaccessdescriptor.hxx> 34*b1cdbd2cSJim Jagielski #endif 35*b1cdbd2cSJim Jagielski #ifndef _SOT_STORAGE_HXX 36*b1cdbd2cSJim Jagielski #include <sot/storage.hxx> 37*b1cdbd2cSJim Jagielski #endif 38*b1cdbd2cSJim Jagielski #ifndef _TRANSFER_HXX 39*b1cdbd2cSJim Jagielski #include <svtools/transfer.hxx> 40*b1cdbd2cSJim Jagielski #endif 41*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_ 42*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XConnection.hpp> 43*b1cdbd2cSJim Jagielski #endif 44*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBC_XRESULTSET_HPP_ 45*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XResultSet.hpp> 46*b1cdbd2cSJim Jagielski #endif 47*b1cdbd2cSJim Jagielski #include <functional> 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski class SvLBoxEntry; 50*b1cdbd2cSJim Jagielski //........................................................................ 51*b1cdbd2cSJim Jagielski namespace dbaui 52*b1cdbd2cSJim Jagielski { 53*b1cdbd2cSJim Jagielski //........................................................................ 54*b1cdbd2cSJim Jagielski class OGenericUnoController; 55*b1cdbd2cSJim Jagielski /// unary_function Functor object for class DataFlavorExVector::value_type returntype is bool 56*b1cdbd2cSJim Jagielski struct TAppSupportedSotFunctor : ::std::unary_function<DataFlavorExVector::value_type,bool> 57*b1cdbd2cSJim Jagielski { 58*b1cdbd2cSJim Jagielski ElementType eEntryType; 59*b1cdbd2cSJim Jagielski sal_Bool bQueryDrop; TAppSupportedSotFunctordbaui::TAppSupportedSotFunctor60*b1cdbd2cSJim Jagielski TAppSupportedSotFunctor(const ElementType& _eEntryType,sal_Bool _bQueryDrop) 61*b1cdbd2cSJim Jagielski : eEntryType(_eEntryType) 62*b1cdbd2cSJim Jagielski , bQueryDrop(_bQueryDrop) 63*b1cdbd2cSJim Jagielski { 64*b1cdbd2cSJim Jagielski } 65*b1cdbd2cSJim Jagielski operator ()dbaui::TAppSupportedSotFunctor66*b1cdbd2cSJim Jagielski inline bool operator()(const DataFlavorExVector::value_type& _aType) 67*b1cdbd2cSJim Jagielski { 68*b1cdbd2cSJim Jagielski switch (_aType.mnSotId) 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski case SOT_FORMAT_RTF: // RTF data descriptions 71*b1cdbd2cSJim Jagielski case SOT_FORMATSTR_ID_HTML: // HTML data descriptions 72*b1cdbd2cSJim Jagielski case SOT_FORMATSTR_ID_DBACCESS_TABLE: // table descriptor 73*b1cdbd2cSJim Jagielski return (E_TABLE == eEntryType); 74*b1cdbd2cSJim Jagielski case SOT_FORMATSTR_ID_DBACCESS_QUERY: // query descriptor 75*b1cdbd2cSJim Jagielski case SOT_FORMATSTR_ID_DBACCESS_COMMAND: // SQL command 76*b1cdbd2cSJim Jagielski return ((E_QUERY == eEntryType) || ( !bQueryDrop && E_TABLE == eEntryType)); 77*b1cdbd2cSJim Jagielski } 78*b1cdbd2cSJim Jagielski return false; 79*b1cdbd2cSJim Jagielski } 80*b1cdbd2cSJim Jagielski }; 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski class OTableCopyHelper 83*b1cdbd2cSJim Jagielski { 84*b1cdbd2cSJim Jagielski private: 85*b1cdbd2cSJim Jagielski OGenericUnoController* m_pController; 86*b1cdbd2cSJim Jagielski ::rtl::OUString m_sTableNameForAppend; 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski public: 89*b1cdbd2cSJim Jagielski // is needed to describe the drop target 90*b1cdbd2cSJim Jagielski struct DropDescriptor 91*b1cdbd2cSJim Jagielski { 92*b1cdbd2cSJim Jagielski ::svx::ODataAccessDescriptor aDroppedData; 93*b1cdbd2cSJim Jagielski //dyf add 20070601 94*b1cdbd2cSJim Jagielski //for transfor the tablename 95*b1cdbd2cSJim Jagielski ::rtl::OUString sDefaultTableName; 96*b1cdbd2cSJim Jagielski //dyf add end 97*b1cdbd2cSJim Jagielski String aUrl; 98*b1cdbd2cSJim Jagielski SotStorageStreamRef aHtmlRtfStorage; 99*b1cdbd2cSJim Jagielski ElementType nType; 100*b1cdbd2cSJim Jagielski SvLBoxEntry* pDroppedAt; 101*b1cdbd2cSJim Jagielski sal_Int8 nAction; 102*b1cdbd2cSJim Jagielski sal_Bool bHtml; 103*b1cdbd2cSJim Jagielski sal_Bool bError; 104*b1cdbd2cSJim Jagielski DropDescriptordbaui::OTableCopyHelper::DropDescriptor105*b1cdbd2cSJim Jagielski DropDescriptor() : nType(E_TABLE),pDroppedAt(NULL),nAction(DND_ACTION_NONE) { } 106*b1cdbd2cSJim Jagielski }; 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski OTableCopyHelper(OGenericUnoController* _pControler); 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski /** pastes a table into the data source 111*b1cdbd2cSJim Jagielski @param _rPasteData 112*b1cdbd2cSJim Jagielski The data helper. 113*b1cdbd2cSJim Jagielski @param _sDestDataSourceName 114*b1cdbd2cSJim Jagielski The name of the dest data source. 115*b1cdbd2cSJim Jagielski */ 116*b1cdbd2cSJim Jagielski void pasteTable( const TransferableDataHelper& _rTransData 117*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _sDestDataSourceName 118*b1cdbd2cSJim Jagielski ,const SharedConnection& _xConnection); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski /** pastes a table into the data source 121*b1cdbd2cSJim Jagielski @param _nFormatId 122*b1cdbd2cSJim Jagielski The format which should be copied. 123*b1cdbd2cSJim Jagielski @param _rPasteData 124*b1cdbd2cSJim Jagielski The data helper. 125*b1cdbd2cSJim Jagielski @param _sDestDataSourceName 126*b1cdbd2cSJim Jagielski The name of the dest data source. 127*b1cdbd2cSJim Jagielski */ 128*b1cdbd2cSJim Jagielski void pasteTable( SotFormatStringId _nFormatId 129*b1cdbd2cSJim Jagielski ,const TransferableDataHelper& _rTransData 130*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _sDestDataSourceName 131*b1cdbd2cSJim Jagielski ,const SharedConnection& _xConnection); 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski /** copies a table which was constructed by tags like HTML or RTF 134*b1cdbd2cSJim Jagielski @param _rDesc 135*b1cdbd2cSJim Jagielski The Drop descriptor 136*b1cdbd2cSJim Jagielski @param _bCheck 137*b1cdbd2cSJim Jagielski If set to <TRUE/> than the controller checks only if a copy is possible. 138*b1cdbd2cSJim Jagielski @param _xConnection 139*b1cdbd2cSJim Jagielski The connection 140*b1cdbd2cSJim Jagielski */ 141*b1cdbd2cSJim Jagielski sal_Bool copyTagTable( DropDescriptor& _rDesc, 142*b1cdbd2cSJim Jagielski sal_Bool _bCheck, 143*b1cdbd2cSJim Jagielski const SharedConnection& _xConnection); 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski /** copies a table which was constructed by tags like HTML or RTF 146*b1cdbd2cSJim Jagielski @param _rDesc 147*b1cdbd2cSJim Jagielski The Drop descriptor 148*b1cdbd2cSJim Jagielski @param _bCheck 149*b1cdbd2cSJim Jagielski If set to <TRUE/> than the controller checks only if a copy is possible. 150*b1cdbd2cSJim Jagielski @param _xConnection 151*b1cdbd2cSJim Jagielski The connection 152*b1cdbd2cSJim Jagielski */ 153*b1cdbd2cSJim Jagielski void asyncCopyTagTable( DropDescriptor& _rDesc 154*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _sDestDataSourceName 155*b1cdbd2cSJim Jagielski ,const SharedConnection& _xConnection); 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski /** copies a table which was constructed by tags like HTML or RTF 158*b1cdbd2cSJim Jagielski @param _aDroppedData 159*b1cdbd2cSJim Jagielski The dropped data 160*b1cdbd2cSJim Jagielski @param _rDesc 161*b1cdbd2cSJim Jagielski IN/OUT parameter 162*b1cdbd2cSJim Jagielski @param _xConnection 163*b1cdbd2cSJim Jagielski The connection 164*b1cdbd2cSJim Jagielski */ 165*b1cdbd2cSJim Jagielski sal_Bool copyTagTable(const TransferableDataHelper& _aDroppedData, 166*b1cdbd2cSJim Jagielski DropDescriptor& _rAsyncDrop, 167*b1cdbd2cSJim Jagielski const SharedConnection& _xConnection); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski /// returns <TRUE/> if the clipboard supports a table format, otherwise <FALSE/>. 170*b1cdbd2cSJim Jagielski sal_Bool isTableFormat(const TransferableDataHelper& _rClipboard) const; 171*b1cdbd2cSJim Jagielski SetTableNameForAppend(const::rtl::OUString & _rDefaultTableName)172*b1cdbd2cSJim Jagielski inline void SetTableNameForAppend( const ::rtl::OUString& _rDefaultTableName ) { m_sTableNameForAppend = _rDefaultTableName; } ResetTableNameForAppend()173*b1cdbd2cSJim Jagielski inline void ResetTableNameForAppend() { SetTableNameForAppend( ::rtl::OUString() ); } GetTableNameForAppend() const174*b1cdbd2cSJim Jagielski inline const ::rtl::OUString& GetTableNameForAppend() const { return m_sTableNameForAppend ;} 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski private: 177*b1cdbd2cSJim Jagielski /** pastes a table into the data source 178*b1cdbd2cSJim Jagielski @param _rPasteData 179*b1cdbd2cSJim Jagielski The data descriptor. 180*b1cdbd2cSJim Jagielski @param _sDestDataSourceName 181*b1cdbd2cSJim Jagielski The name of the dest data source. 182*b1cdbd2cSJim Jagielski */ 183*b1cdbd2cSJim Jagielski void pasteTable( 184*b1cdbd2cSJim Jagielski const ::svx::ODataAccessDescriptor& _rPasteData, 185*b1cdbd2cSJim Jagielski const ::rtl::OUString& _sDestDataSourceName, 186*b1cdbd2cSJim Jagielski const SharedConnection& _xDestConnection 187*b1cdbd2cSJim Jagielski ); 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski /** insert a table into the data source. The source can eihter be a table or a query 190*b1cdbd2cSJim Jagielski */ 191*b1cdbd2cSJim Jagielski void insertTable( 192*b1cdbd2cSJim Jagielski const ::rtl::OUString& i_rSourceDataSource, 193*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& i_rSourceConnection, 194*b1cdbd2cSJim Jagielski const ::rtl::OUString& i_rCommand, 195*b1cdbd2cSJim Jagielski const sal_Int32 i_nCommandType, 196*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& i_rSourceRows, 197*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& i_rSelection, 198*b1cdbd2cSJim Jagielski const sal_Bool i_bBookmarkSelection, 199*b1cdbd2cSJim Jagielski const ::rtl::OUString& i_rDestDataSource, 200*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& i_rDestConnection 201*b1cdbd2cSJim Jagielski ); 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski }; 204*b1cdbd2cSJim Jagielski //........................................................................ 205*b1cdbd2cSJim Jagielski } // namespace dbaui 206*b1cdbd2cSJim Jagielski //........................................................................ 207*b1cdbd2cSJim Jagielski #endif // DBUI_TABLECOPYHELPER_HXX 208*b1cdbd2cSJim Jagielski 209