1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_dbaccess.hxx"
26
27 #include <cppuhelper/factory.hxx>
28 #include <cppuhelper/implementationentry.hxx>
29 #include "module_dba.hxx"
30 #include <osl/diagnose.h>
31 #include "DatabaseDataProvider.hxx"
32 #include "dbadllapi.hxx"
33
34 /********************************************************************************************/
35
36 using namespace ::com::sun::star::uno;
37 using namespace ::com::sun::star::lang;
38 using namespace ::com::sun::star::registry;
39
40 //***************************************************************************************
41 //
42 // registry functions
43 extern "C" void SAL_CALL createRegistryInfo_ODatabaseContext();
44 extern "C" void SAL_CALL createRegistryInfo_OCommandDefinition();
45 extern "C" void SAL_CALL createRegistryInfo_OComponentDefinition();
46 extern "C" void SAL_CALL createRegistryInfo_ORowSet();
47 extern "C" void SAL_CALL createRegistryInfo_ODatabaseDocument();
48 extern "C" void SAL_CALL createRegistryInfo_ODatabaseSource();
49 extern "C" void SAL_CALL createRegistryInfo_DataAccessDescriptorFactory();
50
51 namespace dba{
52 //--------------------------------------------------------------------------
53 ::cppu::ImplementationEntry entries[] = {
54 { &::dbaccess::DatabaseDataProvider::Create, &::dbaccess::DatabaseDataProvider::getImplementationName_Static, &::dbaccess::DatabaseDataProvider::getSupportedServiceNames_Static,
55 &cppu::createSingleComponentFactory, 0, 0 },
56 { 0, 0, 0, 0, 0, 0 }
57 };
58 }
59
60 //***************************************************************************************
61 //
62 // Die vorgeschriebene C-Api muss erfuellt werden!
63 // Sie besteht aus drei Funktionen, die von dem Modul exportiert werden muessen.
64 //
createRegistryInfo_DBA()65 extern "C" void SAL_CALL createRegistryInfo_DBA()
66 {
67 static sal_Bool bInit = sal_False;
68 if (!bInit)
69 {
70 createRegistryInfo_ODatabaseContext();
71 createRegistryInfo_OCommandDefinition();
72 createRegistryInfo_OComponentDefinition();
73 createRegistryInfo_ORowSet();
74 createRegistryInfo_ODatabaseDocument();
75 createRegistryInfo_ODatabaseSource();
76 createRegistryInfo_DataAccessDescriptorFactory();
77 bInit = sal_True;
78 }
79 }
80
81 //---------------------------------------------------------------------------------------
82
component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName,uno_Environment **)83 extern "C" OOO_DLLPUBLIC_DBA void SAL_CALL component_getImplementationEnvironment(
84 const sal_Char **ppEnvTypeName,
85 uno_Environment **
86 )
87 {
88 createRegistryInfo_DBA();
89 *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
90 }
91
92 //---------------------------------------------------------------------------------------
component_getFactory(const sal_Char * pImplementationName,void * pServiceManager,void * pRegistryKey)93 extern "C" OOO_DLLPUBLIC_DBA void* SAL_CALL component_getFactory(
94 const sal_Char* pImplementationName,
95 void* pServiceManager,
96 void* pRegistryKey)
97 {
98 Reference< XInterface > xRet;
99 if (pServiceManager && pImplementationName)
100 {
101 xRet = ::dba::DbaModule::getInstance().getComponentFactory(
102 ::rtl::OUString::createFromAscii( pImplementationName ),
103 static_cast< XMultiServiceFactory* >( pServiceManager ) );
104 }
105
106 if (xRet.is())
107 xRet->acquire();
108 else
109 return cppu::component_getFactoryHelper(
110 pImplementationName, pServiceManager, pRegistryKey, dba::entries);
111 return xRet.get();
112 };
113