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