1*2a97ec55SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*2a97ec55SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*2a97ec55SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*2a97ec55SAndrew Rist * distributed with this work for additional information
6*2a97ec55SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*2a97ec55SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*2a97ec55SAndrew Rist * "License"); you may not use this file except in compliance
9*2a97ec55SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*2a97ec55SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*2a97ec55SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*2a97ec55SAndrew Rist * software distributed under the License is distributed on an
15*2a97ec55SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2a97ec55SAndrew Rist * KIND, either express or implied. See the License for the
17*2a97ec55SAndrew Rist * specific language governing permissions and limitations
18*2a97ec55SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*2a97ec55SAndrew Rist *************************************************************/
21*2a97ec55SAndrew Rist
22*2a97ec55SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_extensions.hxx"
26cdf0e10cSrcweir #include <osl/mutex.hxx>
27cdf0e10cSrcweir #include <tools/diagnose_ex.h>
28cdf0e10cSrcweir #include <tools/urlobj.hxx>
29cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
30cdf0e10cSrcweir #include <com/sun/star/io/XPersistObject.hpp>
31cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetType.hpp>
32cdf0e10cSrcweir #include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
33cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSetUpdate.hpp>
34cdf0e10cSrcweir #include <com/sun/star/sdbcx/XRowLocate.hpp>
35cdf0e10cSrcweir #include <com/sun/star/sdbc/DataType.hpp>
36cdf0e10cSrcweir #include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
37cdf0e10cSrcweir #include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
38cdf0e10cSrcweir #include <com/sun/star/sdb/XDatabaseEnvironment.hpp>
39cdf0e10cSrcweir #include <com/sun/star/uno/XNamingService.hpp>
40cdf0e10cSrcweir #include <com/sun/star/sdbc/XDataSource.hpp>
41cdf0e10cSrcweir #include <com/sun/star/sdb/CommandType.hpp>
42cdf0e10cSrcweir #include <com/sun/star/sdbcx/XTablesSupplier.hpp>
43cdf0e10cSrcweir #include <com/sun/star/sdbc/XConnection.hpp>
44cdf0e10cSrcweir #include <com/sun/star/sdb/XCompletedConnection.hpp>
45cdf0e10cSrcweir #include <com/sun/star/task/XInteractionHandler.hpp>
46cdf0e10cSrcweir #include <com/sun/star/form/XLoadable.hpp>
47cdf0e10cSrcweir #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
48cdf0e10cSrcweir #include <com/sun/star/form/XGridColumnFactory.hpp>
49cdf0e10cSrcweir #include <com/sun/star/io/XDataInputStream.hpp>
50cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp>
51cdf0e10cSrcweir #include <com/sun/star/ucb/XContentProvider.hpp>
52cdf0e10cSrcweir #include <com/sun/star/ucb/XContentAccess.hpp>
53cdf0e10cSrcweir #include <ucbhelper/contentbroker.hxx>
54cdf0e10cSrcweir #include <ucbhelper/content.hxx>
55cdf0e10cSrcweir #include <ucbhelper/contentidentifier.hxx>
56cdf0e10cSrcweir #include <comphelper/container.hxx>
57cdf0e10cSrcweir #include <svl/urihelper.hxx>
58cdf0e10cSrcweir #include <svtools/svtabbx.hxx>
59cdf0e10cSrcweir #include <svtools/headbar.hxx>
60cdf0e10cSrcweir #include <vcl/dialog.hxx>
61cdf0e10cSrcweir #ifndef _SV_BUTTON_HXX
62cdf0e10cSrcweir #include <vcl/button.hxx>
63cdf0e10cSrcweir #endif
64cdf0e10cSrcweir #include <vcl/lstbox.hxx>
65cdf0e10cSrcweir #include <vcl/fixed.hxx>
66cdf0e10cSrcweir #include <vcl/group.hxx>
67cdf0e10cSrcweir #include <vcl/lstbox.hxx>
68cdf0e10cSrcweir #include <vcl/edit.hxx>
69cdf0e10cSrcweir #include <vcl/msgbox.hxx>
70cdf0e10cSrcweir #include <tools/debug.hxx>
71cdf0e10cSrcweir #include "datman.hxx"
72cdf0e10cSrcweir #include "bibresid.hxx"
73cdf0e10cSrcweir #include "bibmod.hxx"
74cdf0e10cSrcweir #include "bibview.hxx"
75cdf0e10cSrcweir // #100312# ---------
76cdf0e10cSrcweir #include "bibbeam.hxx"
77cdf0e10cSrcweir #include "bibprop.hrc"
78cdf0e10cSrcweir #include "toolbar.hxx"
79cdf0e10cSrcweir #include "toolbar.hrc"
80cdf0e10cSrcweir #include "bibconfig.hxx"
81cdf0e10cSrcweir #include "bibbeam.hxx"
82cdf0e10cSrcweir #include "bib.hrc"
83cdf0e10cSrcweir #include "datman.hrc"
84cdf0e10cSrcweir #include "bibliography.hrc"
85cdf0e10cSrcweir #include <connectivity/dbtools.hxx>
86cdf0e10cSrcweir
87cdf0e10cSrcweir using namespace ::com::sun::star;
88cdf0e10cSrcweir using namespace ::com::sun::star::beans;
89cdf0e10cSrcweir using namespace ::com::sun::star::container;
90cdf0e10cSrcweir using namespace ::com::sun::star::uno;
91cdf0e10cSrcweir using namespace ::com::sun::star::sdb;
92cdf0e10cSrcweir using namespace ::com::sun::star::sdbc;
93cdf0e10cSrcweir using namespace ::com::sun::star::sdbcx;
94cdf0e10cSrcweir using namespace ::com::sun::star::form;
95cdf0e10cSrcweir using namespace ::com::sun::star::frame;
96cdf0e10cSrcweir using namespace ::com::sun::star::ucb;
97cdf0e10cSrcweir using namespace ::com::sun::star::lang;
98cdf0e10cSrcweir using namespace ::ucb;
99cdf0e10cSrcweir
100cdf0e10cSrcweir #define C2U(cChar) ::rtl::OUString::createFromAscii(cChar)
101cdf0e10cSrcweir #define C2S(cChar) String::CreateFromAscii(cChar)
102cdf0e10cSrcweir #define MAP_TOKEN ';'
103cdf0e10cSrcweir #define PAIR_TOKEN ':'
104cdf0e10cSrcweir
105cdf0e10cSrcweir
106cdf0e10cSrcweir /* -----------------17.01.00 14:38-------------------
107cdf0e10cSrcweir
108cdf0e10cSrcweir --------------------------------------------------*/
getConnection(const::rtl::OUString & _rURL)109cdf0e10cSrcweir Reference< XConnection > getConnection(const ::rtl::OUString& _rURL)
110cdf0e10cSrcweir {
111cdf0e10cSrcweir // first get the sdb::DataSource corresponding to the url
112cdf0e10cSrcweir Reference< XDataSource > xDataSource;
113cdf0e10cSrcweir // is it a favorite title ?
114cdf0e10cSrcweir Reference< XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
115cdf0e10cSrcweir Reference<XInterface> xNamingContextIfc = xMgr->createInstance(C2U("com.sun.star.sdb.DatabaseContext"));
116cdf0e10cSrcweir Reference< XNameAccess > xNamingContext(xNamingContextIfc, UNO_QUERY);
117cdf0e10cSrcweir if (xNamingContext.is() && xNamingContext->hasByName(_rURL))
118cdf0e10cSrcweir {
119cdf0e10cSrcweir DBG_ASSERT(Reference< XNamingService > (xNamingContext, UNO_QUERY).is(), "::getDataSource : no NamingService interface on the sdb::DatabaseAccessContext !");
120cdf0e10cSrcweir try
121cdf0e10cSrcweir {
122cdf0e10cSrcweir xDataSource = Reference< XDataSource > (Reference< XNamingService > (xNamingContext, UNO_QUERY)->getRegisteredObject(_rURL), UNO_QUERY);
123cdf0e10cSrcweir }
124cdf0e10cSrcweir catch(Exception eEx)
125cdf0e10cSrcweir {
126cdf0e10cSrcweir (void) eEx; // make compiler happy
127cdf0e10cSrcweir DBG_ERROR("Exception caught in ODatabaseContext::getRegisteredObject()");
128cdf0e10cSrcweir }
129cdf0e10cSrcweir }
130cdf0e10cSrcweir // build the connection from the data source
131cdf0e10cSrcweir Reference< XConnection > xConn;
132cdf0e10cSrcweir if (xDataSource.is())
133cdf0e10cSrcweir {
134cdf0e10cSrcweir // need user/pwd for this
135cdf0e10cSrcweir ::rtl::OUString sUser, sPwd;
136cdf0e10cSrcweir Reference< XPropertySet > xDataSourceProps(xDataSource, UNO_QUERY);
137cdf0e10cSrcweir Reference< XCompletedConnection > xComplConn(xDataSource, UNO_QUERY);
138cdf0e10cSrcweir /* Reference< XPropertySetInfo > xInfo = xDataSourceProps.is() ? xDataSourceProps->getPropertySetInfo() : Reference< XPropertySetInfo > ();
139cdf0e10cSrcweir if (xInfo.is() && xInfo->hasPropertyByName(C2U("User")))
140cdf0e10cSrcweir xDataSourceProps->getPropertyValue(C2U("User")) >>= sUser;
141cdf0e10cSrcweir if (xInfo.is() && xInfo->hasPropertyByName(C2U("Password")))
142cdf0e10cSrcweir xDataSourceProps->getPropertyValue(C2U("Password"))>>= sPwd;
143cdf0e10cSrcweir */
144cdf0e10cSrcweir try
145cdf0e10cSrcweir {
146cdf0e10cSrcweir
147cdf0e10cSrcweir Reference<XInterface> xHdl = xMgr->createInstance(C2U("com.sun.star.task.InteractionHandler"));
148cdf0e10cSrcweir Reference<task::XInteractionHandler> xIHdl(xHdl, UNO_QUERY);
149cdf0e10cSrcweir xConn = xComplConn->connectWithCompletion(xIHdl);
150cdf0e10cSrcweir // xConn = xDataSource->getConnection(sUser, sPwd);
151cdf0e10cSrcweir }
152cdf0e10cSrcweir catch(SQLException&)
153cdf0e10cSrcweir {
154cdf0e10cSrcweir // TODO : a real error handling
155cdf0e10cSrcweir }
156cdf0e10cSrcweir catch(Exception& e )
157cdf0e10cSrcweir {
158cdf0e10cSrcweir (void) e; // make compiler happy
159cdf0e10cSrcweir }
160cdf0e10cSrcweir
161cdf0e10cSrcweir }
162cdf0e10cSrcweir return xConn;
163cdf0e10cSrcweir }
164cdf0e10cSrcweir
165cdf0e10cSrcweir /* -----------------17.01.00 14:46-------------------
166cdf0e10cSrcweir
167cdf0e10cSrcweir --------------------------------------------------*/
getConnection(const Reference<XInterface> & xRowSet)168cdf0e10cSrcweir Reference< XConnection > getConnection(const Reference< XInterface > & xRowSet)
169cdf0e10cSrcweir {
170cdf0e10cSrcweir Reference< XConnection > xConn;
171cdf0e10cSrcweir try
172cdf0e10cSrcweir {
173cdf0e10cSrcweir Reference< XPropertySet > xFormProps(xRowSet, UNO_QUERY);
174cdf0e10cSrcweir if (!xFormProps.is())
175cdf0e10cSrcweir return xConn;
176cdf0e10cSrcweir
177cdf0e10cSrcweir xConn = Reference< XConnection > (*(Reference< XInterface > *)xFormProps->getPropertyValue(C2U("ActiveConnection")).getValue(), UNO_QUERY);
178cdf0e10cSrcweir if (!xConn.is())
179cdf0e10cSrcweir {
180cdf0e10cSrcweir DBG_WARNING("no active connection");
181cdf0e10cSrcweir }
182cdf0e10cSrcweir }
183cdf0e10cSrcweir catch(Exception& e )
184cdf0e10cSrcweir {
185cdf0e10cSrcweir (void) e; // make compiler happy
186cdf0e10cSrcweir DBG_ERROR("exception in getConnection");
187cdf0e10cSrcweir }
188cdf0e10cSrcweir
189cdf0e10cSrcweir return xConn;
190cdf0e10cSrcweir }
191cdf0e10cSrcweir /* -----------------17.01.00 16:07-------------------
192cdf0e10cSrcweir
193cdf0e10cSrcweir --------------------------------------------------*/
getColumns(const Reference<XForm> & _rxForm)194cdf0e10cSrcweir Reference< XNameAccess > getColumns(const Reference< XForm > & _rxForm)
195cdf0e10cSrcweir {
196cdf0e10cSrcweir Reference< XNameAccess > xReturn;
197cdf0e10cSrcweir // check if the form is alive
198cdf0e10cSrcweir Reference< XColumnsSupplier > xSupplyCols( _rxForm, UNO_QUERY );
199cdf0e10cSrcweir if (xSupplyCols.is())
200cdf0e10cSrcweir xReturn = xSupplyCols->getColumns();
201cdf0e10cSrcweir
202cdf0e10cSrcweir if (!xReturn.is() || (xReturn->getElementNames().getLength() == 0))
203cdf0e10cSrcweir { // no ....
204cdf0e10cSrcweir xReturn = NULL;
205cdf0e10cSrcweir // -> get the table the form is bound to and ask it for their columns
206cdf0e10cSrcweir Reference< XTablesSupplier > xSupplyTables( getConnection( _rxForm ), UNO_QUERY );
207cdf0e10cSrcweir Reference< XPropertySet > xFormProps( _rxForm, UNO_QUERY );
208cdf0e10cSrcweir if (xFormProps.is() && xSupplyTables.is())
209cdf0e10cSrcweir {
210cdf0e10cSrcweir try
211cdf0e10cSrcweir {
212cdf0e10cSrcweir DBG_ASSERT((*(sal_Int32*)xFormProps->getPropertyValue(C2U("CommandType")).getValue()) == CommandType::TABLE,
213cdf0e10cSrcweir "::getColumns : invalid form (has no table as data source) !");
214cdf0e10cSrcweir ::rtl::OUString sTable;
215cdf0e10cSrcweir xFormProps->getPropertyValue(C2U("Command")) >>= sTable;
216cdf0e10cSrcweir Reference< XNameAccess > xTables = xSupplyTables->getTables();
217cdf0e10cSrcweir if (xTables.is() && xTables->hasByName(sTable))
218cdf0e10cSrcweir xSupplyCols = Reference< XColumnsSupplier > (
219cdf0e10cSrcweir *(Reference< XInterface > *)xTables->getByName(sTable).getValue(), UNO_QUERY);
220cdf0e10cSrcweir if (xSupplyCols.is())
221cdf0e10cSrcweir xReturn = xSupplyCols->getColumns();
222cdf0e10cSrcweir }
223cdf0e10cSrcweir #ifdef DBG_UTIL
224cdf0e10cSrcweir catch(Exception& e )
225cdf0e10cSrcweir #else
226cdf0e10cSrcweir catch(Exception&)
227cdf0e10cSrcweir #endif
228cdf0e10cSrcweir {
229cdf0e10cSrcweir #ifdef DBG_UTIL
230cdf0e10cSrcweir String sMsg(String::CreateFromAscii("::getColumns : catched an exception ("));
231cdf0e10cSrcweir sMsg += String(e.Message);
232cdf0e10cSrcweir sMsg.AppendAscii(") ...");
233cdf0e10cSrcweir DBG_ERROR( ByteString(sMsg, RTL_TEXTENCODING_ASCII_US ).GetBuffer());
234cdf0e10cSrcweir #endif
235cdf0e10cSrcweir }
236cdf0e10cSrcweir
237cdf0e10cSrcweir }
238cdf0e10cSrcweir }
239cdf0e10cSrcweir return xReturn;
240cdf0e10cSrcweir }
241cdf0e10cSrcweir
242cdf0e10cSrcweir /* -----------------11.11.99 15:54-------------------
243cdf0e10cSrcweir
244cdf0e10cSrcweir --------------------------------------------------*/
245cdf0e10cSrcweir class MappingDialog_Impl : public ModalDialog
246cdf0e10cSrcweir {
247cdf0e10cSrcweir BibDataManager* pDatMan;
248cdf0e10cSrcweir OKButton aOKBT;
249cdf0e10cSrcweir CancelButton aCancelBT;
250cdf0e10cSrcweir HelpButton aHelpBT;
251cdf0e10cSrcweir FixedLine aMapGB;
252cdf0e10cSrcweir FixedText aIdentifierFT;
253cdf0e10cSrcweir ListBox aIdentifierLB;
254cdf0e10cSrcweir FixedText aAuthorityTypeFT;
255cdf0e10cSrcweir ListBox aAuthorityTypeLB;
256cdf0e10cSrcweir FixedText aAuthorFT;
257cdf0e10cSrcweir ListBox aAuthorLB;
258cdf0e10cSrcweir FixedText aTitleFT;
259cdf0e10cSrcweir ListBox aTitleLB;
260cdf0e10cSrcweir FixedText aMonthFT;
261cdf0e10cSrcweir ListBox aMonthLB;
262cdf0e10cSrcweir FixedText aYearFT;
263cdf0e10cSrcweir ListBox aYearLB;
264cdf0e10cSrcweir FixedText aISBNFT;
265cdf0e10cSrcweir ListBox aISBNLB;
266cdf0e10cSrcweir FixedText aBooktitleFT;
267cdf0e10cSrcweir ListBox aBooktitleLB;
268cdf0e10cSrcweir FixedText aChapterFT;
269cdf0e10cSrcweir ListBox aChapterLB;
270cdf0e10cSrcweir FixedText aEditionFT;
271cdf0e10cSrcweir ListBox aEditionLB;
272cdf0e10cSrcweir FixedText aEditorFT;
273cdf0e10cSrcweir ListBox aEditorLB;
274cdf0e10cSrcweir FixedText aHowpublishedFT;
275cdf0e10cSrcweir ListBox aHowpublishedLB;
276cdf0e10cSrcweir FixedText aInstitutionFT;
277cdf0e10cSrcweir ListBox aInstitutionLB;
278cdf0e10cSrcweir FixedText aJournalFT;
279cdf0e10cSrcweir ListBox aJournalLB;
280cdf0e10cSrcweir FixedText aNoteFT;
281cdf0e10cSrcweir ListBox aNoteLB;
282cdf0e10cSrcweir FixedText aAnnoteFT;
283cdf0e10cSrcweir ListBox aAnnoteLB;
284cdf0e10cSrcweir FixedText aNumberFT;
285cdf0e10cSrcweir ListBox aNumberLB;
286cdf0e10cSrcweir FixedText aOrganizationsFT;
287cdf0e10cSrcweir ListBox aOrganizationsLB;
288cdf0e10cSrcweir FixedText aPagesFT;
289cdf0e10cSrcweir ListBox aPagesLB;
290cdf0e10cSrcweir FixedText aPublisherFT;
291cdf0e10cSrcweir ListBox aPublisherLB;
292cdf0e10cSrcweir FixedText aAddressFT;
293cdf0e10cSrcweir ListBox aAddressLB;
294cdf0e10cSrcweir FixedText aSchoolFT;
295cdf0e10cSrcweir ListBox aSchoolLB;
296cdf0e10cSrcweir FixedText aSeriesFT;
297cdf0e10cSrcweir ListBox aSeriesLB;
298cdf0e10cSrcweir FixedText aReportTypeFT;
299cdf0e10cSrcweir ListBox aReportTypeLB;
300cdf0e10cSrcweir FixedText aVolumeFT;
301cdf0e10cSrcweir ListBox aVolumeLB;
302cdf0e10cSrcweir FixedText aURLFT;
303cdf0e10cSrcweir ListBox aURLLB;
304cdf0e10cSrcweir FixedText aCustom1FT;
305cdf0e10cSrcweir ListBox aCustom1LB;
306cdf0e10cSrcweir FixedText aCustom2FT;
307cdf0e10cSrcweir ListBox aCustom2LB;
308cdf0e10cSrcweir FixedText aCustom3FT;
309cdf0e10cSrcweir ListBox aCustom3LB;
310cdf0e10cSrcweir FixedText aCustom4FT;
311cdf0e10cSrcweir ListBox aCustom4LB;
312cdf0e10cSrcweir FixedText aCustom5FT;
313cdf0e10cSrcweir ListBox aCustom5LB;
314cdf0e10cSrcweir ListBox* aListBoxes[COLUMN_COUNT];
315cdf0e10cSrcweir String sNone;
316cdf0e10cSrcweir
317cdf0e10cSrcweir sal_Bool bModified;
318cdf0e10cSrcweir
319cdf0e10cSrcweir
320cdf0e10cSrcweir
321cdf0e10cSrcweir DECL_LINK(OkHdl, OKButton*);
322cdf0e10cSrcweir DECL_LINK(ListBoxSelectHdl, ListBox*);
323cdf0e10cSrcweir
324cdf0e10cSrcweir public:
325cdf0e10cSrcweir MappingDialog_Impl(Window* pParent, BibDataManager* pDatMan);
326cdf0e10cSrcweir ~MappingDialog_Impl();
327cdf0e10cSrcweir
SetModified()328cdf0e10cSrcweir void SetModified() {bModified = sal_True;}
329cdf0e10cSrcweir
330cdf0e10cSrcweir };
331cdf0e10cSrcweir /* -----------------11.11.99 16:42-------------------
332cdf0e10cSrcweir
333cdf0e10cSrcweir --------------------------------------------------*/
lcl_FindLogicalName(BibConfig * pConfig,const::rtl::OUString & rLogicalColumnName)334cdf0e10cSrcweir sal_uInt16 lcl_FindLogicalName(BibConfig* pConfig ,
335cdf0e10cSrcweir const ::rtl::OUString& rLogicalColumnName)
336cdf0e10cSrcweir {
337cdf0e10cSrcweir for(sal_uInt16 i = 0; i < COLUMN_COUNT; i++)
338cdf0e10cSrcweir {
339cdf0e10cSrcweir if(rLogicalColumnName == pConfig->GetDefColumnName(i))
340cdf0e10cSrcweir return i;
341cdf0e10cSrcweir }
342cdf0e10cSrcweir return USHRT_MAX;
343cdf0e10cSrcweir }
344cdf0e10cSrcweir //-----------------------------------------------------------------------------
MappingDialog_Impl(Window * pParent,BibDataManager * pMan)345cdf0e10cSrcweir MappingDialog_Impl::MappingDialog_Impl(Window* pParent, BibDataManager* pMan) :
346cdf0e10cSrcweir ModalDialog(pParent, BibResId(RID_DLG_MAPPING) ),
347cdf0e10cSrcweir pDatMan(pMan),
348cdf0e10cSrcweir aOKBT(this, BibResId( BT_OK )),
349cdf0e10cSrcweir aCancelBT(this, BibResId( BT_CANCEL )),
350cdf0e10cSrcweir aHelpBT(this, BibResId( BT_HELP )),
351cdf0e10cSrcweir
352cdf0e10cSrcweir aMapGB(this, BibResId( GB_MAPPING )),
353cdf0e10cSrcweir
354cdf0e10cSrcweir aIdentifierFT(this, BibResId( FT_IDENTIFIER )),
355cdf0e10cSrcweir aIdentifierLB(this, BibResId( LB_IDENTIFIER )),
356cdf0e10cSrcweir aAuthorityTypeFT(this, BibResId( FT_AUTHORITYTYPE )),
357cdf0e10cSrcweir aAuthorityTypeLB(this, BibResId( LB_AUTHORITYTYPE )),
358cdf0e10cSrcweir aAuthorFT(this, BibResId( FT_AUTHOR )),
359cdf0e10cSrcweir aAuthorLB(this, BibResId( LB_AUTHOR )),
360cdf0e10cSrcweir aTitleFT(this, BibResId( FT_TITLE )),
361cdf0e10cSrcweir aTitleLB(this, BibResId( LB_TITLE )),
362cdf0e10cSrcweir aMonthFT(this, BibResId( FT_MONTH )),
363cdf0e10cSrcweir aMonthLB(this, BibResId( LB_MONTH )),
364cdf0e10cSrcweir aYearFT(this, BibResId( FT_YEAR )),
365cdf0e10cSrcweir aYearLB(this, BibResId( LB_YEAR )),
366cdf0e10cSrcweir aISBNFT(this, BibResId( FT_ISBN )),
367cdf0e10cSrcweir aISBNLB(this, BibResId( LB_ISBN )),
368cdf0e10cSrcweir aBooktitleFT(this, BibResId( FT_BOOKTITLE )),
369cdf0e10cSrcweir aBooktitleLB(this, BibResId( LB_BOOKTITLE )),
370cdf0e10cSrcweir aChapterFT(this, BibResId( FT_CHAPTER )),
371cdf0e10cSrcweir aChapterLB(this, BibResId( LB_CHAPTER )),
372cdf0e10cSrcweir aEditionFT(this, BibResId( FT_EDITION )),
373cdf0e10cSrcweir aEditionLB(this, BibResId( LB_EDITION )),
374cdf0e10cSrcweir aEditorFT(this, BibResId( FT_EDITOR )),
375cdf0e10cSrcweir aEditorLB(this, BibResId( LB_EDITOR )),
376cdf0e10cSrcweir aHowpublishedFT(this, BibResId( FT_HOWPUBLISHED )),
377cdf0e10cSrcweir aHowpublishedLB(this, BibResId( LB_HOWPUBLISHED )),
378cdf0e10cSrcweir aInstitutionFT(this, BibResId( FT_INSTITUTION )),
379cdf0e10cSrcweir aInstitutionLB(this, BibResId( LB_INSTITUTION )),
380cdf0e10cSrcweir aJournalFT(this, BibResId( FT_JOURNAL )),
381cdf0e10cSrcweir aJournalLB(this, BibResId( LB_JOURNAL )),
382cdf0e10cSrcweir aNoteFT(this, BibResId( FT_NOTE )),
383cdf0e10cSrcweir aNoteLB(this, BibResId( LB_NOTE )),
384cdf0e10cSrcweir aAnnoteFT(this, BibResId( FT_ANNOTE )),
385cdf0e10cSrcweir aAnnoteLB(this, BibResId( LB_ANNOTE )),
386cdf0e10cSrcweir aNumberFT(this, BibResId( FT_NUMBER )),
387cdf0e10cSrcweir aNumberLB(this, BibResId( LB_NUMBER )),
388cdf0e10cSrcweir aOrganizationsFT(this, BibResId( FT_ORGANIZATIONS )),
389cdf0e10cSrcweir aOrganizationsLB(this, BibResId( LB_ORGANIZATIONS )),
390cdf0e10cSrcweir aPagesFT(this, BibResId( FT_PAGES )),
391cdf0e10cSrcweir aPagesLB(this, BibResId( LB_PAGES )),
392cdf0e10cSrcweir aPublisherFT(this, BibResId( FT_PUBLISHER )),
393cdf0e10cSrcweir aPublisherLB(this, BibResId( LB_PUBLISHER )),
394cdf0e10cSrcweir aAddressFT(this, BibResId( FT_ADDRESS )),
395cdf0e10cSrcweir aAddressLB(this, BibResId( LB_ADDRESS )),
396cdf0e10cSrcweir aSchoolFT(this, BibResId( FT_SCHOOL )),
397cdf0e10cSrcweir aSchoolLB(this, BibResId( LB_SCHOOL )),
398cdf0e10cSrcweir aSeriesFT(this, BibResId( FT_SERIES )),
399cdf0e10cSrcweir aSeriesLB(this, BibResId( LB_SERIES )),
400cdf0e10cSrcweir aReportTypeFT(this, BibResId( FT_REPORTTYPE )),
401cdf0e10cSrcweir aReportTypeLB(this, BibResId( LB_REPORTTYPE )),
402cdf0e10cSrcweir aVolumeFT(this, BibResId( FT_VOLUME )),
403cdf0e10cSrcweir aVolumeLB(this, BibResId( LB_VOLUME )),
404cdf0e10cSrcweir aURLFT(this, BibResId( FT_URL )),
405cdf0e10cSrcweir aURLLB(this, BibResId( LB_URL )),
406cdf0e10cSrcweir aCustom1FT(this, BibResId( FT_CUSTOM1 )),
407cdf0e10cSrcweir aCustom1LB(this, BibResId( LB_CUSTOM1 )),
408cdf0e10cSrcweir aCustom2FT(this, BibResId( FT_CUSTOM2 )),
409cdf0e10cSrcweir aCustom2LB(this, BibResId( LB_CUSTOM2 )),
410cdf0e10cSrcweir aCustom3FT(this, BibResId( FT_CUSTOM3 )),
411cdf0e10cSrcweir aCustom3LB(this, BibResId( LB_CUSTOM3 )),
412cdf0e10cSrcweir aCustom4FT(this, BibResId( FT_CUSTOM4 )),
413cdf0e10cSrcweir aCustom4LB(this, BibResId( LB_CUSTOM4 )),
414cdf0e10cSrcweir aCustom5FT(this, BibResId( FT_CUSTOM5 )),
415cdf0e10cSrcweir aCustom5LB(this, BibResId( LB_CUSTOM5 )),
416cdf0e10cSrcweir sNone(BibResId(ST_NONE)),
417cdf0e10cSrcweir bModified(sal_False)
418cdf0e10cSrcweir {
419cdf0e10cSrcweir FreeResource();
420cdf0e10cSrcweir
421cdf0e10cSrcweir aIdentifierFT.SetText(String( BibResId( ST_IDENTIFIER )));
422cdf0e10cSrcweir aAuthorityTypeFT.SetText(String( BibResId( ST_AUTHTYPE )));
423cdf0e10cSrcweir aAuthorFT.SetText(String( BibResId( ST_AUTHOR )));
424cdf0e10cSrcweir aTitleFT.SetText(String( BibResId( ST_TITLE )));
425cdf0e10cSrcweir aMonthFT.SetText(String( BibResId( ST_MONTH )));
426cdf0e10cSrcweir aYearFT.SetText(String( BibResId( ST_YEAR )));
427cdf0e10cSrcweir aISBNFT.SetText(String( BibResId( ST_ISBN )));
428cdf0e10cSrcweir aBooktitleFT.SetText(String( BibResId( ST_BOOKTITLE )));
429cdf0e10cSrcweir aChapterFT.SetText(String( BibResId( ST_CHAPTER )));
430cdf0e10cSrcweir aEditionFT.SetText(String( BibResId( ST_EDITION )));
431cdf0e10cSrcweir aEditorFT.SetText(String( BibResId( ST_EDITOR )));
432cdf0e10cSrcweir aHowpublishedFT.SetText(String( BibResId( ST_HOWPUBLISHED )));
433cdf0e10cSrcweir aInstitutionFT.SetText(String( BibResId( ST_INSTITUTION )));
434cdf0e10cSrcweir aJournalFT.SetText(String( BibResId( ST_JOURNAL )));
435cdf0e10cSrcweir aNoteFT.SetText(String( BibResId( ST_NOTE )));
436cdf0e10cSrcweir aAnnoteFT.SetText(String( BibResId( ST_ANNOTE )));
437cdf0e10cSrcweir aNumberFT.SetText(String( BibResId( ST_NUMBER )));
438cdf0e10cSrcweir aOrganizationsFT.SetText(String( BibResId( ST_ORGANIZATION )));
439cdf0e10cSrcweir aPagesFT.SetText(String( BibResId( ST_PAGE )));
440cdf0e10cSrcweir aPublisherFT.SetText(String( BibResId( ST_PUBLISHER )));
441cdf0e10cSrcweir aAddressFT.SetText(String( BibResId( ST_ADDRESS )));
442cdf0e10cSrcweir aSchoolFT.SetText(String( BibResId( ST_SCHOOL )));
443cdf0e10cSrcweir aSeriesFT.SetText(String( BibResId( ST_SERIES )));
444cdf0e10cSrcweir aReportTypeFT.SetText(String( BibResId( ST_REPORT )));
445cdf0e10cSrcweir aVolumeFT.SetText(String( BibResId( ST_VOLUME )));
446cdf0e10cSrcweir aURLFT.SetText(String( BibResId( ST_URL )));
447cdf0e10cSrcweir aCustom1FT.SetText(String( BibResId( ST_CUSTOM1 )));
448cdf0e10cSrcweir aCustom2FT.SetText(String( BibResId( ST_CUSTOM2 )));
449cdf0e10cSrcweir aCustom3FT.SetText(String( BibResId( ST_CUSTOM3 )));
450cdf0e10cSrcweir aCustom4FT.SetText(String( BibResId( ST_CUSTOM4 )));
451cdf0e10cSrcweir aCustom5FT.SetText(String( BibResId( ST_CUSTOM5 )));
452cdf0e10cSrcweir
453cdf0e10cSrcweir aOKBT.SetClickHdl(LINK(this, MappingDialog_Impl, OkHdl));
454cdf0e10cSrcweir String sTitle = GetText();
455cdf0e10cSrcweir sTitle.SearchAndReplace(C2S("%1"), pDatMan->getActiveDataTable(), 0);
456cdf0e10cSrcweir SetText(sTitle);
457cdf0e10cSrcweir
458cdf0e10cSrcweir aListBoxes[0] = &aIdentifierLB;
459cdf0e10cSrcweir aListBoxes[1] = &aAuthorityTypeLB;
460cdf0e10cSrcweir aListBoxes[2] = &aAuthorLB;
461cdf0e10cSrcweir aListBoxes[3] = &aTitleLB;
462cdf0e10cSrcweir aListBoxes[4] = &aYearLB;
463cdf0e10cSrcweir aListBoxes[5] = &aISBNLB;
464cdf0e10cSrcweir aListBoxes[6] = &aBooktitleLB;
465cdf0e10cSrcweir aListBoxes[7] = &aChapterLB;
466cdf0e10cSrcweir aListBoxes[8] = &aEditionLB;
467cdf0e10cSrcweir aListBoxes[9] = &aEditorLB;
468cdf0e10cSrcweir aListBoxes[10] = &aHowpublishedLB;
469cdf0e10cSrcweir aListBoxes[11] = &aInstitutionLB;
470cdf0e10cSrcweir aListBoxes[12] = &aJournalLB;
471cdf0e10cSrcweir aListBoxes[13] = &aMonthLB;
472cdf0e10cSrcweir aListBoxes[14] = &aNoteLB;
473cdf0e10cSrcweir aListBoxes[15] = &aAnnoteLB;
474cdf0e10cSrcweir aListBoxes[16] = &aNumberLB;
475cdf0e10cSrcweir aListBoxes[17] = &aOrganizationsLB;
476cdf0e10cSrcweir aListBoxes[18] = &aPagesLB;
477cdf0e10cSrcweir aListBoxes[19] = &aPublisherLB;
478cdf0e10cSrcweir aListBoxes[20] = &aAddressLB;
479cdf0e10cSrcweir aListBoxes[21] = &aSchoolLB;
480cdf0e10cSrcweir aListBoxes[22] = &aSeriesLB;
481cdf0e10cSrcweir aListBoxes[23] = &aReportTypeLB;
482cdf0e10cSrcweir aListBoxes[24] = &aVolumeLB;
483cdf0e10cSrcweir aListBoxes[25] = &aURLLB;
484cdf0e10cSrcweir aListBoxes[26] = &aCustom1LB;
485cdf0e10cSrcweir aListBoxes[27] = &aCustom2LB;
486cdf0e10cSrcweir aListBoxes[28] = &aCustom3LB;
487cdf0e10cSrcweir aListBoxes[29] = &aCustom4LB;
488cdf0e10cSrcweir aListBoxes[30] = &aCustom5LB;
489cdf0e10cSrcweir
490cdf0e10cSrcweir aListBoxes[0]->InsertEntry(sNone);
491cdf0e10cSrcweir Reference< XNameAccess > xFields = getColumns( pDatMan->getForm() );
492cdf0e10cSrcweir DBG_ASSERT(xFields.is(), "MappingDialog_Impl::MappingDialog_Impl : gave me an invalid form !");
493cdf0e10cSrcweir if(xFields.is())
494cdf0e10cSrcweir {
495cdf0e10cSrcweir Sequence< ::rtl::OUString > aNames = xFields->getElementNames();
496cdf0e10cSrcweir sal_Int32 nFieldsCount = aNames.getLength();
497cdf0e10cSrcweir const ::rtl::OUString* pNames = aNames.getConstArray();
498cdf0e10cSrcweir
499cdf0e10cSrcweir for(sal_Int32 nField = 0; nField < nFieldsCount; nField++)
500cdf0e10cSrcweir aListBoxes[0]->InsertEntry(pNames[nField]);
501cdf0e10cSrcweir }
502cdf0e10cSrcweir
503cdf0e10cSrcweir Link aLnk = LINK(this, MappingDialog_Impl, ListBoxSelectHdl);
504cdf0e10cSrcweir
505cdf0e10cSrcweir aListBoxes[0]->SelectEntryPos(0);
506cdf0e10cSrcweir aListBoxes[0]->SetSelectHdl(aLnk);
507cdf0e10cSrcweir for(sal_uInt16 i = 1; i < COLUMN_COUNT; i++)
508cdf0e10cSrcweir {
509cdf0e10cSrcweir for(sal_uInt16 j = 0; j < aListBoxes[0]->GetEntryCount();j++)
510cdf0e10cSrcweir aListBoxes[i]->InsertEntry(aListBoxes[0]->GetEntry(j));
511cdf0e10cSrcweir aListBoxes[i]->SelectEntryPos(0);
512cdf0e10cSrcweir aListBoxes[i]->SetSelectHdl(aLnk);
513cdf0e10cSrcweir }
514cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
515cdf0e10cSrcweir BibDBDescriptor aDesc;
516cdf0e10cSrcweir aDesc.sDataSource = pDatMan->getActiveDataSource();
517cdf0e10cSrcweir aDesc.sTableOrQuery = pDatMan->getActiveDataTable();
518cdf0e10cSrcweir aDesc.nCommandType = CommandType::TABLE;
519cdf0e10cSrcweir const Mapping* pMapping = pConfig->GetMapping(aDesc);
520cdf0e10cSrcweir if(pMapping)
521cdf0e10cSrcweir {
522cdf0e10cSrcweir for(sal_uInt16 nEntry = 0; nEntry < COLUMN_COUNT; nEntry++)
523cdf0e10cSrcweir {
524cdf0e10cSrcweir sal_uInt16 nListBoxIndex = lcl_FindLogicalName( pConfig, pMapping->aColumnPairs[nEntry].sLogicalColumnName);
525cdf0e10cSrcweir if(nListBoxIndex < COLUMN_COUNT)
526cdf0e10cSrcweir {
527cdf0e10cSrcweir aListBoxes[nListBoxIndex]->SelectEntry(pMapping->aColumnPairs[nEntry].sRealColumnName);
528cdf0e10cSrcweir }
529cdf0e10cSrcweir }
530cdf0e10cSrcweir }
531cdf0e10cSrcweir }
532cdf0e10cSrcweir /* -----------------11.11.99 16:44-------------------
533cdf0e10cSrcweir
534cdf0e10cSrcweir --------------------------------------------------*/
~MappingDialog_Impl()535cdf0e10cSrcweir MappingDialog_Impl::~MappingDialog_Impl()
536cdf0e10cSrcweir {}
537cdf0e10cSrcweir /* -----------------15.11.99 10:38-------------------
538cdf0e10cSrcweir
539cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(MappingDialog_Impl,ListBoxSelectHdl,ListBox *,pListBox)540cdf0e10cSrcweir IMPL_LINK(MappingDialog_Impl, ListBoxSelectHdl, ListBox*, pListBox)
541cdf0e10cSrcweir {
542cdf0e10cSrcweir sal_uInt16 nEntryPos = pListBox->GetSelectEntryPos();
543cdf0e10cSrcweir if(0 < nEntryPos)
544cdf0e10cSrcweir {
545cdf0e10cSrcweir for(sal_uInt16 i = 0; i < COLUMN_COUNT; i++)
546cdf0e10cSrcweir {
547cdf0e10cSrcweir if(pListBox != aListBoxes[i] && aListBoxes[i]->GetSelectEntryPos() == nEntryPos)
548cdf0e10cSrcweir aListBoxes[i]->SelectEntryPos(0);
549cdf0e10cSrcweir }
550cdf0e10cSrcweir }
551cdf0e10cSrcweir SetModified();
552cdf0e10cSrcweir return 0;
553cdf0e10cSrcweir }
554cdf0e10cSrcweir /* -----------------12.11.99 14:50-------------------
555cdf0e10cSrcweir
556cdf0e10cSrcweir --------------------------------------------------*/
IMPL_LINK(MappingDialog_Impl,OkHdl,OKButton *,EMPTYARG)557cdf0e10cSrcweir IMPL_LINK(MappingDialog_Impl, OkHdl, OKButton*, EMPTYARG)
558cdf0e10cSrcweir {
559cdf0e10cSrcweir if(bModified)
560cdf0e10cSrcweir {
561cdf0e10cSrcweir Mapping aNew;
562cdf0e10cSrcweir aNew.sTableName = String(pDatMan->getActiveDataTable());
563cdf0e10cSrcweir aNew.sURL = String(pDatMan->getActiveDataSource());
564cdf0e10cSrcweir
565cdf0e10cSrcweir sal_uInt16 nWriteIndex = 0;
566cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
567cdf0e10cSrcweir for(sal_uInt16 nEntry = 0; nEntry < COLUMN_COUNT; nEntry++)
568cdf0e10cSrcweir {
569cdf0e10cSrcweir String sSel = aListBoxes[nEntry]->GetSelectEntry();
570cdf0e10cSrcweir if(sSel != sNone)
571cdf0e10cSrcweir {
572cdf0e10cSrcweir aNew.aColumnPairs[nWriteIndex].sRealColumnName = sSel;
573cdf0e10cSrcweir aNew.aColumnPairs[nWriteIndex].sLogicalColumnName = pConfig->GetDefColumnName(nEntry);
574cdf0e10cSrcweir nWriteIndex++;
575cdf0e10cSrcweir }
576cdf0e10cSrcweir }
577cdf0e10cSrcweir BibDBDescriptor aDesc;
578cdf0e10cSrcweir aDesc.sDataSource = pDatMan->getActiveDataSource();
579cdf0e10cSrcweir aDesc.sTableOrQuery = pDatMan->getActiveDataTable();
580cdf0e10cSrcweir aDesc.nCommandType = CommandType::TABLE;
581cdf0e10cSrcweir pDatMan->ResetIdentifierMapping();
582cdf0e10cSrcweir pConfig->SetMapping(aDesc, &aNew);
583cdf0e10cSrcweir }
584cdf0e10cSrcweir EndDialog(bModified ? RET_OK : RET_CANCEL);
585cdf0e10cSrcweir return 0;
586cdf0e10cSrcweir }
587cdf0e10cSrcweir /* -----------------18.11.99 10:23-------------------
588cdf0e10cSrcweir
589cdf0e10cSrcweir --------------------------------------------------*/
590cdf0e10cSrcweir class DBChangeDialog_Impl : public ModalDialog
591cdf0e10cSrcweir {
592cdf0e10cSrcweir OKButton aOKBT;
593cdf0e10cSrcweir CancelButton aCancelBT;
594cdf0e10cSrcweir HelpButton aHelpBT;
595cdf0e10cSrcweir FixedLine aSelectionGB;
596cdf0e10cSrcweir SvTabListBox aSelectionLB;
597cdf0e10cSrcweir HeaderBar aSelectionHB;
598cdf0e10cSrcweir DBChangeDialogConfig_Impl aConfig;
599cdf0e10cSrcweir String aEntryST;
600cdf0e10cSrcweir String aURLST;
601cdf0e10cSrcweir
602cdf0e10cSrcweir BibDataManager* pDatMan;
603cdf0e10cSrcweir
604cdf0e10cSrcweir // DECL_LINK(EndDragHdl, HeaderBar*);
605cdf0e10cSrcweir DECL_LINK(DoubleClickHdl, SvTabListBox*);
606cdf0e10cSrcweir public:
607cdf0e10cSrcweir DBChangeDialog_Impl(Window* pParent, BibDataManager* pMan );
608cdf0e10cSrcweir ~DBChangeDialog_Impl();
609cdf0e10cSrcweir
610cdf0e10cSrcweir String GetCurrentURL()const;
611cdf0e10cSrcweir };
612cdf0e10cSrcweir
613cdf0e10cSrcweir /*-- 18.11.99 10:35:20---------------------------------------------------
614cdf0e10cSrcweir
615cdf0e10cSrcweir -----------------------------------------------------------------------*/
DBChangeDialog_Impl(Window * pParent,BibDataManager * pMan)616cdf0e10cSrcweir DBChangeDialog_Impl::DBChangeDialog_Impl(Window* pParent, BibDataManager* pMan ) :
617cdf0e10cSrcweir ModalDialog(pParent, BibResId(RID_DLG_DBCHANGE) ),
618cdf0e10cSrcweir aOKBT(this, BibResId( BT_OK )),
619cdf0e10cSrcweir aCancelBT(this, BibResId( BT_CANCEL )),
620cdf0e10cSrcweir aHelpBT(this, BibResId( BT_HELP )),
621cdf0e10cSrcweir aSelectionGB(this, BibResId( GB_SELECTION )),
622cdf0e10cSrcweir aSelectionLB(this, BibResId( LB_SELECTION )),
623cdf0e10cSrcweir aSelectionHB(this, BibResId( HB_SELECTION )),
624cdf0e10cSrcweir aEntryST(BibResId(ST_ENTRY)),
625cdf0e10cSrcweir aURLST( BibResId(ST_URL)),
626cdf0e10cSrcweir pDatMan(pMan)
627cdf0e10cSrcweir {
628cdf0e10cSrcweir FreeResource();
629cdf0e10cSrcweir aSelectionLB.SetDoubleClickHdl( LINK(this, DBChangeDialog_Impl, DoubleClickHdl));
630cdf0e10cSrcweir try
631cdf0e10cSrcweir {
632cdf0e10cSrcweir Reference< XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
633cdf0e10cSrcweir
634cdf0e10cSrcweir ::Size aSize = aSelectionHB.GetSizePixel();
635cdf0e10cSrcweir long nTabs[2];
636cdf0e10cSrcweir nTabs[0] = 1;// Number of Tabs
637cdf0e10cSrcweir nTabs[1] = aSize.Width() / 4;
638cdf0e10cSrcweir
639cdf0e10cSrcweir aSelectionHB.SetStyle(aSelectionHB.GetStyle()|WB_STDHEADERBAR);
640cdf0e10cSrcweir aSelectionHB.InsertItem( 1, aEntryST, aSize.Width());
641cdf0e10cSrcweir aSelectionHB.SetSizePixel(aSelectionHB.CalcWindowSizePixel());
642cdf0e10cSrcweir aSelectionHB.Show();
643cdf0e10cSrcweir
644cdf0e10cSrcweir aSelectionLB.SetTabs( &nTabs[0], MAP_PIXEL );
645cdf0e10cSrcweir aSelectionLB.SetStyle(aSelectionLB.GetStyle()|WB_CLIPCHILDREN|WB_SORT);
646cdf0e10cSrcweir aSelectionLB.GetModel()->SetSortMode(SortAscending);
647cdf0e10cSrcweir
648cdf0e10cSrcweir ::rtl::OUString sActiveSource = pDatMan->getActiveDataSource();
649cdf0e10cSrcweir const Sequence< ::rtl::OUString >& rSources = aConfig.GetDataSourceNames();
650cdf0e10cSrcweir const ::rtl::OUString* pSourceNames = rSources.getConstArray();
651cdf0e10cSrcweir for(int i = 0; i < rSources.getLength(); i++)
652cdf0e10cSrcweir {
653cdf0e10cSrcweir SvLBoxEntry* pEntry = aSelectionLB.InsertEntry(pSourceNames[i]);
654cdf0e10cSrcweir if(pSourceNames[i] == sActiveSource)
655cdf0e10cSrcweir {
656cdf0e10cSrcweir aSelectionLB.Select(pEntry);
657cdf0e10cSrcweir }
658cdf0e10cSrcweir }
659cdf0e10cSrcweir aSelectionLB.GetModel()->Resort();
660cdf0e10cSrcweir }
661cdf0e10cSrcweir catch(Exception& e )
662cdf0e10cSrcweir {
663cdf0e10cSrcweir (void) e; // make compiler happy
664cdf0e10cSrcweir DBG_ERROR("Exception in BibDataManager::DBChangeDialog_Impl::DBChangeDialog_Impl");
665cdf0e10cSrcweir }
666cdf0e10cSrcweir
667cdf0e10cSrcweir
668cdf0e10cSrcweir }
669cdf0e10cSrcweir /* -----------------06.12.99 12:09-------------------
670cdf0e10cSrcweir
671cdf0e10cSrcweir --------------------------------------------------*/
672cdf0e10cSrcweir IMPL_LINK(DBChangeDialog_Impl, DoubleClickHdl, SvTabListBox*, /*pLB*/)
673cdf0e10cSrcweir {
674cdf0e10cSrcweir EndDialog(RET_OK);
675cdf0e10cSrcweir return 0;
676cdf0e10cSrcweir }
677cdf0e10cSrcweir /* -----------------18.11.99 11:17-------------------
678cdf0e10cSrcweir
679cdf0e10cSrcweir --------------------------------------------------*/
680cdf0e10cSrcweir /*IMPL_LINK(DBChangeDialog_Impl, EndDragHdl, HeaderBar*, pHB)
681cdf0e10cSrcweir {
682cdf0e10cSrcweir long nTabs[3];
683cdf0e10cSrcweir nTabs[0] = 2;// Number of Tabs
684cdf0e10cSrcweir nTabs[1] = 0;
685cdf0e10cSrcweir nTabs[2] = pHB->GetItemSize( 1 );
686cdf0e10cSrcweir aSelectionLB.SetTabs( &nTabs[0], MAP_PIXEL );
687cdf0e10cSrcweir return 0;
688cdf0e10cSrcweir };*/
689cdf0e10cSrcweir
690cdf0e10cSrcweir /*-- 18.11.99 10:35:20---------------------------------------------------
691cdf0e10cSrcweir
692cdf0e10cSrcweir -----------------------------------------------------------------------*/
~DBChangeDialog_Impl()693cdf0e10cSrcweir DBChangeDialog_Impl::~DBChangeDialog_Impl()
694cdf0e10cSrcweir {
695cdf0e10cSrcweir }
696cdf0e10cSrcweir /* -----------------18.11.99 12:36-------------------
697cdf0e10cSrcweir
698cdf0e10cSrcweir --------------------------------------------------*/
GetCurrentURL() const699cdf0e10cSrcweir String DBChangeDialog_Impl::GetCurrentURL()const
700cdf0e10cSrcweir {
701cdf0e10cSrcweir String sRet;
702cdf0e10cSrcweir SvLBoxEntry* pEntry = aSelectionLB.FirstSelected();
703cdf0e10cSrcweir if(pEntry)
704cdf0e10cSrcweir {
705cdf0e10cSrcweir sRet = aSelectionLB.GetEntryText(pEntry, 0);
706cdf0e10cSrcweir }
707cdf0e10cSrcweir return sRet;
708cdf0e10cSrcweir }
709cdf0e10cSrcweir
710cdf0e10cSrcweir // #100312# --------------------------------------------------------------------
711cdf0e10cSrcweir // XDispatchProvider
BibInterceptorHelper(::bib::BibBeamer * pBibBeamer,::com::sun::star::uno::Reference<::com::sun::star::frame::XDispatch> xDispatch)712cdf0e10cSrcweir BibInterceptorHelper::BibInterceptorHelper( ::bib::BibBeamer* pBibBeamer, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch)
713cdf0e10cSrcweir {
714cdf0e10cSrcweir if( pBibBeamer )
715cdf0e10cSrcweir {
716cdf0e10cSrcweir xInterception = pBibBeamer->getDispatchProviderInterception();
717cdf0e10cSrcweir if( xInterception.is() )
718cdf0e10cSrcweir xInterception->registerDispatchProviderInterceptor( this );
719cdf0e10cSrcweir }
720cdf0e10cSrcweir if( xDispatch.is() )
721cdf0e10cSrcweir xFormDispatch = xDispatch;
722cdf0e10cSrcweir }
723cdf0e10cSrcweir
~BibInterceptorHelper()724cdf0e10cSrcweir BibInterceptorHelper::~BibInterceptorHelper( )
725cdf0e10cSrcweir {
726cdf0e10cSrcweir }
727cdf0e10cSrcweir
ReleaseInterceptor()728cdf0e10cSrcweir void BibInterceptorHelper::ReleaseInterceptor()
729cdf0e10cSrcweir {
730cdf0e10cSrcweir if ( xInterception.is() )
731cdf0e10cSrcweir xInterception->releaseDispatchProviderInterceptor( this );
732cdf0e10cSrcweir xInterception.clear();
733cdf0e10cSrcweir }
734cdf0e10cSrcweir
735cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL
queryDispatch(const::com::sun::star::util::URL & aURL,const::rtl::OUString & aTargetFrameName,sal_Int32 nSearchFlags)736cdf0e10cSrcweir BibInterceptorHelper::queryDispatch( const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags ) throw (::com::sun::star::uno::RuntimeException)
737cdf0e10cSrcweir {
738cdf0e10cSrcweir Reference< XDispatch > xReturn;
739cdf0e10cSrcweir
740cdf0e10cSrcweir String aCommand( aURL.Path );
741cdf0e10cSrcweir if ( aCommand.EqualsAscii("FormSlots/ConfirmDeletion") )
742cdf0e10cSrcweir xReturn = xFormDispatch;
743cdf0e10cSrcweir else
744cdf0e10cSrcweir if ( xSlaveDispatchProvider.is() )
745cdf0e10cSrcweir xReturn = xSlaveDispatchProvider->queryDispatch( aURL, aTargetFrameName, nSearchFlags);
746cdf0e10cSrcweir
747cdf0e10cSrcweir return xReturn;
748cdf0e10cSrcweir }
749cdf0e10cSrcweir
750cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > > SAL_CALL
queryDispatches(const::com::sun::star::uno::Sequence<::com::sun::star::frame::DispatchDescriptor> & aDescripts)751cdf0e10cSrcweir BibInterceptorHelper::queryDispatches( const ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw (::com::sun::star::uno::RuntimeException)
752cdf0e10cSrcweir {
753cdf0e10cSrcweir Sequence< Reference< XDispatch> > aReturn( aDescripts.getLength() );
754cdf0e10cSrcweir Reference< XDispatch >* pReturn = aReturn.getArray();
755cdf0e10cSrcweir const DispatchDescriptor* pDescripts = aDescripts.getConstArray();
756cdf0e10cSrcweir for ( sal_Int16 i=0; i<aDescripts.getLength(); ++i, ++pReturn, ++pDescripts )
757cdf0e10cSrcweir {
758cdf0e10cSrcweir *pReturn = queryDispatch( pDescripts->FeatureURL, pDescripts->FrameName, pDescripts->SearchFlags );
759cdf0e10cSrcweir }
760cdf0e10cSrcweir return aReturn;
761cdf0e10cSrcweir }
762cdf0e10cSrcweir
763cdf0e10cSrcweir // XDispatchProviderInterceptor
764cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL
getSlaveDispatchProvider()765cdf0e10cSrcweir BibInterceptorHelper::getSlaveDispatchProvider( ) throw (::com::sun::star::uno::RuntimeException)
766cdf0e10cSrcweir {
767cdf0e10cSrcweir return xSlaveDispatchProvider;
768cdf0e10cSrcweir }
769cdf0e10cSrcweir
setSlaveDispatchProvider(const::com::sun::star::uno::Reference<::com::sun::star::frame::XDispatchProvider> & xNewSlaveDispatchProvider)770cdf0e10cSrcweir void SAL_CALL BibInterceptorHelper::setSlaveDispatchProvider( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& xNewSlaveDispatchProvider ) throw (::com::sun::star::uno::RuntimeException)
771cdf0e10cSrcweir {
772cdf0e10cSrcweir xSlaveDispatchProvider = xNewSlaveDispatchProvider;
773cdf0e10cSrcweir }
774cdf0e10cSrcweir
775cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL
getMasterDispatchProvider()776cdf0e10cSrcweir BibInterceptorHelper::getMasterDispatchProvider( ) throw (::com::sun::star::uno::RuntimeException)
777cdf0e10cSrcweir {
778cdf0e10cSrcweir return xMasterDispatchProvider;
779cdf0e10cSrcweir }
780cdf0e10cSrcweir
setMasterDispatchProvider(const::com::sun::star::uno::Reference<::com::sun::star::frame::XDispatchProvider> & xNewMasterDispatchProvider)781cdf0e10cSrcweir void SAL_CALL BibInterceptorHelper::setMasterDispatchProvider( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& xNewMasterDispatchProvider ) throw (::com::sun::star::uno::RuntimeException)
782cdf0e10cSrcweir {
783cdf0e10cSrcweir xMasterDispatchProvider = xNewMasterDispatchProvider;
784cdf0e10cSrcweir }
785cdf0e10cSrcweir
786cdf0e10cSrcweir //-----------------------------------------------------------------------------
787cdf0e10cSrcweir #define STR_UID "uid"
788cdf0e10cSrcweir ::rtl::OUString gGridName(C2U("theGrid"));
789cdf0e10cSrcweir ::rtl::OUString gViewName(C2U("theView"));
790cdf0e10cSrcweir ::rtl::OUString gGlobalName(C2U("theGlobals"));
791cdf0e10cSrcweir ::rtl::OUString gBeamerSize(C2U("theBeamerSize"));
792cdf0e10cSrcweir ::rtl::OUString gViewSize(C2U("theViewSize"));
793cdf0e10cSrcweir
BibDataManager()794cdf0e10cSrcweir BibDataManager::BibDataManager()
795cdf0e10cSrcweir :BibDataManager_Base( GetMutex() )
796cdf0e10cSrcweir // #100312# --------------
797cdf0e10cSrcweir ,m_pInterceptorHelper( NULL )
798cdf0e10cSrcweir ,m_aLoadListeners(m_aMutex)
799cdf0e10cSrcweir ,pBibView( NULL )
800cdf0e10cSrcweir ,pToolbar(0)
801cdf0e10cSrcweir {
802cdf0e10cSrcweir }
803cdf0e10cSrcweir
804cdf0e10cSrcweir /* --------------------------------------------------
805cdf0e10cSrcweir
806cdf0e10cSrcweir --------------------------------------------------*/
~BibDataManager()807cdf0e10cSrcweir BibDataManager::~BibDataManager()
808cdf0e10cSrcweir {
809cdf0e10cSrcweir Reference< XLoadable > xLoad( m_xForm, UNO_QUERY );
810cdf0e10cSrcweir Reference< XPropertySet > xPrSet( m_xForm, UNO_QUERY );
811cdf0e10cSrcweir Reference< XComponent > xComp( m_xForm, UNO_QUERY );
812cdf0e10cSrcweir if ( m_xForm.is() )
813cdf0e10cSrcweir {
814cdf0e10cSrcweir Reference< XComponent > xConnection;
815cdf0e10cSrcweir xPrSet->getPropertyValue(C2U("ActiveConnection")) >>= xConnection;
816cdf0e10cSrcweir RemoveMeAsUidListener();
817cdf0e10cSrcweir if (xLoad.is())
818cdf0e10cSrcweir xLoad->unload();
819cdf0e10cSrcweir if (xComp.is())
820cdf0e10cSrcweir xComp->dispose();
821cdf0e10cSrcweir if(xConnection.is())
822cdf0e10cSrcweir xConnection->dispose();
823cdf0e10cSrcweir m_xForm = NULL;
824cdf0e10cSrcweir }
825cdf0e10cSrcweir // #100312# ----------------
826cdf0e10cSrcweir if( m_pInterceptorHelper )
827cdf0e10cSrcweir {
828cdf0e10cSrcweir m_pInterceptorHelper->ReleaseInterceptor();
829cdf0e10cSrcweir m_pInterceptorHelper->release();
830cdf0e10cSrcweir m_pInterceptorHelper = NULL;
831cdf0e10cSrcweir }
832cdf0e10cSrcweir }
833cdf0e10cSrcweir //------------------------------------------------------------------------
InsertFields(const Reference<XFormComponent> & _rxGrid)834cdf0e10cSrcweir void BibDataManager::InsertFields(const Reference< XFormComponent > & _rxGrid)
835cdf0e10cSrcweir {
836cdf0e10cSrcweir if ( !_rxGrid.is() )
837cdf0e10cSrcweir return;
838cdf0e10cSrcweir
839cdf0e10cSrcweir try
840cdf0e10cSrcweir {
841cdf0e10cSrcweir Reference< XNameContainer > xColContainer( _rxGrid, UNO_QUERY );
842cdf0e10cSrcweir // remove the old fields
843cdf0e10cSrcweir if ( xColContainer->hasElements() )
844cdf0e10cSrcweir {
845cdf0e10cSrcweir Sequence< ::rtl::OUString > aNames = xColContainer->getElementNames();
846cdf0e10cSrcweir const ::rtl::OUString* pNames = aNames.getConstArray();
847cdf0e10cSrcweir const ::rtl::OUString* pNamesEnd = pNames + aNames.getLength();
848cdf0e10cSrcweir for ( ; pNames != pNamesEnd; ++pNames )
849cdf0e10cSrcweir xColContainer->removeByName( *pNames );
850cdf0e10cSrcweir }
851cdf0e10cSrcweir
852cdf0e10cSrcweir Reference< XNameAccess > xFields = getColumns( m_xForm );
853cdf0e10cSrcweir if (!xFields.is())
854cdf0e10cSrcweir return;
855cdf0e10cSrcweir
856cdf0e10cSrcweir Reference< XGridColumnFactory > xColFactory( _rxGrid, UNO_QUERY );
857cdf0e10cSrcweir
858cdf0e10cSrcweir Reference< XPropertySet > xField;
859cdf0e10cSrcweir
860cdf0e10cSrcweir Sequence< ::rtl::OUString > aFields( xFields->getElementNames() );
861cdf0e10cSrcweir const ::rtl::OUString* pFields = aFields.getConstArray();
862cdf0e10cSrcweir const ::rtl::OUString* pFieldsEnd = pFields + aFields.getLength();
863cdf0e10cSrcweir
864cdf0e10cSrcweir for ( ; pFields != pFieldsEnd; ++pFields )
865cdf0e10cSrcweir {
866cdf0e10cSrcweir xFields->getByName( *pFields ) >>= xField;
867cdf0e10cSrcweir
868cdf0e10cSrcweir ::rtl::OUString sCurrentModelType;
869cdf0e10cSrcweir const ::rtl::OUString sType(C2U("Type"));
870cdf0e10cSrcweir sal_Int32 nType = 0;
871cdf0e10cSrcweir sal_Bool bIsFormatted = sal_False;
872cdf0e10cSrcweir sal_Bool bFormattedIsNumeric = sal_True;
873cdf0e10cSrcweir xField->getPropertyValue(sType) >>= nType;
874cdf0e10cSrcweir switch(nType)
875cdf0e10cSrcweir {
876cdf0e10cSrcweir case DataType::BIT:
877cdf0e10cSrcweir case DataType::BOOLEAN:
878cdf0e10cSrcweir sCurrentModelType = C2U("CheckBox");
879cdf0e10cSrcweir break;
880cdf0e10cSrcweir
881cdf0e10cSrcweir case DataType::BINARY:
882cdf0e10cSrcweir case DataType::VARBINARY:
883cdf0e10cSrcweir case DataType::LONGVARBINARY:
884cdf0e10cSrcweir case DataType::BLOB:
885cdf0e10cSrcweir sCurrentModelType = C2U("TextField");
886cdf0e10cSrcweir break;
887cdf0e10cSrcweir
888cdf0e10cSrcweir case DataType::VARCHAR:
889cdf0e10cSrcweir case DataType::LONGVARCHAR:
890cdf0e10cSrcweir case DataType::CHAR:
891cdf0e10cSrcweir case DataType::CLOB:
892cdf0e10cSrcweir bFormattedIsNumeric = sal_False;
893cdf0e10cSrcweir // _NO_ break !
894cdf0e10cSrcweir default:
895cdf0e10cSrcweir sCurrentModelType = C2U("FormattedField");
896cdf0e10cSrcweir bIsFormatted = sal_True;
897cdf0e10cSrcweir break;
898cdf0e10cSrcweir }
899cdf0e10cSrcweir
900cdf0e10cSrcweir Reference< XPropertySet > xCurrentCol = xColFactory->createColumn(sCurrentModelType);
901cdf0e10cSrcweir if (bIsFormatted)
902cdf0e10cSrcweir {
903cdf0e10cSrcweir ::rtl::OUString sFormatKey(C2U("FormatKey"));
904cdf0e10cSrcweir xCurrentCol->setPropertyValue(sFormatKey, xField->getPropertyValue(sFormatKey));
905cdf0e10cSrcweir Any aFormatted(&bFormattedIsNumeric, ::getBooleanCppuType());
906cdf0e10cSrcweir xCurrentCol->setPropertyValue(C2U("TreatAsNumber"), aFormatted);
907cdf0e10cSrcweir }
908cdf0e10cSrcweir Any aColName = makeAny( *pFields );
909cdf0e10cSrcweir xCurrentCol->setPropertyValue(FM_PROP_CONTROLSOURCE, aColName);
910cdf0e10cSrcweir xCurrentCol->setPropertyValue(FM_PROP_LABEL, aColName);
911cdf0e10cSrcweir
912cdf0e10cSrcweir xColContainer->insertByName( *pFields, makeAny( xCurrentCol ) );
913cdf0e10cSrcweir }
914cdf0e10cSrcweir }
915cdf0e10cSrcweir catch(Exception& e )
916cdf0e10cSrcweir {
917cdf0e10cSrcweir (void) e; // make compiler happy
918cdf0e10cSrcweir DBG_ERROR("Exception in BibDataManager::InsertFields");
919cdf0e10cSrcweir }
920cdf0e10cSrcweir }
921cdf0e10cSrcweir /* --------------------------------------------------
922cdf0e10cSrcweir
923cdf0e10cSrcweir --------------------------------------------------*/
updateGridModel()924cdf0e10cSrcweir Reference< awt::XControlModel > BibDataManager::updateGridModel()
925cdf0e10cSrcweir {
926cdf0e10cSrcweir return updateGridModel( m_xForm );
927cdf0e10cSrcweir }
928cdf0e10cSrcweir /* --------------------------------------------------
929cdf0e10cSrcweir
930cdf0e10cSrcweir --------------------------------------------------*/
updateGridModel(const Reference<XForm> & xDbForm)931cdf0e10cSrcweir Reference< awt::XControlModel > BibDataManager::updateGridModel(const Reference< XForm > & xDbForm)
932cdf0e10cSrcweir {
933cdf0e10cSrcweir try
934cdf0e10cSrcweir {
935cdf0e10cSrcweir Reference< XPropertySet > aFormPropSet( xDbForm, UNO_QUERY );
936cdf0e10cSrcweir ::rtl::OUString sName;
937cdf0e10cSrcweir aFormPropSet->getPropertyValue(C2U("Command")) >>= sName;
938cdf0e10cSrcweir
939cdf0e10cSrcweir if ( !m_xGridModel.is() )
940cdf0e10cSrcweir {
941cdf0e10cSrcweir m_xGridModel = createGridModel( gGridName );
942cdf0e10cSrcweir
943cdf0e10cSrcweir Reference< XNameContainer > xNameCont(xDbForm, UNO_QUERY);
944cdf0e10cSrcweir // if (xNameCont->hasByName(sName))
945cdf0e10cSrcweir // xNameCont->removeByName(sName);
946cdf0e10cSrcweir //
947cdf0e10cSrcweir xNameCont->insertByName( sName, makeAny( m_xGridModel ) );
948cdf0e10cSrcweir }
949cdf0e10cSrcweir
950cdf0e10cSrcweir // insert the fields
951cdf0e10cSrcweir Reference< XFormComponent > xFormComp( m_xGridModel, UNO_QUERY );
952cdf0e10cSrcweir InsertFields( xFormComp );
953cdf0e10cSrcweir }
954cdf0e10cSrcweir catch(Exception& e )
955cdf0e10cSrcweir {
956cdf0e10cSrcweir (void) e; // make compiler happy
957cdf0e10cSrcweir DBG_ERROR("::updateGridModel: something went wrong !");
958cdf0e10cSrcweir }
959cdf0e10cSrcweir
960cdf0e10cSrcweir
961cdf0e10cSrcweir return m_xGridModel;
962cdf0e10cSrcweir }
963cdf0e10cSrcweir /* --------------------------------------------------
964cdf0e10cSrcweir
965cdf0e10cSrcweir --------------------------------------------------*/
createDatabaseForm(BibDBDescriptor & rDesc)966cdf0e10cSrcweir Reference< XForm > BibDataManager::createDatabaseForm(BibDBDescriptor& rDesc)
967cdf0e10cSrcweir {
968cdf0e10cSrcweir Reference< XForm > xResult;
969cdf0e10cSrcweir try
970cdf0e10cSrcweir {
971cdf0e10cSrcweir Reference< XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
972cdf0e10cSrcweir m_xForm = Reference< XForm > ( xMgr->createInstance( C2U("com.sun.star.form.component.Form") ), UNO_QUERY );
973cdf0e10cSrcweir
974cdf0e10cSrcweir Reference< XPropertySet > aPropertySet( m_xForm, UNO_QUERY );
975cdf0e10cSrcweir
976cdf0e10cSrcweir aDataSourceURL = rDesc.sDataSource;
977cdf0e10cSrcweir if(aPropertySet.is())
978cdf0e10cSrcweir {
979cdf0e10cSrcweir Any aVal;
980cdf0e10cSrcweir aVal <<= (sal_Int32)ResultSetType::SCROLL_INSENSITIVE;
981cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("ResultSetType"),aVal );
982cdf0e10cSrcweir aVal <<= (sal_Int32)ResultSetConcurrency::READ_ONLY;
983cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("ResultSetConcurrency"), aVal);
984cdf0e10cSrcweir
985cdf0e10cSrcweir //Caching for Performance
986cdf0e10cSrcweir aVal <<= (sal_Int32)50;
987cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("FetchSize"), aVal);
988cdf0e10cSrcweir
989cdf0e10cSrcweir Reference< XConnection > xConnection = getConnection(rDesc.sDataSource);
990cdf0e10cSrcweir aVal <<= xConnection;
991cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("ActiveConnection"), aVal);
992cdf0e10cSrcweir
993cdf0e10cSrcweir Reference< XTablesSupplier > xSupplyTables(xConnection, UNO_QUERY);
994cdf0e10cSrcweir Reference< XNameAccess > xTables = xSupplyTables.is() ?
995cdf0e10cSrcweir xSupplyTables->getTables() : Reference< XNameAccess > ();
996cdf0e10cSrcweir
997cdf0e10cSrcweir Sequence< ::rtl::OUString > aTableNameSeq;
998cdf0e10cSrcweir if (xTables.is())
999cdf0e10cSrcweir aTableNameSeq = xTables->getElementNames();
1000cdf0e10cSrcweir
1001cdf0e10cSrcweir if(aTableNameSeq.getLength() > 0)
1002cdf0e10cSrcweir {
1003cdf0e10cSrcweir const ::rtl::OUString* pTableNames = aTableNameSeq.getConstArray();
1004cdf0e10cSrcweir if(rDesc.sTableOrQuery.getLength())
1005cdf0e10cSrcweir aActiveDataTable = rDesc.sTableOrQuery;
1006cdf0e10cSrcweir else
1007cdf0e10cSrcweir {
1008cdf0e10cSrcweir rDesc.sTableOrQuery = aActiveDataTable = pTableNames[0];
1009cdf0e10cSrcweir rDesc.nCommandType = CommandType::TABLE;
1010cdf0e10cSrcweir }
1011cdf0e10cSrcweir
1012cdf0e10cSrcweir aVal <<= aActiveDataTable;
1013cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("Command"), aVal);
1014cdf0e10cSrcweir aVal <<= rDesc.nCommandType;
1015cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("CommandType"), aVal);
1016cdf0e10cSrcweir
1017cdf0e10cSrcweir
1018cdf0e10cSrcweir Reference< XDatabaseMetaData > xMetaData = xConnection->getMetaData();
1019cdf0e10cSrcweir aQuoteChar = xMetaData->getIdentifierQuoteString();
1020cdf0e10cSrcweir
1021cdf0e10cSrcweir Reference< XMultiServiceFactory > xFactory(xConnection, UNO_QUERY);
1022cdf0e10cSrcweir if ( xFactory.is() )
1023cdf0e10cSrcweir m_xParser.set( xFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.SingleSelectQueryComposer" ) ) ), UNO_QUERY );
1024cdf0e10cSrcweir
1025cdf0e10cSrcweir ::rtl::OUString aString(C2U("SELECT * FROM "));
1026cdf0e10cSrcweir
1027cdf0e10cSrcweir ::rtl::OUString sCatalog, sSchema, sName;
1028cdf0e10cSrcweir ::dbtools::qualifiedNameComponents( xMetaData, aActiveDataTable, sCatalog, sSchema, sName, ::dbtools::eInDataManipulation );
1029cdf0e10cSrcweir aString += ::dbtools::composeTableNameForSelect( xConnection, sCatalog, sSchema, sName );
1030cdf0e10cSrcweir
1031cdf0e10cSrcweir m_xParser->setElementaryQuery(aString);
1032cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
1033cdf0e10cSrcweir pConfig->setQueryField(getQueryField());
1034cdf0e10cSrcweir startQueryWith(pConfig->getQueryText());
1035cdf0e10cSrcweir
1036cdf0e10cSrcweir xResult = m_xForm;
1037cdf0e10cSrcweir }
1038cdf0e10cSrcweir }
1039cdf0e10cSrcweir }
1040cdf0e10cSrcweir catch(Exception& e )
1041cdf0e10cSrcweir {
1042cdf0e10cSrcweir (void) e; // make compiler happy
1043cdf0e10cSrcweir DBG_ERROR("::createDatabaseForm: something went wrong !");
1044cdf0e10cSrcweir }
1045cdf0e10cSrcweir
1046cdf0e10cSrcweir
1047cdf0e10cSrcweir return xResult;
1048cdf0e10cSrcweir }
1049cdf0e10cSrcweir //------------------------------------------------------------------------
getDataSources()1050cdf0e10cSrcweir Sequence< ::rtl::OUString > BibDataManager::getDataSources()
1051cdf0e10cSrcweir {
1052cdf0e10cSrcweir Sequence< ::rtl::OUString > aTableNameSeq;
1053cdf0e10cSrcweir
1054cdf0e10cSrcweir try
1055cdf0e10cSrcweir {
1056cdf0e10cSrcweir Reference< XTablesSupplier > xSupplyTables( getConnection( m_xForm ), UNO_QUERY );
1057cdf0e10cSrcweir Reference< XNameAccess > xTables;
1058cdf0e10cSrcweir if (xSupplyTables.is())
1059cdf0e10cSrcweir xTables = xSupplyTables->getTables();
1060cdf0e10cSrcweir if (xTables.is())
1061cdf0e10cSrcweir aTableNameSeq = xTables->getElementNames();
1062cdf0e10cSrcweir }
1063cdf0e10cSrcweir catch(Exception& e )
1064cdf0e10cSrcweir {
1065cdf0e10cSrcweir (void) e; // make compiler happy
1066cdf0e10cSrcweir DBG_ERROR("::getDataSources: something went wrong !");
1067cdf0e10cSrcweir }
1068cdf0e10cSrcweir
1069cdf0e10cSrcweir
1070cdf0e10cSrcweir return aTableNameSeq;
1071cdf0e10cSrcweir }
1072cdf0e10cSrcweir //------------------------------------------------------------------------
getActiveDataTable()1073cdf0e10cSrcweir ::rtl::OUString BibDataManager::getActiveDataTable()
1074cdf0e10cSrcweir {
1075cdf0e10cSrcweir return aActiveDataTable;
1076cdf0e10cSrcweir }
1077cdf0e10cSrcweir //------------------------------------------------------------------------
setFilter(const::rtl::OUString & rQuery)1078cdf0e10cSrcweir void BibDataManager::setFilter(const ::rtl::OUString& rQuery)
1079cdf0e10cSrcweir {
1080cdf0e10cSrcweir if(!m_xParser.is())
1081cdf0e10cSrcweir return;
1082cdf0e10cSrcweir try
1083cdf0e10cSrcweir {
1084cdf0e10cSrcweir m_xParser->setFilter( rQuery );
1085cdf0e10cSrcweir ::rtl::OUString aQuery = m_xParser->getFilter();
1086cdf0e10cSrcweir Reference< XPropertySet > xFormProps( m_xForm, UNO_QUERY_THROW );
1087cdf0e10cSrcweir xFormProps->setPropertyValue( C2U( "Filter" ), makeAny( aQuery ) );
1088cdf0e10cSrcweir xFormProps->setPropertyValue( C2U( "ApplyFilter" ), makeAny( sal_True ) );
1089cdf0e10cSrcweir reload();
1090cdf0e10cSrcweir }
1091cdf0e10cSrcweir catch(Exception& e )
1092cdf0e10cSrcweir {
1093cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION();
1094cdf0e10cSrcweir }
1095cdf0e10cSrcweir
1096cdf0e10cSrcweir
1097cdf0e10cSrcweir }
1098cdf0e10cSrcweir //------------------------------------------------------------------------
getFilter()1099cdf0e10cSrcweir ::rtl::OUString BibDataManager::getFilter()
1100cdf0e10cSrcweir {
1101cdf0e10cSrcweir
1102cdf0e10cSrcweir ::rtl::OUString aQueryString;
1103cdf0e10cSrcweir try
1104cdf0e10cSrcweir {
1105cdf0e10cSrcweir Reference< XPropertySet > xFormProps( m_xForm, UNO_QUERY_THROW );
1106cdf0e10cSrcweir OSL_VERIFY( xFormProps->getPropertyValue( C2U( "Filter" ) ) >>= aQueryString );
1107cdf0e10cSrcweir }
1108cdf0e10cSrcweir catch( const Exception& )
1109cdf0e10cSrcweir {
1110cdf0e10cSrcweir DBG_UNHANDLED_EXCEPTION();
1111cdf0e10cSrcweir }
1112cdf0e10cSrcweir
1113cdf0e10cSrcweir
1114cdf0e10cSrcweir return aQueryString;
1115cdf0e10cSrcweir
1116cdf0e10cSrcweir }
1117cdf0e10cSrcweir //------------------------------------------------------------------------
getQueryFields()1118cdf0e10cSrcweir Sequence< ::rtl::OUString > BibDataManager::getQueryFields()
1119cdf0e10cSrcweir {
1120cdf0e10cSrcweir Sequence< ::rtl::OUString > aFieldSeq;
1121cdf0e10cSrcweir Reference< XNameAccess > xFields = getColumns( m_xForm );
1122cdf0e10cSrcweir if (xFields.is())
1123cdf0e10cSrcweir aFieldSeq = xFields->getElementNames();
1124cdf0e10cSrcweir return aFieldSeq;
1125cdf0e10cSrcweir }
1126cdf0e10cSrcweir //------------------------------------------------------------------------
getQueryField()1127cdf0e10cSrcweir ::rtl::OUString BibDataManager::getQueryField()
1128cdf0e10cSrcweir {
1129cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
1130cdf0e10cSrcweir ::rtl::OUString aFieldString = pConfig->getQueryField();
1131cdf0e10cSrcweir if(!aFieldString.getLength())
1132cdf0e10cSrcweir {
1133cdf0e10cSrcweir Sequence< ::rtl::OUString > aSeq = getQueryFields();
1134cdf0e10cSrcweir const ::rtl::OUString* pFields = aSeq.getConstArray();
1135cdf0e10cSrcweir if(aSeq.getLength()>0)
1136cdf0e10cSrcweir {
1137cdf0e10cSrcweir aFieldString=pFields[0];
1138cdf0e10cSrcweir }
1139cdf0e10cSrcweir }
1140cdf0e10cSrcweir return aFieldString;
1141cdf0e10cSrcweir }
1142cdf0e10cSrcweir //------------------------------------------------------------------------
startQueryWith(const::rtl::OUString & rQuery)1143cdf0e10cSrcweir void BibDataManager::startQueryWith(const ::rtl::OUString& rQuery)
1144cdf0e10cSrcweir {
1145cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
1146cdf0e10cSrcweir pConfig->setQueryText( rQuery );
1147cdf0e10cSrcweir
1148cdf0e10cSrcweir ::rtl::OUString aQueryString;
1149cdf0e10cSrcweir if(rQuery.getLength()>0)
1150cdf0e10cSrcweir {
1151cdf0e10cSrcweir aQueryString=aQuoteChar;
1152cdf0e10cSrcweir aQueryString+=getQueryField();
1153cdf0e10cSrcweir aQueryString+=aQuoteChar;
1154cdf0e10cSrcweir aQueryString+=C2U(" like '");
1155cdf0e10cSrcweir String sQuery(rQuery);
1156cdf0e10cSrcweir sQuery.SearchAndReplaceAll('?','_');
1157cdf0e10cSrcweir sQuery.SearchAndReplaceAll('*','%');
1158cdf0e10cSrcweir aQueryString += sQuery;
1159cdf0e10cSrcweir aQueryString+=C2U("%'");
1160cdf0e10cSrcweir }
1161cdf0e10cSrcweir setFilter(aQueryString);
1162cdf0e10cSrcweir }
1163cdf0e10cSrcweir /* -----------------03.12.99 15:05-------------------
1164cdf0e10cSrcweir
1165cdf0e10cSrcweir --------------------------------------------------*/
setActiveDataSource(const::rtl::OUString & rURL)1166cdf0e10cSrcweir void BibDataManager::setActiveDataSource(const ::rtl::OUString& rURL)
1167cdf0e10cSrcweir {
1168cdf0e10cSrcweir ::rtl::OUString uTable;
1169cdf0e10cSrcweir ::rtl::OUString sTmp(aDataSourceURL);
1170cdf0e10cSrcweir aDataSourceURL = rURL;
1171cdf0e10cSrcweir
1172cdf0e10cSrcweir Reference< XPropertySet > aPropertySet( m_xForm, UNO_QUERY );
1173cdf0e10cSrcweir if(aPropertySet.is())
1174cdf0e10cSrcweir {
1175cdf0e10cSrcweir unload();
1176cdf0e10cSrcweir
1177cdf0e10cSrcweir Reference< XComponent > xOldConnection;
1178cdf0e10cSrcweir aPropertySet->getPropertyValue(C2U("ActiveConnection")) >>= xOldConnection;
1179cdf0e10cSrcweir
1180cdf0e10cSrcweir Reference< XConnection > xConnection = getConnection(rURL);
1181cdf0e10cSrcweir if(!xConnection.is())
1182cdf0e10cSrcweir {
1183cdf0e10cSrcweir aDataSourceURL = sTmp;
1184cdf0e10cSrcweir return;
1185cdf0e10cSrcweir }
1186cdf0e10cSrcweir Any aVal; aVal <<= xConnection;
1187cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("ActiveConnection"), aVal);
1188cdf0e10cSrcweir Reference< XMultiServiceFactory > xFactory(xConnection, UNO_QUERY);
1189cdf0e10cSrcweir if ( xFactory.is() )
1190cdf0e10cSrcweir m_xParser.set( xFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.SingleSelectQueryComposer" ) ) ), UNO_QUERY );
1191cdf0e10cSrcweir
1192cdf0e10cSrcweir if(xOldConnection.is())
1193cdf0e10cSrcweir xOldConnection->dispose();
1194cdf0e10cSrcweir
1195cdf0e10cSrcweir Sequence< ::rtl::OUString > aTableNameSeq;
1196cdf0e10cSrcweir Reference< XTablesSupplier > xSupplyTables(xConnection, UNO_QUERY);
1197cdf0e10cSrcweir if(xSupplyTables.is())
1198cdf0e10cSrcweir {
1199cdf0e10cSrcweir Reference< XNameAccess > xAccess = xSupplyTables->getTables();
1200cdf0e10cSrcweir aTableNameSeq = xAccess->getElementNames();
1201cdf0e10cSrcweir }
1202cdf0e10cSrcweir if(aTableNameSeq.getLength() > 0)
1203cdf0e10cSrcweir {
1204cdf0e10cSrcweir const ::rtl::OUString* pTableNames = aTableNameSeq.getConstArray();
1205cdf0e10cSrcweir aActiveDataTable = pTableNames[0];
1206cdf0e10cSrcweir aVal <<= aActiveDataTable;
1207cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("Command"), aVal);
1208cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("CommandType"), makeAny(CommandType::TABLE));
1209cdf0e10cSrcweir //Caching for Performance
1210cdf0e10cSrcweir aVal <<= (sal_Int32)50;
1211cdf0e10cSrcweir aPropertySet->setPropertyValue(C2U("FetchSize"), aVal);
1212cdf0e10cSrcweir ::rtl::OUString aString(C2U("SELECT * FROM "));
1213cdf0e10cSrcweir // quote the table name which may contain catalog.schema.table
1214cdf0e10cSrcweir Reference<XDatabaseMetaData> xMetaData(xConnection->getMetaData(),UNO_QUERY);
1215cdf0e10cSrcweir aQuoteChar = xMetaData->getIdentifierQuoteString();
1216cdf0e10cSrcweir
1217cdf0e10cSrcweir ::rtl::OUString sCatalog, sSchema, sName;
1218cdf0e10cSrcweir ::dbtools::qualifiedNameComponents( xMetaData, aActiveDataTable, sCatalog, sSchema, sName, ::dbtools::eInDataManipulation );
1219cdf0e10cSrcweir aString += ::dbtools::composeTableNameForSelect( xConnection, sCatalog, sSchema, sName );
1220cdf0e10cSrcweir
1221cdf0e10cSrcweir m_xParser->setElementaryQuery(aString);
1222cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
1223cdf0e10cSrcweir pConfig->setQueryField(getQueryField());
1224cdf0e10cSrcweir startQueryWith(pConfig->getQueryText());
1225cdf0e10cSrcweir setActiveDataTable(aActiveDataTable);
1226cdf0e10cSrcweir }
1227cdf0e10cSrcweir FeatureStateEvent aEvent;
1228cdf0e10cSrcweir util::URL aURL;
1229cdf0e10cSrcweir aEvent.IsEnabled = sal_True;
1230cdf0e10cSrcweir aEvent.Requery = sal_False;
1231cdf0e10cSrcweir aEvent.FeatureDescriptor = getActiveDataTable();
1232cdf0e10cSrcweir
1233cdf0e10cSrcweir aEvent.State = makeAny( getDataSources() );
1234cdf0e10cSrcweir
1235cdf0e10cSrcweir if(pToolbar)
1236cdf0e10cSrcweir {
1237cdf0e10cSrcweir aURL.Complete =C2U(".uno:Bib/source");
1238cdf0e10cSrcweir aEvent.FeatureURL = aURL;
1239cdf0e10cSrcweir pToolbar->statusChanged( aEvent );
1240cdf0e10cSrcweir }
1241cdf0e10cSrcweir
1242cdf0e10cSrcweir updateGridModel();
1243cdf0e10cSrcweir load();
1244cdf0e10cSrcweir }
1245cdf0e10cSrcweir }
1246cdf0e10cSrcweir
1247cdf0e10cSrcweir /* --------------------------------------------------
1248cdf0e10cSrcweir
1249cdf0e10cSrcweir --------------------------------------------------*/
setActiveDataTable(const::rtl::OUString & rTable)1250cdf0e10cSrcweir void BibDataManager::setActiveDataTable(const ::rtl::OUString& rTable)
1251cdf0e10cSrcweir {
1252cdf0e10cSrcweir ResetIdentifierMapping();
1253cdf0e10cSrcweir try
1254cdf0e10cSrcweir {
1255cdf0e10cSrcweir Reference< XPropertySet > aPropertySet( m_xForm, UNO_QUERY );
1256cdf0e10cSrcweir
1257cdf0e10cSrcweir if(aPropertySet.is())
1258cdf0e10cSrcweir {
1259cdf0e10cSrcweir Reference< XConnection > xConnection = getConnection( m_xForm );
1260cdf0e10cSrcweir Reference< XTablesSupplier > xSupplyTables(xConnection, UNO_QUERY);
1261cdf0e10cSrcweir Reference< XNameAccess > xAccess = xSupplyTables->getTables();
1262cdf0e10cSrcweir Sequence< ::rtl::OUString > aTableNameSeq = xAccess->getElementNames();
1263cdf0e10cSrcweir sal_uInt32 nCount = aTableNameSeq.getLength();
1264cdf0e10cSrcweir
1265cdf0e10cSrcweir const ::rtl::OUString* pTableNames = aTableNameSeq.getConstArray();
1266cdf0e10cSrcweir const ::rtl::OUString* pTableNamesEnd = pTableNames + nCount;
1267cdf0e10cSrcweir
1268cdf0e10cSrcweir for ( ; pTableNames != pTableNamesEnd; ++pTableNames )
1269cdf0e10cSrcweir {
1270cdf0e10cSrcweir if ( rTable == *pTableNames )
1271cdf0e10cSrcweir {
1272cdf0e10cSrcweir aActiveDataTable = rTable;
1273cdf0e10cSrcweir Any aVal; aVal <<= rTable;
1274cdf0e10cSrcweir aPropertySet->setPropertyValue( C2U("Command"), aVal );
1275cdf0e10cSrcweir break;
1276cdf0e10cSrcweir }
1277cdf0e10cSrcweir }
1278cdf0e10cSrcweir if (pTableNames != pTableNamesEnd)
1279cdf0e10cSrcweir {
1280cdf0e10cSrcweir Reference< XDatabaseMetaData > xMetaData = xConnection->getMetaData();
1281cdf0e10cSrcweir aQuoteChar = xMetaData->getIdentifierQuoteString();
1282cdf0e10cSrcweir
1283cdf0e10cSrcweir Reference< XMultiServiceFactory > xFactory(xConnection, UNO_QUERY);
1284cdf0e10cSrcweir if ( xFactory.is() )
1285cdf0e10cSrcweir m_xParser.set( xFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.SingleSelectQueryComposer" ) ) ), UNO_QUERY );
1286cdf0e10cSrcweir
1287cdf0e10cSrcweir ::rtl::OUString aString(C2U("SELECT * FROM "));
1288cdf0e10cSrcweir
1289cdf0e10cSrcweir ::rtl::OUString sCatalog, sSchema, sName;
1290cdf0e10cSrcweir ::dbtools::qualifiedNameComponents( xMetaData, aActiveDataTable, sCatalog, sSchema, sName, ::dbtools::eInDataManipulation );
1291cdf0e10cSrcweir aString += ::dbtools::composeTableNameForSelect( xConnection, sCatalog, sSchema, sName );
1292cdf0e10cSrcweir
1293cdf0e10cSrcweir m_xParser->setElementaryQuery(aString);
1294cdf0e10cSrcweir
1295cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
1296cdf0e10cSrcweir pConfig->setQueryField(getQueryField());
1297cdf0e10cSrcweir startQueryWith(pConfig->getQueryText());
1298cdf0e10cSrcweir
1299cdf0e10cSrcweir BibDBDescriptor aDesc;
1300cdf0e10cSrcweir aDesc.sDataSource = aDataSourceURL;
1301cdf0e10cSrcweir aDesc.sTableOrQuery = aActiveDataTable;
1302cdf0e10cSrcweir aDesc.nCommandType = CommandType::TABLE;
1303cdf0e10cSrcweir BibModul::GetConfig()->SetBibliographyURL(aDesc);
1304cdf0e10cSrcweir }
1305cdf0e10cSrcweir }
1306cdf0e10cSrcweir }
1307cdf0e10cSrcweir catch(Exception& e )
1308cdf0e10cSrcweir {
1309cdf0e10cSrcweir (void) e; // make compiler happy
1310cdf0e10cSrcweir DBG_ERROR("::setActiveDataTable: something went wrong !");
1311cdf0e10cSrcweir }
1312cdf0e10cSrcweir
1313cdf0e10cSrcweir }
1314cdf0e10cSrcweir
1315cdf0e10cSrcweir //------------------------------------------------------------------------
load()1316cdf0e10cSrcweir void SAL_CALL BibDataManager::load( ) throw (RuntimeException)
1317cdf0e10cSrcweir {
1318cdf0e10cSrcweir if ( isLoaded() )
1319cdf0e10cSrcweir // nothing to do
1320cdf0e10cSrcweir return;
1321cdf0e10cSrcweir
1322cdf0e10cSrcweir Reference< XLoadable > xFormAsLoadable( m_xForm, UNO_QUERY );
1323cdf0e10cSrcweir DBG_ASSERT( xFormAsLoadable.is() || !m_xForm.is(), "BibDataManager::load: invalid form!");
1324cdf0e10cSrcweir if ( xFormAsLoadable.is() )
1325cdf0e10cSrcweir {
1326cdf0e10cSrcweir xFormAsLoadable->load();
1327cdf0e10cSrcweir SetMeAsUidListener();
1328cdf0e10cSrcweir
1329cdf0e10cSrcweir EventObject aEvt( static_cast< XWeak* >( this ) );
1330cdf0e10cSrcweir m_aLoadListeners.notifyEach( &XLoadListener::loaded, aEvt );
1331cdf0e10cSrcweir }
1332cdf0e10cSrcweir }
1333cdf0e10cSrcweir
1334cdf0e10cSrcweir //------------------------------------------------------------------------
unload()1335cdf0e10cSrcweir void SAL_CALL BibDataManager::unload( ) throw (RuntimeException)
1336cdf0e10cSrcweir {
1337cdf0e10cSrcweir if ( !isLoaded() )
1338cdf0e10cSrcweir // nothing to do
1339cdf0e10cSrcweir return;
1340cdf0e10cSrcweir
1341cdf0e10cSrcweir Reference< XLoadable >xFormAsLoadable( m_xForm, UNO_QUERY );
1342cdf0e10cSrcweir DBG_ASSERT( xFormAsLoadable.is() || !m_xForm.is(), "BibDataManager::unload: invalid form!");
1343cdf0e10cSrcweir if ( xFormAsLoadable.is() )
1344cdf0e10cSrcweir {
1345cdf0e10cSrcweir EventObject aEvt( static_cast< XWeak* >( this ) );
1346cdf0e10cSrcweir
1347cdf0e10cSrcweir {
1348cdf0e10cSrcweir m_aLoadListeners.notifyEach( &XLoadListener::unloading, aEvt );
1349cdf0e10cSrcweir }
1350cdf0e10cSrcweir
1351cdf0e10cSrcweir RemoveMeAsUidListener();
1352cdf0e10cSrcweir xFormAsLoadable->unload();
1353cdf0e10cSrcweir
1354cdf0e10cSrcweir {
1355cdf0e10cSrcweir m_aLoadListeners.notifyEach( &XLoadListener::unloaded, aEvt );
1356cdf0e10cSrcweir }
1357cdf0e10cSrcweir }
1358cdf0e10cSrcweir }
1359cdf0e10cSrcweir
1360cdf0e10cSrcweir //------------------------------------------------------------------------
reload()1361cdf0e10cSrcweir void SAL_CALL BibDataManager::reload( ) throw (RuntimeException)
1362cdf0e10cSrcweir {
1363cdf0e10cSrcweir if ( !isLoaded() )
1364cdf0e10cSrcweir // nothing to do
1365cdf0e10cSrcweir return;
1366cdf0e10cSrcweir
1367cdf0e10cSrcweir Reference< XLoadable >xFormAsLoadable( m_xForm, UNO_QUERY );
1368cdf0e10cSrcweir DBG_ASSERT( xFormAsLoadable.is() || !m_xForm.is(), "BibDataManager::unload: invalid form!");
1369cdf0e10cSrcweir if ( xFormAsLoadable.is() )
1370cdf0e10cSrcweir {
1371cdf0e10cSrcweir EventObject aEvt( static_cast< XWeak* >( this ) );
1372cdf0e10cSrcweir
1373cdf0e10cSrcweir {
1374cdf0e10cSrcweir m_aLoadListeners.notifyEach( &XLoadListener::reloading, aEvt );
1375cdf0e10cSrcweir }
1376cdf0e10cSrcweir
1377cdf0e10cSrcweir xFormAsLoadable->reload();
1378cdf0e10cSrcweir
1379cdf0e10cSrcweir {
1380cdf0e10cSrcweir m_aLoadListeners.notifyEach( &XLoadListener::reloaded, aEvt );
1381cdf0e10cSrcweir }
1382cdf0e10cSrcweir }
1383cdf0e10cSrcweir }
1384cdf0e10cSrcweir
1385cdf0e10cSrcweir //------------------------------------------------------------------------
isLoaded()1386cdf0e10cSrcweir sal_Bool SAL_CALL BibDataManager::isLoaded( ) throw (RuntimeException)
1387cdf0e10cSrcweir {
1388cdf0e10cSrcweir Reference< XLoadable >xFormAsLoadable( m_xForm, UNO_QUERY );
1389cdf0e10cSrcweir DBG_ASSERT( xFormAsLoadable.is() || !m_xForm.is(), "BibDataManager::isLoaded: invalid form!");
1390cdf0e10cSrcweir
1391cdf0e10cSrcweir sal_Bool bLoaded = sal_False;
1392cdf0e10cSrcweir if ( xFormAsLoadable.is() )
1393cdf0e10cSrcweir bLoaded = xFormAsLoadable->isLoaded();
1394cdf0e10cSrcweir return bLoaded;
1395cdf0e10cSrcweir }
1396cdf0e10cSrcweir
1397cdf0e10cSrcweir //------------------------------------------------------------------------
addLoadListener(const Reference<XLoadListener> & aListener)1398cdf0e10cSrcweir void SAL_CALL BibDataManager::addLoadListener( const Reference< XLoadListener >& aListener ) throw (RuntimeException)
1399cdf0e10cSrcweir {
1400cdf0e10cSrcweir m_aLoadListeners.addInterface( aListener );
1401cdf0e10cSrcweir }
1402cdf0e10cSrcweir
1403cdf0e10cSrcweir //------------------------------------------------------------------------
removeLoadListener(const Reference<XLoadListener> & aListener)1404cdf0e10cSrcweir void SAL_CALL BibDataManager::removeLoadListener( const Reference< XLoadListener >& aListener ) throw (RuntimeException)
1405cdf0e10cSrcweir {
1406cdf0e10cSrcweir m_aLoadListeners.removeInterface( aListener );
1407cdf0e10cSrcweir }
1408cdf0e10cSrcweir
1409cdf0e10cSrcweir //------------------------------------------------------------------------
createGridModel(const::rtl::OUString & rName)1410cdf0e10cSrcweir Reference< awt::XControlModel > BibDataManager::createGridModel(const ::rtl::OUString& rName)
1411cdf0e10cSrcweir {
1412cdf0e10cSrcweir Reference< awt::XControlModel > xModel;
1413cdf0e10cSrcweir
1414cdf0e10cSrcweir try
1415cdf0e10cSrcweir {
1416cdf0e10cSrcweir // create the control model
1417cdf0e10cSrcweir Reference< XMultiServiceFactory > xMgr = ::comphelper::getProcessServiceFactory();
1418cdf0e10cSrcweir Reference< XInterface > xObject = xMgr->createInstance(C2U("com.sun.star.form.component.GridControl"));
1419cdf0e10cSrcweir xModel=Reference< awt::XControlModel > ( xObject, UNO_QUERY );
1420cdf0e10cSrcweir
1421cdf0e10cSrcweir // set the
1422cdf0e10cSrcweir Reference< XPropertySet > xPropSet( xModel, UNO_QUERY );
1423cdf0e10cSrcweir xPropSet->setPropertyValue( C2U("Name"), makeAny( rName ) );
1424cdf0e10cSrcweir
1425cdf0e10cSrcweir // set the name of the to-be-created control
1426cdf0e10cSrcweir ::rtl::OUString aControlName(C2U("com.sun.star.form.control.InteractionGridControl"));
1427cdf0e10cSrcweir Any aAny; aAny <<= aControlName;
1428cdf0e10cSrcweir xPropSet->setPropertyValue( C2U("DefaultControl"),aAny );
1429cdf0e10cSrcweir
1430cdf0e10cSrcweir // the the helpURL
1431cdf0e10cSrcweir ::rtl::OUString uProp(C2U("HelpURL"));
1432cdf0e10cSrcweir Reference< XPropertySetInfo > xPropInfo = xPropSet->getPropertySetInfo();
1433cdf0e10cSrcweir if (xPropInfo->hasPropertyByName(uProp))
1434cdf0e10cSrcweir {
1435cdf0e10cSrcweir ::rtl::OUString sId = ::rtl::OUString::createFromAscii( INET_HID_SCHEME );
1436cdf0e10cSrcweir sId += ::rtl::OUString::createFromAscii( HID_BIB_DB_GRIDCTRL );
1437cdf0e10cSrcweir xPropSet->setPropertyValue( uProp, makeAny( sId ) );
1438cdf0e10cSrcweir }
1439cdf0e10cSrcweir }
1440cdf0e10cSrcweir catch(Exception& e )
1441cdf0e10cSrcweir {
1442cdf0e10cSrcweir (void) e; // make compiler happy
1443cdf0e10cSrcweir DBG_ERROR("::createGridModel: something went wrong !");
1444cdf0e10cSrcweir }
1445cdf0e10cSrcweir
1446cdf0e10cSrcweir
1447cdf0e10cSrcweir return xModel;
1448cdf0e10cSrcweir }
1449cdf0e10cSrcweir //------------------------------------------------------------------------
getControlName(sal_Int32 nFormatKey)1450cdf0e10cSrcweir ::rtl::OUString BibDataManager::getControlName(sal_Int32 nFormatKey )
1451cdf0e10cSrcweir {
1452cdf0e10cSrcweir ::rtl::OUString aResStr;
1453cdf0e10cSrcweir switch (nFormatKey)
1454cdf0e10cSrcweir {
1455cdf0e10cSrcweir case DataType::BIT:
1456cdf0e10cSrcweir case DataType::BOOLEAN:
1457cdf0e10cSrcweir aResStr=C2U("CheckBox");
1458cdf0e10cSrcweir break;
1459cdf0e10cSrcweir case DataType::TINYINT:
1460cdf0e10cSrcweir case DataType::SMALLINT:
1461cdf0e10cSrcweir case DataType::INTEGER:
1462cdf0e10cSrcweir aResStr=C2U("NumericField"); ;
1463cdf0e10cSrcweir break;
1464cdf0e10cSrcweir case DataType::REAL:
1465cdf0e10cSrcweir case DataType::DOUBLE:
1466cdf0e10cSrcweir case DataType::NUMERIC:
1467cdf0e10cSrcweir case DataType::DECIMAL:
1468cdf0e10cSrcweir aResStr=C2U("FormattedField");
1469cdf0e10cSrcweir break;
1470cdf0e10cSrcweir case DataType::TIMESTAMP:
1471cdf0e10cSrcweir aResStr=C2U("FormattedField");
1472cdf0e10cSrcweir break;
1473cdf0e10cSrcweir case DataType::DATE:
1474cdf0e10cSrcweir aResStr=C2U("DateField");
1475cdf0e10cSrcweir break;
1476cdf0e10cSrcweir case DataType::TIME:
1477cdf0e10cSrcweir aResStr=C2U("TimeField");
1478cdf0e10cSrcweir break;
1479cdf0e10cSrcweir case DataType::CHAR:
1480cdf0e10cSrcweir case DataType::VARCHAR:
1481cdf0e10cSrcweir case DataType::LONGVARCHAR:
1482cdf0e10cSrcweir default:
1483cdf0e10cSrcweir aResStr=C2U("TextField");
1484cdf0e10cSrcweir break;
1485cdf0e10cSrcweir }
1486cdf0e10cSrcweir return aResStr;
1487cdf0e10cSrcweir }
1488cdf0e10cSrcweir //------------------------------------------------------------------------
loadControlModel(const::rtl::OUString & rName,sal_Bool bForceListBox)1489cdf0e10cSrcweir Reference< awt::XControlModel > BibDataManager::loadControlModel(
1490cdf0e10cSrcweir const ::rtl::OUString& rName, sal_Bool bForceListBox)
1491cdf0e10cSrcweir {
1492cdf0e10cSrcweir Reference< awt::XControlModel > xModel;
1493cdf0e10cSrcweir ::rtl::OUString aName(C2U("View_"));
1494cdf0e10cSrcweir aName += rName;
1495cdf0e10cSrcweir
1496cdf0e10cSrcweir try
1497cdf0e10cSrcweir {
1498cdf0e10cSrcweir Reference< XNameAccess > xFields = getColumns( m_xForm );
1499cdf0e10cSrcweir if (!xFields.is())
1500cdf0e10cSrcweir return xModel;
1501cdf0e10cSrcweir Reference< XPropertySet > xField;
1502cdf0e10cSrcweir
1503cdf0e10cSrcweir Any aElement;
1504cdf0e10cSrcweir
1505cdf0e10cSrcweir if(xFields->hasByName(rName))
1506cdf0e10cSrcweir {
1507cdf0e10cSrcweir aElement = xFields->getByName(rName);
1508cdf0e10cSrcweir aElement >>= xField;
1509cdf0e10cSrcweir Reference< XPropertySetInfo > xInfo = xField.is() ? xField->getPropertySetInfo() : Reference< XPropertySetInfo > ();
1510cdf0e10cSrcweir
1511cdf0e10cSrcweir ::rtl::OUString sCurrentModelType;
1512cdf0e10cSrcweir const ::rtl::OUString sType(C2U("Type"));
1513cdf0e10cSrcweir sal_Int32 nFormatKey = 0;
1514cdf0e10cSrcweir xField->getPropertyValue(sType) >>= nFormatKey;
1515cdf0e10cSrcweir
1516cdf0e10cSrcweir ::rtl::OUString aInstanceName(C2U("com.sun.star.form.component."));
1517cdf0e10cSrcweir
1518cdf0e10cSrcweir if (bForceListBox)
1519cdf0e10cSrcweir aInstanceName += C2U("ListBox");
1520cdf0e10cSrcweir else
1521cdf0e10cSrcweir aInstanceName += getControlName(nFormatKey);
1522cdf0e10cSrcweir
1523cdf0e10cSrcweir Reference< XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
1524cdf0e10cSrcweir Reference< XInterface > xObject = xMgr->createInstance(aInstanceName);
1525cdf0e10cSrcweir xModel=Reference< awt::XControlModel > ( xObject, UNO_QUERY );
1526cdf0e10cSrcweir Reference< XPropertySet > xPropSet( xModel, UNO_QUERY );
1527cdf0e10cSrcweir Any aFieldName; aFieldName <<= aName;
1528cdf0e10cSrcweir
1529cdf0e10cSrcweir xPropSet->setPropertyValue( FM_PROP_NAME,aFieldName);
1530cdf0e10cSrcweir xPropSet->setPropertyValue( FM_PROP_CONTROLSOURCE, makeAny( rName ) );
1531cdf0e10cSrcweir xPropSet->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NativeWidgetLook" ) ), makeAny( (sal_Bool)sal_True ) );
1532cdf0e10cSrcweir
1533cdf0e10cSrcweir Reference< XFormComponent > aFormComp(xModel,UNO_QUERY );
1534cdf0e10cSrcweir
1535cdf0e10cSrcweir Reference< XNameContainer > xNameCont( m_xForm, UNO_QUERY );
1536cdf0e10cSrcweir xNameCont->insertByName(aName, makeAny( aFormComp ) );
1537cdf0e10cSrcweir
1538cdf0e10cSrcweir // now if the form where we inserted the new model is already loaded, notify the model of this
1539cdf0e10cSrcweir // Note that this implementation below is a HACK as it relies on the fact that the model adds itself
1540cdf0e10cSrcweir // as load listener to it's parent, which is an implementation detail of the model.
1541cdf0e10cSrcweir //
1542cdf0e10cSrcweir // the better solution would be the following:
1543cdf0e10cSrcweir // in the current scenario, we insert a control model into a form. This results in the control model
1544cdf0e10cSrcweir // adding itself as load listener to the form. Now, the form should realize that it's already loaded
1545cdf0e10cSrcweir // and notify the model (which it knows as XLoadListener only) immediately. This seems to make sense.
1546cdf0e10cSrcweir // (as an anologon to the XStatusListener semantics).
1547cdf0e10cSrcweir //
1548cdf0e10cSrcweir // But this would be way too risky for this last-day fix here.
1549cdf0e10cSrcweir // 97140 - 30.01.2002 - fs@openoffice.org
1550cdf0e10cSrcweir Reference< XLoadable > xLoad( m_xForm, UNO_QUERY );
1551cdf0e10cSrcweir if ( xLoad.is() && xLoad->isLoaded() )
1552cdf0e10cSrcweir {
1553cdf0e10cSrcweir Reference< XLoadListener > xListener( aFormComp, UNO_QUERY );
1554cdf0e10cSrcweir if ( xListener.is() )
1555cdf0e10cSrcweir {
1556cdf0e10cSrcweir EventObject aLoadSource;
1557cdf0e10cSrcweir aLoadSource.Source = xLoad;
1558cdf0e10cSrcweir xListener->loaded( aLoadSource );
1559cdf0e10cSrcweir }
1560cdf0e10cSrcweir }
1561cdf0e10cSrcweir }
1562cdf0e10cSrcweir }
1563cdf0e10cSrcweir catch(Exception& e )
1564cdf0e10cSrcweir {
1565cdf0e10cSrcweir (void) e; // make compiler happy
1566cdf0e10cSrcweir DBG_ERROR("::loadControlModel: something went wrong !");
1567cdf0e10cSrcweir }
1568cdf0e10cSrcweir return xModel;
1569cdf0e10cSrcweir }
1570cdf0e10cSrcweir //------------------------------------------------------------------------
disposing()1571cdf0e10cSrcweir void SAL_CALL BibDataManager::disposing()
1572cdf0e10cSrcweir {
1573cdf0e10cSrcweir BibDataManager_Base::WeakComponentImplHelperBase::disposing();
1574cdf0e10cSrcweir }
1575cdf0e10cSrcweir
1576cdf0e10cSrcweir //------------------------------------------------------------------------
disposing(const EventObject &)1577cdf0e10cSrcweir void BibDataManager::disposing( const EventObject& /*Source*/ ) throw( ::com::sun::star::uno::RuntimeException )
1578cdf0e10cSrcweir {
1579cdf0e10cSrcweir // not interested in
1580cdf0e10cSrcweir }
1581cdf0e10cSrcweir
1582cdf0e10cSrcweir //------------------------------------------------------------------------
propertyChange(const beans::PropertyChangeEvent & evt)1583cdf0e10cSrcweir void BibDataManager::propertyChange(const beans::PropertyChangeEvent& evt) throw( RuntimeException )
1584cdf0e10cSrcweir {
1585cdf0e10cSrcweir try
1586cdf0e10cSrcweir {
1587cdf0e10cSrcweir sal_Bool bFlag=sal_False;
1588cdf0e10cSrcweir if(evt.PropertyName == FM_PROP_VALUE)
1589cdf0e10cSrcweir {
1590cdf0e10cSrcweir if( evt.NewValue.getValueType() == ::getCppuType((Reference<io::XInputStream>*)0) )
1591cdf0e10cSrcweir {
1592cdf0e10cSrcweir Reference< io::XDataInputStream > xStream(
1593cdf0e10cSrcweir *(const Reference< io::XInputStream > *)evt.NewValue.getValue(), UNO_QUERY );
1594cdf0e10cSrcweir aUID <<= xStream->readUTF();
1595cdf0e10cSrcweir }
1596cdf0e10cSrcweir else
1597cdf0e10cSrcweir aUID = evt.NewValue;
1598cdf0e10cSrcweir
1599cdf0e10cSrcweir Reference< XRowLocate > xLocate(xBibCursor, UNO_QUERY);
1600cdf0e10cSrcweir DBG_ASSERT(xLocate.is(), "BibDataManager::propertyChange : invalid cursor !");
1601cdf0e10cSrcweir bFlag = xLocate->moveToBookmark(aUID);
1602cdf0e10cSrcweir }
1603cdf0e10cSrcweir }
1604cdf0e10cSrcweir catch(Exception& e )
1605cdf0e10cSrcweir {
1606cdf0e10cSrcweir (void) e; // make compiler happy
1607cdf0e10cSrcweir DBG_ERROR("::propertyChange: something went wrong !");
1608cdf0e10cSrcweir }
1609cdf0e10cSrcweir
1610cdf0e10cSrcweir
1611cdf0e10cSrcweir }
1612cdf0e10cSrcweir //------------------------------------------------------------------------
SetMeAsUidListener()1613cdf0e10cSrcweir void BibDataManager::SetMeAsUidListener()
1614cdf0e10cSrcweir {
1615cdf0e10cSrcweir try
1616cdf0e10cSrcweir {
1617cdf0e10cSrcweir Reference< XNameAccess > xFields = getColumns( m_xForm );
1618cdf0e10cSrcweir if (!xFields.is())
1619cdf0e10cSrcweir return;
1620cdf0e10cSrcweir
1621cdf0e10cSrcweir Sequence< ::rtl::OUString > aFields(xFields->getElementNames());
1622cdf0e10cSrcweir const ::rtl::OUString* pFields = aFields.getConstArray();
1623cdf0e10cSrcweir sal_Int32 nCount=aFields.getLength();
1624cdf0e10cSrcweir String StrUID(C2S(STR_UID));
1625cdf0e10cSrcweir ::rtl::OUString theFieldName;
1626cdf0e10cSrcweir for( sal_Int32 i=0; i<nCount; i++ )
1627cdf0e10cSrcweir {
1628cdf0e10cSrcweir String aName= pFields[i];
1629cdf0e10cSrcweir
1630cdf0e10cSrcweir if(aName.EqualsIgnoreCaseAscii(StrUID))
1631cdf0e10cSrcweir {
1632cdf0e10cSrcweir theFieldName=pFields[i];
1633cdf0e10cSrcweir break;
1634cdf0e10cSrcweir }
1635cdf0e10cSrcweir }
1636cdf0e10cSrcweir
1637cdf0e10cSrcweir if(theFieldName.getLength()>0)
1638cdf0e10cSrcweir {
1639cdf0e10cSrcweir Reference< XPropertySet > xPropSet;
1640cdf0e10cSrcweir Any aElement;
1641cdf0e10cSrcweir
1642cdf0e10cSrcweir aElement = xFields->getByName(theFieldName);
1643cdf0e10cSrcweir xPropSet = *(Reference< XPropertySet > *)aElement.getValue();
1644cdf0e10cSrcweir
1645cdf0e10cSrcweir xPropSet->addPropertyChangeListener(FM_PROP_VALUE, this);
1646cdf0e10cSrcweir }
1647cdf0e10cSrcweir
1648cdf0e10cSrcweir }
1649cdf0e10cSrcweir catch(Exception& e )
1650cdf0e10cSrcweir {
1651cdf0e10cSrcweir (void) e; // make compiler happy
1652cdf0e10cSrcweir DBG_ERROR("Exception in BibDataManager::SetMeAsUidListener");
1653cdf0e10cSrcweir }
1654cdf0e10cSrcweir
1655cdf0e10cSrcweir
1656cdf0e10cSrcweir }
1657cdf0e10cSrcweir //------------------------------------------------------------------------
RemoveMeAsUidListener()1658cdf0e10cSrcweir void BibDataManager::RemoveMeAsUidListener()
1659cdf0e10cSrcweir {
1660cdf0e10cSrcweir try
1661cdf0e10cSrcweir {
1662cdf0e10cSrcweir Reference< XNameAccess > xFields = getColumns( m_xForm );
1663cdf0e10cSrcweir if (!xFields.is())
1664cdf0e10cSrcweir return;
1665cdf0e10cSrcweir
1666cdf0e10cSrcweir
1667cdf0e10cSrcweir Sequence< ::rtl::OUString > aFields(xFields->getElementNames());
1668cdf0e10cSrcweir const ::rtl::OUString* pFields = aFields.getConstArray();
1669cdf0e10cSrcweir sal_Int32 nCount=aFields.getLength();
1670cdf0e10cSrcweir String StrUID(C2S(STR_UID));
1671cdf0e10cSrcweir ::rtl::OUString theFieldName;
1672cdf0e10cSrcweir for( sal_Int32 i=0; i<nCount; i++ )
1673cdf0e10cSrcweir {
1674cdf0e10cSrcweir String aName= pFields[i];
1675cdf0e10cSrcweir
1676cdf0e10cSrcweir if(aName.EqualsIgnoreCaseAscii(StrUID))
1677cdf0e10cSrcweir {
1678cdf0e10cSrcweir theFieldName=pFields[i];
1679cdf0e10cSrcweir break;
1680cdf0e10cSrcweir }
1681cdf0e10cSrcweir }
1682cdf0e10cSrcweir
1683cdf0e10cSrcweir if(theFieldName.getLength()>0)
1684cdf0e10cSrcweir {
1685cdf0e10cSrcweir Reference< XPropertySet > xPropSet;
1686cdf0e10cSrcweir Any aElement;
1687cdf0e10cSrcweir
1688cdf0e10cSrcweir aElement = xFields->getByName(theFieldName);
1689cdf0e10cSrcweir xPropSet = *(Reference< XPropertySet > *)aElement.getValue();
1690cdf0e10cSrcweir
1691cdf0e10cSrcweir xPropSet->removePropertyChangeListener(FM_PROP_VALUE, this);
1692cdf0e10cSrcweir }
1693cdf0e10cSrcweir
1694cdf0e10cSrcweir }
1695cdf0e10cSrcweir catch(Exception& e )
1696cdf0e10cSrcweir {
1697cdf0e10cSrcweir (void) e; // make compiler happy
1698cdf0e10cSrcweir DBG_ERROR("Exception in BibDataManager::RemoveMeAsUidListener");
1699cdf0e10cSrcweir }
1700cdf0e10cSrcweir
1701cdf0e10cSrcweir
1702cdf0e10cSrcweir }
1703cdf0e10cSrcweir /* -----------------11.11.99 15:51-------------------
1704cdf0e10cSrcweir
1705cdf0e10cSrcweir --------------------------------------------------*/
CreateMappingDialog(Window * pParent)1706cdf0e10cSrcweir void BibDataManager::CreateMappingDialog(Window* pParent)
1707cdf0e10cSrcweir {
1708cdf0e10cSrcweir MappingDialog_Impl* pDlg = new MappingDialog_Impl(pParent, this);
1709cdf0e10cSrcweir if(RET_OK == pDlg->Execute() && pBibView)
1710cdf0e10cSrcweir {
1711cdf0e10cSrcweir reload();
1712cdf0e10cSrcweir // unload();
1713cdf0e10cSrcweir // pBibView->UpdatePages();
1714cdf0e10cSrcweir // load();
1715cdf0e10cSrcweir }
1716cdf0e10cSrcweir delete pDlg;
1717cdf0e10cSrcweir }
1718cdf0e10cSrcweir /* --------------------------------------------------
1719cdf0e10cSrcweir
1720cdf0e10cSrcweir --------------------------------------------------*/
CreateDBChangeDialog(Window * pParent)1721cdf0e10cSrcweir ::rtl::OUString BibDataManager::CreateDBChangeDialog(Window* pParent)
1722cdf0e10cSrcweir {
1723cdf0e10cSrcweir ::rtl::OUString uRet;
1724cdf0e10cSrcweir DBChangeDialog_Impl * pDlg = new DBChangeDialog_Impl(pParent, this );
1725cdf0e10cSrcweir if(RET_OK == pDlg->Execute())
1726cdf0e10cSrcweir {
1727cdf0e10cSrcweir String sNewURL = pDlg->GetCurrentURL();
1728cdf0e10cSrcweir if(sNewURL != String(getActiveDataSource()))
1729cdf0e10cSrcweir {
1730cdf0e10cSrcweir uRet = sNewURL;
1731cdf0e10cSrcweir }
1732cdf0e10cSrcweir }
1733cdf0e10cSrcweir delete pDlg;
1734cdf0e10cSrcweir return uRet;
1735cdf0e10cSrcweir }
1736cdf0e10cSrcweir /*-- 18.05.2004 15:20:15---------------------------------------------------
1737cdf0e10cSrcweir
1738cdf0e10cSrcweir -----------------------------------------------------------------------*/
DispatchDBChangeDialog()1739cdf0e10cSrcweir void BibDataManager::DispatchDBChangeDialog()
1740cdf0e10cSrcweir {
1741cdf0e10cSrcweir if(pToolbar)
1742cdf0e10cSrcweir pToolbar->SendDispatch(TBC_BT_CHANGESOURCE, Sequence< PropertyValue >());
1743cdf0e10cSrcweir }
1744cdf0e10cSrcweir /* -----------------06.12.99 15:11-------------------
1745cdf0e10cSrcweir
1746cdf0e10cSrcweir --------------------------------------------------*/
GetIdentifierMapping()1747cdf0e10cSrcweir const ::rtl::OUString& BibDataManager::GetIdentifierMapping()
1748cdf0e10cSrcweir {
1749cdf0e10cSrcweir if(!sIdentifierMapping.getLength())
1750cdf0e10cSrcweir {
1751cdf0e10cSrcweir BibConfig* pConfig = BibModul::GetConfig();
1752cdf0e10cSrcweir BibDBDescriptor aDesc;
1753cdf0e10cSrcweir aDesc.sDataSource = getActiveDataSource();
1754cdf0e10cSrcweir aDesc.sTableOrQuery = getActiveDataTable();
1755cdf0e10cSrcweir aDesc.nCommandType = CommandType::TABLE;
1756cdf0e10cSrcweir const Mapping* pMapping = pConfig->GetMapping(aDesc);
1757cdf0e10cSrcweir sIdentifierMapping = pConfig->GetDefColumnName(IDENTIFIER_POS);
1758cdf0e10cSrcweir if(pMapping)
1759cdf0e10cSrcweir {
1760cdf0e10cSrcweir for(sal_uInt16 nEntry = 0; nEntry < COLUMN_COUNT; nEntry++)
1761cdf0e10cSrcweir {
1762cdf0e10cSrcweir if(pMapping->aColumnPairs[nEntry].sLogicalColumnName == sIdentifierMapping)
1763cdf0e10cSrcweir {
1764cdf0e10cSrcweir sIdentifierMapping = pMapping->aColumnPairs[nEntry].sRealColumnName;
1765cdf0e10cSrcweir break;
1766cdf0e10cSrcweir }
1767cdf0e10cSrcweir }
1768cdf0e10cSrcweir }
1769cdf0e10cSrcweir }
1770cdf0e10cSrcweir return sIdentifierMapping;
1771cdf0e10cSrcweir }
1772cdf0e10cSrcweir /* -----------------------------20.11.00 10:31--------------------------------
1773cdf0e10cSrcweir
1774cdf0e10cSrcweir ---------------------------------------------------------------------------*/
SetToolbar(BibToolBar * pSet)1775cdf0e10cSrcweir void BibDataManager::SetToolbar(BibToolBar* pSet)
1776cdf0e10cSrcweir {
1777cdf0e10cSrcweir pToolbar = pSet;
1778cdf0e10cSrcweir if(pToolbar)
1779cdf0e10cSrcweir pToolbar->SetDatMan(*this);
1780cdf0e10cSrcweir }
1781cdf0e10cSrcweir /* -----------------------------08.05.2002 09:26------------------------------
1782cdf0e10cSrcweir
1783cdf0e10cSrcweir ---------------------------------------------------------------------------*/
GetFormController()1784cdf0e10cSrcweir uno::Reference< form::runtime::XFormController > BibDataManager::GetFormController()
1785cdf0e10cSrcweir {
1786cdf0e10cSrcweir if(!m_xFormCtrl.is())
1787cdf0e10cSrcweir {
1788cdf0e10cSrcweir Reference< lang::XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
1789cdf0e10cSrcweir m_xFormCtrl = uno::Reference< form::runtime::XFormController > (
1790cdf0e10cSrcweir xMgr->createInstance(C2U("com.sun.star.form.runtime.FormController")), UNO_QUERY);
1791cdf0e10cSrcweir m_xFormCtrl->setModel(uno::Reference< awt::XTabControllerModel > (getForm(), UNO_QUERY));
1792cdf0e10cSrcweir // #100312# -------------
1793cdf0e10cSrcweir m_xFormDispatch = uno::Reference< frame::XDispatch > ( m_xFormCtrl, UNO_QUERY);
1794cdf0e10cSrcweir }
1795cdf0e10cSrcweir return m_xFormCtrl;
1796cdf0e10cSrcweir }
1797cdf0e10cSrcweir
1798cdf0e10cSrcweir // #100312# ----------
RegisterInterceptor(::bib::BibBeamer * pBibBeamer)1799cdf0e10cSrcweir void BibDataManager::RegisterInterceptor( ::bib::BibBeamer* pBibBeamer)
1800cdf0e10cSrcweir {
1801cdf0e10cSrcweir DBG_ASSERT( !m_pInterceptorHelper, "BibDataManager::RegisterInterceptor: called twice!" );
1802cdf0e10cSrcweir
1803cdf0e10cSrcweir if( pBibBeamer )
1804cdf0e10cSrcweir m_pInterceptorHelper = new BibInterceptorHelper( pBibBeamer, m_xFormDispatch);
1805cdf0e10cSrcweir if( m_pInterceptorHelper )
1806cdf0e10cSrcweir m_pInterceptorHelper->acquire();
1807cdf0e10cSrcweir }
1808cdf0e10cSrcweir
1809cdf0e10cSrcweir /*-- 18.05.2004 17:04:20---------------------------------------------------
1810cdf0e10cSrcweir
1811cdf0e10cSrcweir -----------------------------------------------------------------------*/
HasActiveConnection() const1812cdf0e10cSrcweir sal_Bool BibDataManager::HasActiveConnection()const
1813cdf0e10cSrcweir {
1814cdf0e10cSrcweir sal_Bool bRet = sal_False;
1815cdf0e10cSrcweir Reference< XPropertySet > xPrSet( m_xForm, UNO_QUERY );
1816cdf0e10cSrcweir if( xPrSet.is() )
1817cdf0e10cSrcweir {
1818cdf0e10cSrcweir Reference< XComponent > xConnection;
1819cdf0e10cSrcweir xPrSet->getPropertyValue(C2U("ActiveConnection")) >>= xConnection;
1820cdf0e10cSrcweir bRet = xConnection.is();
1821cdf0e10cSrcweir }
1822cdf0e10cSrcweir return bRet;
1823cdf0e10cSrcweir }
1824cdf0e10cSrcweir /*-- 04.06.2004 14:37:29---------------------------------------------------
1825cdf0e10cSrcweir
1826cdf0e10cSrcweir -----------------------------------------------------------------------*/
HasActiveConnection()1827cdf0e10cSrcweir sal_Bool BibDataManager::HasActiveConnection()
1828cdf0e10cSrcweir {
1829cdf0e10cSrcweir return getConnection( m_xForm ).is();
1830cdf0e10cSrcweir }
1831