1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_extensions.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski #include <osl/mutex.hxx>
29*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
30*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h>
31*b1cdbd2cSJim Jagielski #include <cppuhelper/weak.hxx>
32*b1cdbd2cSJim Jagielski #include <svl/itemprop.hxx>
33*b1cdbd2cSJim Jagielski #include <uno/environment.h>
34*b1cdbd2cSJim Jagielski #include <svl/urihelper.hxx>
35*b1cdbd2cSJim Jagielski #ifndef _TOOLKIT_UNOHLP_HXX
36*b1cdbd2cSJim Jagielski #include <toolkit/helper/vclunohelper.hxx>
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
39*b1cdbd2cSJim Jagielski #include <cppuhelper/factory.hxx> // helper for factories
40*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/ResultSetType.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/XColumn.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XURLTransformer.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XRowSet.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/CommandType.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrameLoader.hpp>
48*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp>
49*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XSingleServiceFactory.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/text/BibliographyDataField.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XLoadListener.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XLayoutManager.hpp>
56*b1cdbd2cSJim Jagielski #include <toolkit/awt/vclxwindow.hxx>
57*b1cdbd2cSJim Jagielski #include <vcl/window.hxx>
58*b1cdbd2cSJim Jagielski #include <vcl/edit.hxx>
59*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
60*b1cdbd2cSJim Jagielski #include <vcl/group.hxx>
61*b1cdbd2cSJim Jagielski #include <svtools/svmedit.hxx>
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski #include "bibresid.hxx"
64*b1cdbd2cSJim Jagielski #ifndef BIB_HRC
65*b1cdbd2cSJim Jagielski #include "bib.hrc"
66*b1cdbd2cSJim Jagielski #endif
67*b1cdbd2cSJim Jagielski #include "bibcont.hxx"
68*b1cdbd2cSJim Jagielski #include "bibbeam.hxx"
69*b1cdbd2cSJim Jagielski #include "bibmod.hxx"
70*b1cdbd2cSJim Jagielski #include "bibview.hxx"
71*b1cdbd2cSJim Jagielski #include "framectr.hxx"
72*b1cdbd2cSJim Jagielski #include "datman.hxx"
73*b1cdbd2cSJim Jagielski #include <bibconfig.hxx>
74*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase4.hxx> // helper for implementations
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski using namespace ::rtl;
77*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
78*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
79*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
80*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
81*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdb;
82*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdbc;
83*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::form;
84*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
85*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::frame;
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski #define C2U(cChar) OUString::createFromAscii(cChar)
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski #define PROPERTY_FRAME 1
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski class BibliographyLoader : public cppu::WeakImplHelper4
95*b1cdbd2cSJim Jagielski < XServiceInfo, XNameAccess, XPropertySet, XFrameLoader >
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski HdlBibModul m_pBibMod;
98*b1cdbd2cSJim Jagielski Reference< XLoadable > m_xDatMan;
99*b1cdbd2cSJim Jagielski BibDataManager* m_pDatMan;
100*b1cdbd2cSJim Jagielski Reference< XNameAccess > m_xColumns;
101*b1cdbd2cSJim Jagielski Reference< XResultSet > m_xCursor;
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski private:
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski void loadView(const Reference< XFrame > & aFrame, const rtl::OUString& aURL,
106*b1cdbd2cSJim Jagielski const Sequence< PropertyValue >& aArgs,
107*b1cdbd2cSJim Jagielski const Reference< XLoadEventListener > & aListener);
108*b1cdbd2cSJim Jagielski
109*b1cdbd2cSJim Jagielski BibDataManager* GetDataManager()const;
110*b1cdbd2cSJim Jagielski Reference< XNameAccess > GetDataColumns() const;
111*b1cdbd2cSJim Jagielski Reference< XResultSet > GetDataCursor() const;
112*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > GetIdentifierColumn() const;
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski public:
115*b1cdbd2cSJim Jagielski BibliographyLoader();
116*b1cdbd2cSJim Jagielski ~BibliographyLoader();
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski // XServiceInfo
119*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL getImplementationName() throw( );
120*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( );
121*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( );
getImplementationName_Static()122*b1cdbd2cSJim Jagielski static rtl::OUString getImplementationName_Static() throw( )
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski //!
126*b1cdbd2cSJim Jagielski return C2U("com.sun.star.extensions.Bibliography");
127*b1cdbd2cSJim Jagielski //!
128*b1cdbd2cSJim Jagielski }
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim Jagielski //XNameAccess
131*b1cdbd2cSJim Jagielski virtual Any SAL_CALL getByName(const rtl::OUString& aName) throw ( NoSuchElementException, WrappedTargetException, RuntimeException );
132*b1cdbd2cSJim Jagielski virtual Sequence< rtl::OUString > SAL_CALL getElementNames(void) throw ( RuntimeException );
133*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL hasByName(const rtl::OUString& aName) throw ( RuntimeException );
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski //XElementAccess
136*b1cdbd2cSJim Jagielski virtual Type SAL_CALL getElementType(void) throw ( RuntimeException );
137*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL hasElements(void) throw ( RuntimeException );
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski //XPropertySet
140*b1cdbd2cSJim Jagielski virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo(void) throw ( RuntimeException );
141*b1cdbd2cSJim Jagielski virtual void SAL_CALL setPropertyValue(const rtl::OUString& PropertyName, const Any& aValue) throw( UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException );
142*b1cdbd2cSJim Jagielski virtual Any SAL_CALL getPropertyValue(const rtl::OUString& PropertyName) throw ( UnknownPropertyException, WrappedTargetException, RuntimeException );
143*b1cdbd2cSJim Jagielski virtual void SAL_CALL addPropertyChangeListener(const rtl::OUString& PropertyName, const Reference< XPropertyChangeListener > & aListener) throw( UnknownPropertyException, WrappedTargetException, RuntimeException );
144*b1cdbd2cSJim Jagielski virtual void SAL_CALL removePropertyChangeListener(const rtl::OUString& PropertyName, const Reference< XPropertyChangeListener > & aListener) throw( UnknownPropertyException, WrappedTargetException, RuntimeException );
145*b1cdbd2cSJim Jagielski virtual void SAL_CALL addVetoableChangeListener(const rtl::OUString& PropertyName, const Reference< XVetoableChangeListener > & aListener) throw( UnknownPropertyException, WrappedTargetException, RuntimeException );
146*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeVetoableChangeListener(const rtl::OUString& PropertyName, const Reference< XVetoableChangeListener > & aListener) throw( UnknownPropertyException, WrappedTargetException, RuntimeException );
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski static Sequence<rtl::OUString> SAL_CALL getSupportedServiceNames_Static(void) throw( );
149*b1cdbd2cSJim Jagielski
150*b1cdbd2cSJim Jagielski friend Reference< XInterface > SAL_CALL BibliographyLoader_CreateInstance( const Reference< XMultiServiceFactory > & rSMgr ) throw( Exception );
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski // XLoader
153*b1cdbd2cSJim Jagielski virtual void SAL_CALL load(const Reference< XFrame > & aFrame, const rtl::OUString& aURL,
154*b1cdbd2cSJim Jagielski const Sequence< PropertyValue >& aArgs,
155*b1cdbd2cSJim Jagielski const Reference< XLoadEventListener > & aListener) throw (::com::sun::star::uno::RuntimeException);
156*b1cdbd2cSJim Jagielski virtual void SAL_CALL cancel(void) throw (::com::sun::star::uno::RuntimeException);
157*b1cdbd2cSJim Jagielski };
158*b1cdbd2cSJim Jagielski
BibliographyLoader()159*b1cdbd2cSJim Jagielski BibliographyLoader::BibliographyLoader() :
160*b1cdbd2cSJim Jagielski m_pBibMod(0),
161*b1cdbd2cSJim Jagielski m_pDatMan(0)
162*b1cdbd2cSJim Jagielski {
163*b1cdbd2cSJim Jagielski }
164*b1cdbd2cSJim Jagielski
~BibliographyLoader()165*b1cdbd2cSJim Jagielski BibliographyLoader::~BibliographyLoader()
166*b1cdbd2cSJim Jagielski {
167*b1cdbd2cSJim Jagielski Reference< lang::XComponent > xComp(m_xCursor, UNO_QUERY);
168*b1cdbd2cSJim Jagielski if (xComp.is())
169*b1cdbd2cSJim Jagielski xComp->dispose();
170*b1cdbd2cSJim Jagielski if(m_pBibMod)
171*b1cdbd2cSJim Jagielski CloseBibModul(m_pBibMod);
172*b1cdbd2cSJim Jagielski }
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski
BibliographyLoader_CreateInstance(const Reference<XMultiServiceFactory> &)175*b1cdbd2cSJim Jagielski Reference< XInterface > SAL_CALL BibliographyLoader_CreateInstance( const Reference< XMultiServiceFactory > & /*rSMgr*/ ) throw( Exception )
176*b1cdbd2cSJim Jagielski {
177*b1cdbd2cSJim Jagielski return *(new BibliographyLoader);
178*b1cdbd2cSJim Jagielski }
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielski // XServiceInfo
getImplementationName()182*b1cdbd2cSJim Jagielski rtl::OUString BibliographyLoader::getImplementationName() throw( )
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski return getImplementationName_Static();
186*b1cdbd2cSJim Jagielski }
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski // XServiceInfo
supportsService(const rtl::OUString & ServiceName)189*b1cdbd2cSJim Jagielski sal_Bool BibliographyLoader::supportsService(const rtl::OUString& ServiceName) throw( )
190*b1cdbd2cSJim Jagielski {
191*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > aSNL = getSupportedServiceNames();
192*b1cdbd2cSJim Jagielski const rtl::OUString * pArray = aSNL.getConstArray();
193*b1cdbd2cSJim Jagielski for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
194*b1cdbd2cSJim Jagielski if( pArray[i] == ServiceName )
195*b1cdbd2cSJim Jagielski return sal_True;
196*b1cdbd2cSJim Jagielski return sal_False;
197*b1cdbd2cSJim Jagielski }
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim Jagielski // XServiceInfo
getSupportedServiceNames(void)200*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > BibliographyLoader::getSupportedServiceNames(void) throw( )
201*b1cdbd2cSJim Jagielski {
202*b1cdbd2cSJim Jagielski return getSupportedServiceNames_Static();
203*b1cdbd2cSJim Jagielski }
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski // ORegistryServiceManager_Static
getSupportedServiceNames_Static(void)206*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > BibliographyLoader::getSupportedServiceNames_Static(void) throw( )
207*b1cdbd2cSJim Jagielski {
208*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > aSNS( 2 );
209*b1cdbd2cSJim Jagielski aSNS.getArray()[0] = C2U("com.sun.star.frame.FrameLoader");
210*b1cdbd2cSJim Jagielski //!
211*b1cdbd2cSJim Jagielski aSNS.getArray()[1] = C2U("com.sun.star.frame.Bibliography");
212*b1cdbd2cSJim Jagielski //!
213*b1cdbd2cSJim Jagielski return aSNS;
214*b1cdbd2cSJim Jagielski }
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski extern "C"
217*b1cdbd2cSJim Jagielski {
component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName,uno_Environment **)218*b1cdbd2cSJim Jagielski void SAL_CALL component_getImplementationEnvironment(
219*b1cdbd2cSJim Jagielski const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ )
220*b1cdbd2cSJim Jagielski {
221*b1cdbd2cSJim Jagielski *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
222*b1cdbd2cSJim Jagielski }
223*b1cdbd2cSJim Jagielski
component_getFactory(const sal_Char * pImplName,XMultiServiceFactory * pServiceManager,void *)224*b1cdbd2cSJim Jagielski void * SAL_CALL component_getFactory(
225*b1cdbd2cSJim Jagielski const sal_Char * pImplName, XMultiServiceFactory * pServiceManager, void * /*pRegistryKey*/ )
226*b1cdbd2cSJim Jagielski {
227*b1cdbd2cSJim Jagielski void * pRet = 0;
228*b1cdbd2cSJim Jagielski if (!BibliographyLoader::getImplementationName_Static().compareToAscii( pImplName ) )
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski // create the factory
231*b1cdbd2cSJim Jagielski Reference< XSingleServiceFactory > xFactory =
232*b1cdbd2cSJim Jagielski cppu::createSingleFactory(
233*b1cdbd2cSJim Jagielski pServiceManager,
234*b1cdbd2cSJim Jagielski BibliographyLoader::getImplementationName_Static(),
235*b1cdbd2cSJim Jagielski BibliographyLoader_CreateInstance,
236*b1cdbd2cSJim Jagielski BibliographyLoader::getSupportedServiceNames_Static() );
237*b1cdbd2cSJim Jagielski // acquire, because we return an interface pointer instead of a reference
238*b1cdbd2cSJim Jagielski xFactory->acquire();
239*b1cdbd2cSJim Jagielski pRet = xFactory.get();
240*b1cdbd2cSJim Jagielski }
241*b1cdbd2cSJim Jagielski return pRet;
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski
244*b1cdbd2cSJim Jagielski }
245*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
cancel(void)246*b1cdbd2cSJim Jagielski void BibliographyLoader::cancel(void) throw (::com::sun::star::uno::RuntimeException)
247*b1cdbd2cSJim Jagielski {
248*b1cdbd2cSJim Jagielski //!
249*b1cdbd2cSJim Jagielski //!
250*b1cdbd2cSJim Jagielski }
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
load(const Reference<XFrame> & rFrame,const rtl::OUString & rURL,const Sequence<PropertyValue> & rArgs,const Reference<XLoadEventListener> & rListener)253*b1cdbd2cSJim Jagielski void BibliographyLoader::load(const Reference< XFrame > & rFrame, const rtl::OUString& rURL,
254*b1cdbd2cSJim Jagielski const Sequence< PropertyValue >& rArgs,
255*b1cdbd2cSJim Jagielski const Reference< XLoadEventListener > & rListener) throw (::com::sun::star::uno::RuntimeException)
256*b1cdbd2cSJim Jagielski {
257*b1cdbd2cSJim Jagielski //!
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski vos::OGuard aGuard(Application::GetSolarMutex());
260*b1cdbd2cSJim Jagielski m_pBibMod = OpenBibModul();
261*b1cdbd2cSJim Jagielski
262*b1cdbd2cSJim Jagielski String aURLStr( rURL );
263*b1cdbd2cSJim Jagielski String aPartName = aURLStr.GetToken( 1, '/' );
264*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPrSet(rFrame, UNO_QUERY);
265*b1cdbd2cSJim Jagielski if(xPrSet.is())
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski Any aTitle;
268*b1cdbd2cSJim Jagielski aTitle <<= OUString(String(BibResId(RID_BIB_STR_FRAME_TITLE)));
269*b1cdbd2cSJim Jagielski xPrSet->setPropertyValue(C2U("Title"), aTitle);
270*b1cdbd2cSJim Jagielski }
271*b1cdbd2cSJim Jagielski if(aPartName.EqualsAscii("View") || aPartName.EqualsAscii("View1"))
272*b1cdbd2cSJim Jagielski {
273*b1cdbd2cSJim Jagielski loadView(rFrame, rURL, rArgs, rListener);
274*b1cdbd2cSJim Jagielski }
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
loadView(const Reference<XFrame> & rFrame,const rtl::OUString &,const Sequence<PropertyValue> &,const Reference<XLoadEventListener> & rListener)278*b1cdbd2cSJim Jagielski void BibliographyLoader::loadView(const Reference< XFrame > & rFrame, const rtl::OUString& /*rURL*/,
279*b1cdbd2cSJim Jagielski const Sequence< PropertyValue >& /*rArgs*/,
280*b1cdbd2cSJim Jagielski const Reference< XLoadEventListener > & rListener)
281*b1cdbd2cSJim Jagielski {
282*b1cdbd2cSJim Jagielski vos::OGuard aGuard(Application::GetSolarMutex());
283*b1cdbd2cSJim Jagielski //!
284*b1cdbd2cSJim Jagielski if(!m_pBibMod)
285*b1cdbd2cSJim Jagielski m_pBibMod = OpenBibModul();
286*b1cdbd2cSJim Jagielski
287*b1cdbd2cSJim Jagielski /*
288*b1cdbd2cSJim Jagielski //create the menu
289*b1cdbd2cSJim Jagielski ResMgr* pResMgr = (*m_pBibMod)->GetResMgr();
290*b1cdbd2cSJim Jagielski INetURLObject aEntry( URIHelper::SmartRelToAbs(pResMgr->GetFileName()) );
291*b1cdbd2cSJim Jagielski String aMenuRes( RTL_CONSTASCII_USTRINGPARAM( "private:resource/" ));
292*b1cdbd2cSJim Jagielski aMenuRes += ( aEntry.GetName() += '/' );
293*b1cdbd2cSJim Jagielski aMenuRes+=String::CreateFromInt32(RID_MAIN_MENU);
294*b1cdbd2cSJim Jagielski
295*b1cdbd2cSJim Jagielski util::URL aURL;
296*b1cdbd2cSJim Jagielski aURL.Complete = aMenuRes;
297*b1cdbd2cSJim Jagielski
298*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
299*b1cdbd2cSJim Jagielski Reference< util::XURLTransformer > xTrans ( xMgr->createInstance( C2U("com.sun.star.util.URLTransformer") ), UNO_QUERY );
300*b1cdbd2cSJim Jagielski if( xTrans.is() )
301*b1cdbd2cSJim Jagielski {
302*b1cdbd2cSJim Jagielski // Datei laden
303*b1cdbd2cSJim Jagielski xTrans->parseStrict( aURL );
304*b1cdbd2cSJim Jagielski
305*b1cdbd2cSJim Jagielski Reference< XDispatchProvider > xProv( rFrame, UNO_QUERY );
306*b1cdbd2cSJim Jagielski if ( xProv.is() )
307*b1cdbd2cSJim Jagielski {
308*b1cdbd2cSJim Jagielski Reference< XDispatch > aDisp = xProv->queryDispatch( aURL, C2U("_menubar"), 12 );
309*b1cdbd2cSJim Jagielski if ( aDisp.is() )
310*b1cdbd2cSJim Jagielski aDisp->dispatch( aURL, Sequence<PropertyValue>() );
311*b1cdbd2cSJim Jagielski }
312*b1cdbd2cSJim Jagielski }
313*b1cdbd2cSJim Jagielski */
314*b1cdbd2cSJim Jagielski m_pDatMan = (*m_pBibMod)->createDataManager();
315*b1cdbd2cSJim Jagielski m_xDatMan = m_pDatMan;
316*b1cdbd2cSJim Jagielski BibDBDescriptor aBibDesc = BibModul::GetConfig()->GetBibliographyURL();
317*b1cdbd2cSJim Jagielski
318*b1cdbd2cSJim Jagielski if(!aBibDesc.sDataSource.getLength())
319*b1cdbd2cSJim Jagielski {
320*b1cdbd2cSJim Jagielski DBChangeDialogConfig_Impl aConfig;
321*b1cdbd2cSJim Jagielski const Sequence<OUString> aSources = aConfig.GetDataSourceNames();
322*b1cdbd2cSJim Jagielski if(aSources.getLength())
323*b1cdbd2cSJim Jagielski aBibDesc.sDataSource = aSources.getConstArray()[0];
324*b1cdbd2cSJim Jagielski }
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski Reference< XForm > xForm = m_pDatMan->createDatabaseForm( aBibDesc );
327*b1cdbd2cSJim Jagielski
328*b1cdbd2cSJim Jagielski Reference< awt::XWindow > aWindow = rFrame->getContainerWindow();
329*b1cdbd2cSJim Jagielski VCLXWindow* pParentComponent = VCLXWindow::GetImplementation(aWindow);
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski Window* pParent = VCLUnoHelper::GetWindow( aWindow );
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski BibBookContainer *pMyWindow = new BibBookContainer( pParent, m_pDatMan );
334*b1cdbd2cSJim Jagielski pMyWindow->Show();
335*b1cdbd2cSJim Jagielski
336*b1cdbd2cSJim Jagielski ::bib::BibView* pView = new ::bib::BibView( pMyWindow, m_pDatMan, WB_VSCROLL | WB_HSCROLL | WB_3DLOOK );
337*b1cdbd2cSJim Jagielski pView->Show();
338*b1cdbd2cSJim Jagielski m_pDatMan->SetView( pView );
339*b1cdbd2cSJim Jagielski
340*b1cdbd2cSJim Jagielski ::bib::BibBeamer* pBeamer = new ::bib::BibBeamer( pMyWindow, m_pDatMan );
341*b1cdbd2cSJim Jagielski pBeamer->Show();
342*b1cdbd2cSJim Jagielski pMyWindow->createTopFrame(pBeamer);
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim Jagielski pMyWindow->createBottomFrame(pView);
345*b1cdbd2cSJim Jagielski
346*b1cdbd2cSJim Jagielski Reference< awt::XWindow > xWin ( pMyWindow->GetComponentInterface(), UNO_QUERY );
347*b1cdbd2cSJim Jagielski
348*b1cdbd2cSJim Jagielski Reference< XController > xCtrRef( new BibFrameController_Impl( xWin, m_pDatMan ) );
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski xCtrRef->attachFrame(rFrame);
351*b1cdbd2cSJim Jagielski rFrame->setComponent( xWin, xCtrRef);
352*b1cdbd2cSJim Jagielski pBeamer->SetXController(xCtrRef);
353*b1cdbd2cSJim Jagielski //!
354*b1cdbd2cSJim Jagielski
355*b1cdbd2cSJim Jagielski // not earlier because SetFocus() is triggered in setVisible()
356*b1cdbd2cSJim Jagielski pParentComponent->setVisible(sal_True);
357*b1cdbd2cSJim Jagielski
358*b1cdbd2cSJim Jagielski m_xDatMan->load();
359*b1cdbd2cSJim Jagielski // #100312# ----------
360*b1cdbd2cSJim Jagielski m_pDatMan->RegisterInterceptor(pBeamer);
361*b1cdbd2cSJim Jagielski
362*b1cdbd2cSJim Jagielski if ( rListener.is() )
363*b1cdbd2cSJim Jagielski rListener->loadFinished( this );
364*b1cdbd2cSJim Jagielski
365*b1cdbd2cSJim Jagielski // attach menu bar
366*b1cdbd2cSJim Jagielski Reference< XPropertySet > xPropSet( rFrame, UNO_QUERY );
367*b1cdbd2cSJim Jagielski Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
368*b1cdbd2cSJim Jagielski if ( xPropSet.is() )
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski try
371*b1cdbd2cSJim Jagielski {
372*b1cdbd2cSJim Jagielski Any a = xPropSet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )));
373*b1cdbd2cSJim Jagielski a >>= xLayoutManager;
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski catch ( uno::Exception& )
376*b1cdbd2cSJim Jagielski {
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski }
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski if ( xLayoutManager.is() )
381*b1cdbd2cSJim Jagielski xLayoutManager->createElement( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:resource/menubar/menubar" )));
382*b1cdbd2cSJim Jagielski }
383*b1cdbd2cSJim Jagielski /* -----------------06.12.99 14:37-------------------
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski --------------------------------------------------*/
GetDataManager() const386*b1cdbd2cSJim Jagielski BibDataManager* BibliographyLoader::GetDataManager()const
387*b1cdbd2cSJim Jagielski {
388*b1cdbd2cSJim Jagielski if(!m_pDatMan)
389*b1cdbd2cSJim Jagielski {
390*b1cdbd2cSJim Jagielski if(!m_pBibMod)
391*b1cdbd2cSJim Jagielski const_cast< BibliographyLoader* >( this )->m_pBibMod = OpenBibModul();
392*b1cdbd2cSJim Jagielski const_cast< BibliographyLoader* >( this )->m_pDatMan = (*m_pBibMod)->createDataManager();
393*b1cdbd2cSJim Jagielski const_cast< BibliographyLoader* >( this )->m_xDatMan = m_pDatMan;
394*b1cdbd2cSJim Jagielski }
395*b1cdbd2cSJim Jagielski return m_pDatMan;
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski /* -----------------06.12.99 14:39-------------------
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim Jagielski --------------------------------------------------*/
GetDataColumns() const400*b1cdbd2cSJim Jagielski Reference< XNameAccess > BibliographyLoader::GetDataColumns() const
401*b1cdbd2cSJim Jagielski {
402*b1cdbd2cSJim Jagielski if (!m_xColumns.is())
403*b1cdbd2cSJim Jagielski {
404*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
405*b1cdbd2cSJim Jagielski Reference< XRowSet > xRowSet(xMgr->createInstance(C2U("com.sun.star.sdb.RowSet")), UNO_QUERY);
406*b1cdbd2cSJim Jagielski Reference< XPropertySet > xResultSetProps(xRowSet, UNO_QUERY);
407*b1cdbd2cSJim Jagielski DBG_ASSERT(xResultSetProps.is() , "BibliographyLoader::GetDataCursor : invalid row set (no XResultSet or no XPropertySet) !");
408*b1cdbd2cSJim Jagielski
409*b1cdbd2cSJim Jagielski BibDBDescriptor aBibDesc = BibModul::GetConfig()->GetBibliographyURL();
410*b1cdbd2cSJim Jagielski
411*b1cdbd2cSJim Jagielski Any aBibUrlAny; aBibUrlAny <<= aBibDesc.sDataSource;
412*b1cdbd2cSJim Jagielski xResultSetProps->setPropertyValue(C2U("DataSourceName"), aBibUrlAny);
413*b1cdbd2cSJim Jagielski Any aCommandType; aCommandType <<= aBibDesc.nCommandType;
414*b1cdbd2cSJim Jagielski xResultSetProps->setPropertyValue(C2U("CommandType"), aCommandType);
415*b1cdbd2cSJim Jagielski Any aTableName; aTableName <<= aBibDesc.sTableOrQuery;
416*b1cdbd2cSJim Jagielski xResultSetProps->setPropertyValue(C2U("Command"), aTableName);
417*b1cdbd2cSJim Jagielski Any aResultSetType; aResultSetType <<= (sal_Int32)(ResultSetType::SCROLL_INSENSITIVE);
418*b1cdbd2cSJim Jagielski xResultSetProps->setPropertyValue(C2U("ResultSetType"), aResultSetType);
419*b1cdbd2cSJim Jagielski Any aResultSetCurrency; aResultSetCurrency <<= (sal_Int32)(ResultSetConcurrency::UPDATABLE);
420*b1cdbd2cSJim Jagielski xResultSetProps->setPropertyValue(C2U("ResultSetConcurrency"), aResultSetCurrency);
421*b1cdbd2cSJim Jagielski
422*b1cdbd2cSJim Jagielski sal_Bool bSuccess = sal_False;
423*b1cdbd2cSJim Jagielski try
424*b1cdbd2cSJim Jagielski {
425*b1cdbd2cSJim Jagielski xRowSet->execute();
426*b1cdbd2cSJim Jagielski bSuccess = sal_True;
427*b1cdbd2cSJim Jagielski }
428*b1cdbd2cSJim Jagielski catch(const SQLException&)
429*b1cdbd2cSJim Jagielski {
430*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
431*b1cdbd2cSJim Jagielski }
432*b1cdbd2cSJim Jagielski catch(const Exception& )
433*b1cdbd2cSJim Jagielski {
434*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
435*b1cdbd2cSJim Jagielski bSuccess = sal_False;
436*b1cdbd2cSJim Jagielski }
437*b1cdbd2cSJim Jagielski
438*b1cdbd2cSJim Jagielski if (!bSuccess)
439*b1cdbd2cSJim Jagielski {
440*b1cdbd2cSJim Jagielski Reference< XComponent > xSetComp(xRowSet, UNO_QUERY);
441*b1cdbd2cSJim Jagielski if (xSetComp.is())
442*b1cdbd2cSJim Jagielski xSetComp->dispose();
443*b1cdbd2cSJim Jagielski xRowSet = NULL;
444*b1cdbd2cSJim Jagielski }
445*b1cdbd2cSJim Jagielski else
446*b1cdbd2cSJim Jagielski ((BibliographyLoader*)this)->m_xCursor = xRowSet.get();
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski Reference< sdbcx::XColumnsSupplier > xSupplyCols(m_xCursor, UNO_QUERY);
449*b1cdbd2cSJim Jagielski if (xSupplyCols.is())
450*b1cdbd2cSJim Jagielski ((BibliographyLoader*)this)->m_xColumns = xSupplyCols->getColumns();
451*b1cdbd2cSJim Jagielski }
452*b1cdbd2cSJim Jagielski
453*b1cdbd2cSJim Jagielski return m_xColumns;
454*b1cdbd2cSJim Jagielski }
455*b1cdbd2cSJim Jagielski /* -----------------17.12.99 12:29-------------------
456*b1cdbd2cSJim Jagielski
457*b1cdbd2cSJim Jagielski --------------------------------------------------*/
GetIdentifierColumn() const458*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > BibliographyLoader::GetIdentifierColumn() const
459*b1cdbd2cSJim Jagielski {
460*b1cdbd2cSJim Jagielski BibDataManager* pDatMan = GetDataManager();
461*b1cdbd2cSJim Jagielski Reference< XNameAccess > xColumns = GetDataColumns();
462*b1cdbd2cSJim Jagielski rtl::OUString sIdentifierColumnName = pDatMan->GetIdentifierMapping();
463*b1cdbd2cSJim Jagielski
464*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > xReturn;
465*b1cdbd2cSJim Jagielski if (xColumns.is() && xColumns->hasByName(sIdentifierColumnName))
466*b1cdbd2cSJim Jagielski {
467*b1cdbd2cSJim Jagielski xReturn = Reference< XColumn > (*(Reference< XInterface > *)
468*b1cdbd2cSJim Jagielski xColumns->getByName(sIdentifierColumnName).getValue(), UNO_QUERY);
469*b1cdbd2cSJim Jagielski }
470*b1cdbd2cSJim Jagielski return xReturn;
471*b1cdbd2cSJim Jagielski }
472*b1cdbd2cSJim Jagielski
473*b1cdbd2cSJim Jagielski /* -----------------06.12.99 15:05-------------------
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski --------------------------------------------------*/
GetDataCursor() const476*b1cdbd2cSJim Jagielski Reference< XResultSet > BibliographyLoader::GetDataCursor() const
477*b1cdbd2cSJim Jagielski {
478*b1cdbd2cSJim Jagielski if (!m_xCursor.is())
479*b1cdbd2cSJim Jagielski GetDataColumns();
480*b1cdbd2cSJim Jagielski if (m_xCursor.is())
481*b1cdbd2cSJim Jagielski m_xCursor->first();
482*b1cdbd2cSJim Jagielski return m_xCursor;
483*b1cdbd2cSJim Jagielski }
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski /*-- 17.11.99 12:51:38---------------------------------------------------
486*b1cdbd2cSJim Jagielski
487*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
lcl_AddProperty(Reference<XNameAccess> xColumns,const Mapping * pMapping,const String & rColumnName)488*b1cdbd2cSJim Jagielski rtl::OUString lcl_AddProperty(Reference< XNameAccess > xColumns,
489*b1cdbd2cSJim Jagielski const Mapping* pMapping, const String& rColumnName)
490*b1cdbd2cSJim Jagielski {
491*b1cdbd2cSJim Jagielski String sColumnName(rColumnName);
492*b1cdbd2cSJim Jagielski if(pMapping)
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski for(sal_uInt16 nEntry = 0; nEntry < COLUMN_COUNT; nEntry++)
495*b1cdbd2cSJim Jagielski {
496*b1cdbd2cSJim Jagielski if(pMapping->aColumnPairs[nEntry].sLogicalColumnName == OUString(rColumnName))
497*b1cdbd2cSJim Jagielski {
498*b1cdbd2cSJim Jagielski sColumnName = pMapping->aColumnPairs[nEntry].sRealColumnName;
499*b1cdbd2cSJim Jagielski break;
500*b1cdbd2cSJim Jagielski }
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski }
503*b1cdbd2cSJim Jagielski rtl::OUString uColumnName(sColumnName);
504*b1cdbd2cSJim Jagielski rtl::OUString uRet;
505*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > xCol;
506*b1cdbd2cSJim Jagielski if (xColumns->hasByName(uColumnName))
507*b1cdbd2cSJim Jagielski xCol = Reference< sdb::XColumn > (*(Reference< XInterface > *)xColumns->getByName(uColumnName).getValue(), UNO_QUERY);
508*b1cdbd2cSJim Jagielski if (xCol.is())
509*b1cdbd2cSJim Jagielski uRet = xCol->getString();
510*b1cdbd2cSJim Jagielski return uRet;
511*b1cdbd2cSJim Jagielski }
512*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
getByName(const rtl::OUString & rName)513*b1cdbd2cSJim Jagielski Any BibliographyLoader::getByName(const rtl::OUString& rName) throw
514*b1cdbd2cSJim Jagielski ( NoSuchElementException, WrappedTargetException, RuntimeException )
515*b1cdbd2cSJim Jagielski {
516*b1cdbd2cSJim Jagielski Any aRet;
517*b1cdbd2cSJim Jagielski try
518*b1cdbd2cSJim Jagielski {
519*b1cdbd2cSJim Jagielski BibDataManager* pDatMan = ((BibliographyLoader*)this)->GetDataManager();
520*b1cdbd2cSJim Jagielski Reference< XResultSet > xCursor = GetDataCursor();
521*b1cdbd2cSJim Jagielski Reference< sdbcx::XColumnsSupplier > xSupplyCols(xCursor, UNO_QUERY);
522*b1cdbd2cSJim Jagielski Reference< XNameAccess > xColumns;
523*b1cdbd2cSJim Jagielski if (!xSupplyCols.is())
524*b1cdbd2cSJim Jagielski return aRet;
525*b1cdbd2cSJim Jagielski xColumns = xSupplyCols->getColumns();
526*b1cdbd2cSJim Jagielski DBG_ASSERT(xSupplyCols.is(), "BibliographyLoader::getByName : invalid columns returned by the data cursor (may be the result set is not alive ?) !");
527*b1cdbd2cSJim Jagielski if (!xColumns.is())
528*b1cdbd2cSJim Jagielski return aRet;
529*b1cdbd2cSJim Jagielski
530*b1cdbd2cSJim Jagielski String sIdentifierMapping = pDatMan->GetIdentifierMapping();
531*b1cdbd2cSJim Jagielski rtl::OUString sId = sIdentifierMapping;
532*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > xColumn;
533*b1cdbd2cSJim Jagielski if (xColumns->hasByName(sId))
534*b1cdbd2cSJim Jagielski xColumn = Reference< sdb::XColumn > (*(Reference< XInterface > *)xColumns->getByName(sId).getValue(), UNO_QUERY);
535*b1cdbd2cSJim Jagielski if (xColumn.is())
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski do
538*b1cdbd2cSJim Jagielski {
539*b1cdbd2cSJim Jagielski if ((rName == xColumn->getString()) && !xColumn->wasNull())
540*b1cdbd2cSJim Jagielski {
541*b1cdbd2cSJim Jagielski Sequence<PropertyValue> aPropSequ(COLUMN_COUNT);
542*b1cdbd2cSJim Jagielski PropertyValue* pValues = aPropSequ.getArray();
543*b1cdbd2cSJim Jagielski BibConfig* pConfig = BibModul::GetConfig();
544*b1cdbd2cSJim Jagielski BibDBDescriptor aBibDesc = BibModul::GetConfig()->GetBibliographyURL();
545*b1cdbd2cSJim Jagielski const Mapping* pMapping = pConfig->GetMapping(aBibDesc);
546*b1cdbd2cSJim Jagielski for(sal_uInt16 nEntry = 0; nEntry < COLUMN_COUNT; nEntry++)
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski const String sColName = pConfig->GetDefColumnName(
549*b1cdbd2cSJim Jagielski nEntry);
550*b1cdbd2cSJim Jagielski pValues[nEntry].Name = sColName;
551*b1cdbd2cSJim Jagielski pValues[nEntry].Value <<= lcl_AddProperty(xColumns, pMapping, sColName);
552*b1cdbd2cSJim Jagielski }
553*b1cdbd2cSJim Jagielski aRet.setValue(&aPropSequ, ::getCppuType((Sequence<PropertyValue>*)0));
554*b1cdbd2cSJim Jagielski
555*b1cdbd2cSJim Jagielski break;
556*b1cdbd2cSJim Jagielski }
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski while(xCursor->next());
559*b1cdbd2cSJim Jagielski }
560*b1cdbd2cSJim Jagielski }
561*b1cdbd2cSJim Jagielski catch(const Exception&)
562*b1cdbd2cSJim Jagielski {
563*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski return aRet;
566*b1cdbd2cSJim Jagielski }
567*b1cdbd2cSJim Jagielski /*-- 17.11.99 12:51:39---------------------------------------------------
568*b1cdbd2cSJim Jagielski
569*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
getElementNames(void)570*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > BibliographyLoader::getElementNames(void) throw ( RuntimeException )
571*b1cdbd2cSJim Jagielski {
572*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > aRet(10);
573*b1cdbd2cSJim Jagielski int nRealNameCount = 0;
574*b1cdbd2cSJim Jagielski try
575*b1cdbd2cSJim Jagielski {
576*b1cdbd2cSJim Jagielski Reference< XResultSet > xCursor(GetDataCursor());
577*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > xIdColumn(GetIdentifierColumn());
578*b1cdbd2cSJim Jagielski if (xIdColumn.is()) // implies xCursor.is()
579*b1cdbd2cSJim Jagielski {
580*b1cdbd2cSJim Jagielski do
581*b1cdbd2cSJim Jagielski {
582*b1cdbd2cSJim Jagielski rtl::OUString sTemp = xIdColumn->getString();
583*b1cdbd2cSJim Jagielski if (sTemp.getLength() && !xIdColumn->wasNull())
584*b1cdbd2cSJim Jagielski {
585*b1cdbd2cSJim Jagielski int nLen = aRet.getLength();
586*b1cdbd2cSJim Jagielski if(nLen == nRealNameCount)
587*b1cdbd2cSJim Jagielski aRet.realloc(nLen + 10);
588*b1cdbd2cSJim Jagielski rtl::OUString* pArray = aRet.getArray();
589*b1cdbd2cSJim Jagielski pArray[nRealNameCount] = sTemp;
590*b1cdbd2cSJim Jagielski nRealNameCount++;
591*b1cdbd2cSJim Jagielski }
592*b1cdbd2cSJim Jagielski }
593*b1cdbd2cSJim Jagielski while (xCursor->next());
594*b1cdbd2cSJim Jagielski }
595*b1cdbd2cSJim Jagielski }
596*b1cdbd2cSJim Jagielski catch(const Exception&)
597*b1cdbd2cSJim Jagielski {
598*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
599*b1cdbd2cSJim Jagielski }
600*b1cdbd2cSJim Jagielski
601*b1cdbd2cSJim Jagielski aRet.realloc(nRealNameCount);
602*b1cdbd2cSJim Jagielski return aRet;
603*b1cdbd2cSJim Jagielski }
604*b1cdbd2cSJim Jagielski /*-- 17.11.99 12:51:39---------------------------------------------------
605*b1cdbd2cSJim Jagielski
606*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
hasByName(const rtl::OUString & rName)607*b1cdbd2cSJim Jagielski sal_Bool BibliographyLoader::hasByName(const rtl::OUString& rName) throw ( RuntimeException )
608*b1cdbd2cSJim Jagielski {
609*b1cdbd2cSJim Jagielski sal_Bool bRet = sal_False;
610*b1cdbd2cSJim Jagielski try
611*b1cdbd2cSJim Jagielski {
612*b1cdbd2cSJim Jagielski Reference< XResultSet > xCursor = GetDataCursor();
613*b1cdbd2cSJim Jagielski Reference< sdb::XColumn > xIdColumn = GetIdentifierColumn();
614*b1cdbd2cSJim Jagielski
615*b1cdbd2cSJim Jagielski if (xIdColumn.is()) // implies xCursor.is()
616*b1cdbd2cSJim Jagielski {
617*b1cdbd2cSJim Jagielski do
618*b1cdbd2cSJim Jagielski {
619*b1cdbd2cSJim Jagielski rtl::OUString sCurrentId = xIdColumn->getString();
620*b1cdbd2cSJim Jagielski if (!xIdColumn->wasNull() && (rName.compareTo(sCurrentId) == COMPARE_EQUAL))
621*b1cdbd2cSJim Jagielski {
622*b1cdbd2cSJim Jagielski bRet = sal_True;
623*b1cdbd2cSJim Jagielski break;
624*b1cdbd2cSJim Jagielski }
625*b1cdbd2cSJim Jagielski }
626*b1cdbd2cSJim Jagielski while(xCursor->next());
627*b1cdbd2cSJim Jagielski }
628*b1cdbd2cSJim Jagielski }
629*b1cdbd2cSJim Jagielski catch(const Exception&)
630*b1cdbd2cSJim Jagielski {
631*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
632*b1cdbd2cSJim Jagielski }
633*b1cdbd2cSJim Jagielski return bRet;
634*b1cdbd2cSJim Jagielski }
635*b1cdbd2cSJim Jagielski /*-- 17.11.99 12:51:39---------------------------------------------------
636*b1cdbd2cSJim Jagielski
637*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
getElementType(void)638*b1cdbd2cSJim Jagielski Type BibliographyLoader::getElementType(void) throw ( RuntimeException )
639*b1cdbd2cSJim Jagielski {
640*b1cdbd2cSJim Jagielski return ::getCppuType((Sequence<PropertyValue>*)0);
641*b1cdbd2cSJim Jagielski }
642*b1cdbd2cSJim Jagielski /*-- 17.11.99 12:51:40---------------------------------------------------
643*b1cdbd2cSJim Jagielski
644*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
hasElements(void)645*b1cdbd2cSJim Jagielski sal_Bool BibliographyLoader::hasElements(void) throw ( RuntimeException )
646*b1cdbd2cSJim Jagielski {
647*b1cdbd2cSJim Jagielski Reference< XResultSet > xCursor = GetDataCursor();
648*b1cdbd2cSJim Jagielski Reference< XNameAccess > xColumns = GetDataColumns();
649*b1cdbd2cSJim Jagielski return xColumns.is() && (xColumns->getElementNames().getLength() != 0);
650*b1cdbd2cSJim Jagielski }
651*b1cdbd2cSJim Jagielski
652*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:39---------------------------------------------------
653*b1cdbd2cSJim Jagielski
654*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
getPropertySetInfo(void)655*b1cdbd2cSJim Jagielski Reference< XPropertySetInfo > BibliographyLoader::getPropertySetInfo(void) throw
656*b1cdbd2cSJim Jagielski ( RuntimeException )
657*b1cdbd2cSJim Jagielski {
658*b1cdbd2cSJim Jagielski static SfxItemPropertyMapEntry aBibProps_Impl[] =
659*b1cdbd2cSJim Jagielski {
660*b1cdbd2cSJim Jagielski { MAP_CHAR_LEN("BibliographyDataFieldNames"), 0, &::getCppuType((Sequence<PropertyValue>*)0), PropertyAttribute::READONLY, 0},
661*b1cdbd2cSJim Jagielski {0,0,0,0,0,0}
662*b1cdbd2cSJim Jagielski };
663*b1cdbd2cSJim Jagielski static Reference< XPropertySetInfo > xRet =
664*b1cdbd2cSJim Jagielski SfxItemPropertySet(aBibProps_Impl).getPropertySetInfo();
665*b1cdbd2cSJim Jagielski return xRet;
666*b1cdbd2cSJim Jagielski }
667*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:39---------------------------------------------------
668*b1cdbd2cSJim Jagielski
669*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
setPropertyValue(const rtl::OUString &,const Any &)670*b1cdbd2cSJim Jagielski void BibliographyLoader::setPropertyValue(const rtl::OUString& /*PropertyName*/,
671*b1cdbd2cSJim Jagielski const Any& /*aValue*/)
672*b1cdbd2cSJim Jagielski throw( UnknownPropertyException, PropertyVetoException,
673*b1cdbd2cSJim Jagielski IllegalArgumentException, WrappedTargetException, RuntimeException)
674*b1cdbd2cSJim Jagielski {
675*b1cdbd2cSJim Jagielski throw UnknownPropertyException();
676*b1cdbd2cSJim Jagielski //no changeable properties
677*b1cdbd2cSJim Jagielski }
678*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:39---------------------------------------------------
679*b1cdbd2cSJim Jagielski
680*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
getPropertyValue(const rtl::OUString & rPropertyName)681*b1cdbd2cSJim Jagielski Any BibliographyLoader::getPropertyValue(const rtl::OUString& rPropertyName)
682*b1cdbd2cSJim Jagielski throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
683*b1cdbd2cSJim Jagielski {
684*b1cdbd2cSJim Jagielski Any aRet;
685*b1cdbd2cSJim Jagielski static const sal_uInt16 aInternalMapping[] =
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski IDENTIFIER_POS , // BibliographyDataField_IDENTIFIER
688*b1cdbd2cSJim Jagielski AUTHORITYTYPE_POS , // BibliographyDataField_BIBILIOGRAPHIC_TYPE
689*b1cdbd2cSJim Jagielski ADDRESS_POS , // BibliographyDataField_ADDRESS
690*b1cdbd2cSJim Jagielski ANNOTE_POS , // BibliographyDataField_ANNOTE
691*b1cdbd2cSJim Jagielski AUTHOR_POS , // BibliographyDataField_AUTHOR
692*b1cdbd2cSJim Jagielski BOOKTITLE_POS , // BibliographyDataField_BOOKTITLE
693*b1cdbd2cSJim Jagielski CHAPTER_POS , // BibliographyDataField_CHAPTER
694*b1cdbd2cSJim Jagielski EDITION_POS , // BibliographyDataField_EDITION
695*b1cdbd2cSJim Jagielski EDITOR_POS , // BibliographyDataField_EDITOR
696*b1cdbd2cSJim Jagielski HOWPUBLISHED_POS , // BibliographyDataField_HOWPUBLISHED
697*b1cdbd2cSJim Jagielski INSTITUTION_POS , // BibliographyDataField_INSTITUTION
698*b1cdbd2cSJim Jagielski JOURNAL_POS , // BibliographyDataField_JOURNAL
699*b1cdbd2cSJim Jagielski MONTH_POS , // BibliographyDataField_MONTH
700*b1cdbd2cSJim Jagielski NOTE_POS , // BibliographyDataField_NOTE
701*b1cdbd2cSJim Jagielski NUMBER_POS , // BibliographyDataField_NUMBER
702*b1cdbd2cSJim Jagielski ORGANIZATIONS_POS , // BibliographyDataField_ORGANIZATIONS
703*b1cdbd2cSJim Jagielski PAGES_POS , // BibliographyDataField_PAGES
704*b1cdbd2cSJim Jagielski PUBLISHER_POS , // BibliographyDataField_PUBLISHER
705*b1cdbd2cSJim Jagielski SCHOOL_POS , // BibliographyDataField_SCHOOL
706*b1cdbd2cSJim Jagielski SERIES_POS , // BibliographyDataField_SERIES
707*b1cdbd2cSJim Jagielski TITLE_POS , // BibliographyDataField_TITLE
708*b1cdbd2cSJim Jagielski REPORTTYPE_POS , // BibliographyDataField_REPORT_TYPE
709*b1cdbd2cSJim Jagielski VOLUME_POS , // BibliographyDataField_VOLUME
710*b1cdbd2cSJim Jagielski YEAR_POS , // BibliographyDataField_YEAR
711*b1cdbd2cSJim Jagielski URL_POS , // BibliographyDataField_URL
712*b1cdbd2cSJim Jagielski CUSTOM1_POS , // BibliographyDataField_CUSTOM1
713*b1cdbd2cSJim Jagielski CUSTOM2_POS , // BibliographyDataField_CUSTOM2
714*b1cdbd2cSJim Jagielski CUSTOM3_POS , // BibliographyDataField_CUSTOM3
715*b1cdbd2cSJim Jagielski CUSTOM4_POS , // BibliographyDataField_CUSTOM4
716*b1cdbd2cSJim Jagielski CUSTOM5_POS , // BibliographyDataField_CUSTOM5
717*b1cdbd2cSJim Jagielski ISBN_POS //BibliographyDataField_ISBN
718*b1cdbd2cSJim Jagielski };
719*b1cdbd2cSJim Jagielski if(C2U("BibliographyDataFieldNames") == rPropertyName)
720*b1cdbd2cSJim Jagielski {
721*b1cdbd2cSJim Jagielski Sequence<PropertyValue> aSeq(COLUMN_COUNT);
722*b1cdbd2cSJim Jagielski PropertyValue* pArray = aSeq.getArray();
723*b1cdbd2cSJim Jagielski BibConfig* pConfig = BibModul::GetConfig();
724*b1cdbd2cSJim Jagielski for(sal_uInt16 i = 0; i <= text::BibliographyDataField::ISBN ; i++)
725*b1cdbd2cSJim Jagielski {
726*b1cdbd2cSJim Jagielski pArray[i].Name = pConfig->GetDefColumnName(aInternalMapping[i]);
727*b1cdbd2cSJim Jagielski pArray[i].Value <<= (sal_Int16) i;
728*b1cdbd2cSJim Jagielski }
729*b1cdbd2cSJim Jagielski aRet.setValue(&aSeq, ::getCppuType((Sequence<PropertyValue>*)0));
730*b1cdbd2cSJim Jagielski }
731*b1cdbd2cSJim Jagielski else
732*b1cdbd2cSJim Jagielski throw UnknownPropertyException();
733*b1cdbd2cSJim Jagielski return aRet;
734*b1cdbd2cSJim Jagielski }
735*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:40---------------------------------------------------
736*b1cdbd2cSJim Jagielski
737*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
addPropertyChangeListener(const rtl::OUString &,const Reference<XPropertyChangeListener> &)738*b1cdbd2cSJim Jagielski void BibliographyLoader::addPropertyChangeListener(
739*b1cdbd2cSJim Jagielski const rtl::OUString& /*PropertyName*/, const Reference< XPropertyChangeListener > & /*aListener*/)
740*b1cdbd2cSJim Jagielski throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
741*b1cdbd2cSJim Jagielski {
742*b1cdbd2cSJim Jagielski //no bound properties
743*b1cdbd2cSJim Jagielski }
744*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:40---------------------------------------------------
745*b1cdbd2cSJim Jagielski
746*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
removePropertyChangeListener(const rtl::OUString &,const Reference<XPropertyChangeListener> &)747*b1cdbd2cSJim Jagielski void BibliographyLoader::removePropertyChangeListener(
748*b1cdbd2cSJim Jagielski const rtl::OUString& /*PropertyName*/, const Reference< XPropertyChangeListener > & /*aListener*/)
749*b1cdbd2cSJim Jagielski throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
750*b1cdbd2cSJim Jagielski {
751*b1cdbd2cSJim Jagielski //no bound properties
752*b1cdbd2cSJim Jagielski }
753*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:40---------------------------------------------------
754*b1cdbd2cSJim Jagielski
755*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
addVetoableChangeListener(const rtl::OUString &,const Reference<XVetoableChangeListener> &)756*b1cdbd2cSJim Jagielski void BibliographyLoader::addVetoableChangeListener(
757*b1cdbd2cSJim Jagielski const rtl::OUString& /*PropertyName*/, const Reference< XVetoableChangeListener > & /*aListener*/)
758*b1cdbd2cSJim Jagielski throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
759*b1cdbd2cSJim Jagielski {
760*b1cdbd2cSJim Jagielski //no vetoable properties
761*b1cdbd2cSJim Jagielski }
762*b1cdbd2cSJim Jagielski /*-- 07.12.99 14:28:40---------------------------------------------------
763*b1cdbd2cSJim Jagielski
764*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
removeVetoableChangeListener(const rtl::OUString &,const Reference<XVetoableChangeListener> &)765*b1cdbd2cSJim Jagielski void BibliographyLoader::removeVetoableChangeListener(
766*b1cdbd2cSJim Jagielski const rtl::OUString& /*PropertyName*/, const Reference< XVetoableChangeListener > & /*aListener*/)
767*b1cdbd2cSJim Jagielski throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
768*b1cdbd2cSJim Jagielski {
769*b1cdbd2cSJim Jagielski //no vetoable properties
770*b1cdbd2cSJim Jagielski }
771*b1cdbd2cSJim Jagielski
772*b1cdbd2cSJim Jagielski
773*b1cdbd2cSJim Jagielski
774