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