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 (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.
  • Sample .odb databases are available for this tutorial.
  • Studying kexi/migration/importtablewizard.cpp which is a GUI taking an instance of implementation of a migrate driver derived from KexiMigration::KexiMigrate (in your case - the ODB driver). It's the m_migrateDriver attribute.
  • 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

This is a notepad for development

Schedule

TODO: Put a link to a Google calendar here.

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