Kexi/Junior Jobs/Add support for importing tables from LibreOffice Base
< Kexi | Junior Jobs
Status: in progress, assigned to Harshita Mistry ([email protected]). Student's time zone: (GMT-05:00) Eastern Time - Toronto. Mentor's time zone (GMT+1) Poland - Warsaw.
Public Calendar with tasks and availability: [1].
Goal: Add support for importing (Kexi calls it data/design migration) tables from LibreOffice (or OpenOffice) Base (ODB format) to Kexi.
Proposed and mentored by Jstaniek, 2014
Knowledge Prerequisites
C++, some Qt, some databases, some XML, software architecture
Requirements
- In the GUI the feature shall be available in the same place as the import from MDB: External Data -> Import Tables -> Table Importing Wizard
- Then user would see .odb support in the open file dialog, just like it has access to importing CSV or MDB
- cons5.odb (referred below in the Sample database section) database should properly import as a Kexi project, including:
- all tables with all columns and datatypes
- all data found in the tables
- Other objects such as queries, forms, reports, etc. should be skipped during the import
Sample database
Sample .odb databases are available for this tutorial:
- From the libreoffice_base_files.zip archive cons4.odb has been extracted and altered a bit (added usage of more data types, floating point and BLOB in the patients table). Resulting database is cons5.odb.
Hints
- This task involves research on ODB format (it's relatively openly defined)
- Qt/C++ shall be used for the task together with Java engine (HyperSQL aka HSQLDB) and probably connected via JNI. This could be introduction to later development of complete database import from ODB to a Kexi database.
- See [3] for a start.
- Then see the HSQL Guide
- In particular look what are the elements (files) of typical HyperSQL Database.
- Studying kexi/migration/importtablewizard.cpp which is a GUI, in m_migrateDriver attribute taking an instance of implementation of a migrate driver derived from KexiMigrate class (in your case - the ODBMigrate driver).
- Implementing plugin (needed methods of the driver) in migration/odb/ by looking how it was performed for other cases, e.g. for mysql (see kexi/migration/mysql/ dir) or other cases such as pqxx, txt, xbase, sybase or mdb
- In the actual C++ implementation, KoOdfReadStore class from calligra libs can be used to read contents of the .odb.
Organization of the works
- commit changes to student's public branch at least once after each workday, not after a milestone
- developing wire-frames/prototypes of the software in advance, especially important since the solution is rather hybrid
- documenting them and developing/designing tests while the development progresses, not as the last step
- developing both C++/Qt side of the solution as well as the Java side in parallel to catch possible difficulties earlier
- putting the tasks in calendar (we may use e.g. a public Google calendar for that) so we can track the status
After implementation
TODO
Development
1. https://git.reviewboard.kde.org/r/118044
A java program that formats odb files and reads binary data from hsqldb using the hsqldb jdbc driver.
2. https://git.reviewboard.kde.org/r/118067
A cpp program that calls a java program using Java Native Interface.
Schedule
https://www.google.com/calendar/embed?src=harshimistry%40gmail.com
Coding standards
Source Code Location
- Early stage: 3rd-party repository, cloned Calligra repo (GitHub)
- Finally: KDE repo(s)
- Feature branch: kexi-odb-mistry, based on master branch
- Accepted and reviewed code will be integrated with the master branch of calligra by the mentor.
Code Review
- Once the code is ready for review, it should be put for review at http://git.reviewboard.kde.org.