Re: Help Required In Writing a New SDBC Driver For LDAP

Ocke Janssen <[email protected]> Mon, 14 Mar 2011 08:25:08 +0100
Newsgroups gmane.comp.openoffice.dba.devel
Message-ID <[email protected]>
Hi Rohit,

On 12.03.2011 07:17, Rohit Kulkarni wrote:
> As a first step, I copied the folder DriverSkeleton to
> "../connectivity/drivers/" .I created .xcu and .xml files.To run dmake I
> must have makefile.mk <http://makefile.mk> in my driver folder. So, I
> checked a makefile.mk <http://makefile.mk> in calc folder and made same
> for DriverSkeleton driver. Also, I copied exports.dxp and .map files
> from calc to DriverSkeleton.
> Finally, my DriverSkeleton folder contains following files--
>
> [root@localhost drivers]# cd DriverSkeleton/
> [root@localhost DriverSkeleton]# ls
> DriverSkeleton.map              Makefile
> propertyids.hxx                    SDriver.cxx
> SResultSet.hxx                    SStatement.hxx
> DriverSkeleton.xcu makefile.mk <http://makefile.mk>
> SConnection.cxx                  SDriver.hxx
> SResultSetMetaData.cxx      DriverSkeleton.xml
> OSubComponent.hxx            SConnection.hxx
> SPreparedStatement.cxx      SResultSetMetaData.hxx
> exports.dxp                          OTypeInfo.hxx
> SDatabaseMetaData.cxx       SPreparedStatement.hxx
> SServices.cxx                      How_to_write_my_own_driver.txt
> propertyids.cxx                     SDatabaseMetaData.hxx
> SResultSet.cxx                     SStatement.cxx
>
Delete following files they are not longer needed because they already 
exists in the connectivity module.

- Makefile (you replaced it with makefile.mk)
- propertyids.cxx, propertyids.hxx, OTypeInfo.hxx (these files are 
located in connectivity/source/inc)

Please rename you xcu and xml file to a more explaining name like 
VeryFastLdapDriver, just kidding but you should use a better name than 
DriverSkeleton.xcu or xml :-) The name has to be unique as well as the 
cxx files.

Best regards,

Ocke


