Kexi/Junior Jobs/Add support for importing tables from LibreOffice Base

From KDE Community Wiki

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].

GSOC_2014_150x150.png

Note

This task is assigned within the GSoC 2014 program for KDE. Application page: [2].


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

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
  • Sample .odb databases are available for this tutorial.
  • 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. [4]/

   A java program that formats odb files and reads binary data from hsqldb using the hsqldb jdbc driver.

2. [5]

   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
  • Later: KDE repo(s)
    • Feature branch: kexi-odb-mistry
  • Accepted and reviewed code finds its way to the master branch of calligra.

Code Review