> After running dmake in the same folder it give me the following output--
>
> ../../../unxlngi6.pro/slo/SResultSet.o
> <http://unxlngi6.pro/slo/SResultSet.o>: In function
> `connectivity::skeleton::OResultSet::createArrayHelper() const':
> SResultSet.cxx:(.text+0x439): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SResultSet.cxx:(.text+0x49d): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SResultSet.cxx:(.text+0x501): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SResultSet.cxx:(.text+0x55f): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SResultSet.cxx:(.text+0x5c3): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> ../../../unxlngi6.pro/slo/SResultSet.o:SResultSet.cxx:(.text+0x627)
> <http://unxlngi6.pro/slo/SResultSet.o:SResultSet.cxx:(.text+0x627)>:
> more undefined references to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const' follow
> ../../../unxlngi6.pro/slo/SResultSet.o
> <http://unxlngi6.pro/slo/SResultSet.o>: In function
> `connectivity::skeleton::OResultSet::getMetaData()':
> SResultSet.cxx:(.text+0x1f9f): undefined reference to `vtable for
> connectivity::skeleton::OResultSetMetaData'
> ../../../unxlngi6.pro/slo/SResultSet.o
> <http://unxlngi6.pro/slo/SResultSet.o>: In function
> `connectivity::skeleton::OPropertyMap::getPropMap()':
> SResultSet.cxx:(.text._ZN12connectivity8skeleton12OPropertyMap10getPropMapEv[connectivity::skeleton::OPropertyMap::getPropMap()]+0x9b):
> undefined reference to
> `connectivity::skeleton::OPropertyMap::~OPropertyMap()'
> ../../../unxlngi6.pro/slo/SStatement.o
> <http://unxlngi6.pro/slo/SStatement.o>: In function
> `connectivity::skeleton::OStatement_Base::createArrayHelper() const':
> SStatement.cxx:(.text+0x58d): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SStatement.cxx:(.text+0x5f1): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SStatement.cxx:(.text+0x658): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SStatement.cxx:(.text+0x6bf): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> SStatement.cxx:(.text+0x726): undefined reference to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const'
> ../../../unxlngi6.pro/slo/SStatement.o:SStatement.cxx:(.text+0x78d)
> <http://unxlngi6.pro/slo/SStatement.o:SStatement.cxx:(.text+0x78d)>:
> more undefined references to
> `connectivity::skeleton::OPropertyMap::getNameByIndex(long) const' follow
> ../../../unxlngi6.pro/slo/SPreparedStatement.o
> <http://unxlngi6.pro/slo/SPreparedStatement.o>: In function
> `connectivity::skeleton::OPreparedStatement::getMetaData()':
> SPreparedStatement.cxx:(.text+0xc05): undefined reference to `vtable for
> connectivity::skeleton::OResultSetMetaData'
> collect2: ld returned 1 exit status
> dmake:  Error code 1, while making
> '../../../unxlngi6.pro/lib/libDriverSkeletonli.so
> <http://unxlngi6.pro/lib/libDriverSkeletonli.so>'

>
> I am building the Skeleton Driver and I dont know how to solve this problem.
> Could you please help to solve this problem? Am I doing anything wrong ?
>
> Thanks,
> Rohit
> On Fri, Mar 11, 2011 at 11:35 AM, Ocke Janssen <[email protected]
> <mailto:[email protected]>> wrote:
>
>     Hi Rohit,
>
>
>     On 10.03.2011 16:58, Rohit Kulkarni wrote:
>
>         Hi,
>
>         Thanks for your reply. I really appreciate the help.
>
>         I could find the skeleton files at the location you have
>         mentioned. Currently we are planning to develop the SDBC driver
>         which
>         will not be an extension. So, we will have to build the skeleton
>         driver
>         first, get it in the list of available drivers and then make it
>         work for
>         LDAP.
>
>         Could you please elaborate the point where you mentioned to search
>         for macab key on the website?
>         How does the open office dmake understand that it has to build
>         this new
>         driver?
>
>     I guess you place your driver in connectivity. So in that module you
>     find a file named prj/build.lst that is read when call the "build"
>     command. But for the start you could simply go in your folder and
>     call dmake. Each driver has a xcu file which must be "deliver"ed.
>     Which files are needed to copy/deliver is defined in prj/d.lst
>     So when you have built your driver with dmake you must call deliver.
>     After that go to the module scp2 and call "build" and deliver again.
>     Then you have to build the module instsetoo_native and voila your
>     OOo ist to install.
>     Below follows a simple list of todo's:
>     1. Create the driver files (Driver,Connection,Statement,ResultSet,...)
>     2. Create the xcu and xml file, take a look at the other drivers for
>     inspiration ;-)
>     3. dmake
>     4. Adjust d.lst to fit your new driver
>     5. deliver
>     6. Search for the word macab or jdbc in the module scp2 and create
>     the same for your new driver
>     7. build
>     8. deliver
>     9. go to instsetoo_native and build
>     10. Install your new OOo and enjoy your new driver.
>     11. Debug issues ;-)
>
>     - oj
>
>
>
>         Thanks,
>         Rohit
>
>         On Thu, Mar 10, 2011 at 12:38 PM, Ocke Janssen
>         <[email protected] <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>> wrote:
>
>             Hi Rohit,
>
>             First of all you have to decide if the driver should be an
>         extension
>             or not. I would first try it as extension because you could
>         look at
>             the mysql driver.
>
>             Not an extension:
>             The best and easiest way to start I guess is to simply copy the
>             skeleton files in a folder beside the other database drivers in
>             connectivity. Further on you should copy e.g. the macab.xml and
>             macab.xcu file and rename it to your driver in the same
>         directory.
>             Search with opengrok
>         http://svn.services.openoffice.org/opengrok/
>             the macab key inside the other projects e.g. scp2 to include the
>             files into the OOo installation. Build OOo.
>
>             As extension:
>             Here the best way is to look at the mysqlc/source where the
>         mysql
>             extension is build and copy the files you need to build the
>         oxt. But
>             please be aware to replace all occurrences of mysql with
>         your name ;-)
>
>
>             Best regards,
>
>             Ocke
>
>
>             On 09.03.2011 19:21, Ocke Janssen wrote:
>
>                 Hi,
>
>                 The driver can be found here
>                 ooo\odk\examples\DevelopersGuide\Database\DriverSkeleton
>
>                 - oj
>
>                 PS: I'll write more tomorrow. ;-)
>
>                 On 09.03.2011 16:37, Rohit Kulkarni wrote:
>
>                     Currently I am writing an SDBC driver for LDAP
>         directories. I am
>                     following the guidelines given at
>         http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Database/SDBC_Driver
>
>                     This includes writing Driver, connection, statement and
>                     resultset
>                     services.
>
>                     I want to compile the skeleton driver code and have
>         an entry
>                     in the list
>                     of available drivers. This driver will be a pseudo
>         driver
>                     and will not
>                     have any functionality. This will help in developing the
>                     actual driver.
>
>                     I am not able to find skeleton driver related source
>         files.
>                     I could
>                     locate a folder named skeleton in
>         "/OOO320_m19/connectivity/workben/skeleton" but could not
>                     find actual
>                     source files.
>
>                     Could anyone please give me any pointers regarding
>
>                     1. Where can I find the source files for the
>         skeleton driver?
>                     2. How to build a skeleton driver?
>                     3. How to make an entry in available drivers list?
>
>                     Thanks for your time. I really appreciate the help.
>
>                     Regards,
>                     Rohit
>
>
>                 --
>
>           -----------------------------------------------------------------
>                 To unsubscribe send email to
>         [email protected]
>         <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>
>
>                 For additional commands send email to
>         [email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]>>
>
>                 with Subject: help
>
>
>             --
>
>           -----------------------------------------------------------------
>             To unsubscribe send email to
>         [email protected]
>         <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>
>
>             For additional commands send email to
>         [email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]>>
>             with Subject: help
>
>
>
>     --
>     -----------------------------------------------------------------
>     To unsubscribe send email to [email protected]
>     <mailto:[email protected]>
>     For additional commands send email to [email protected]
>     <mailto:[email protected]>
>     with Subject: help
>
>

--
-----------------------------------------------------------------
To unsubscribe send email to [email protected]
For additional commands send email to [email protected]
with Subject: help