Package And Repository Structure

Package And Repository Structure

Terminology

Library

A library in the reporting space is a independent, self-contained and widely reusable code.

A library can depend on other libraries, but must not have any dependencies on the reporting-engine itself. A library can depend on other libraries, which in itself must not depend direct or indirect on this library. (Or in other words: No circular dependencies of any kind are allowed.)

If a library is so specialized in its domain that it cannot be used anywhere except in a single project, it probably should not be a library at all. Exception to the rule: If the library can be reasonably anticipated to be used independently or if the code of the library is independent and not expected to change anymore, it may be a reasonable thing to create a "drop-and-forget" library for it to reduce the overall maintenance of the main project.

A library cannot depend on one of the Main-projects. If it does, then it does not belong into the library space and should be a extension-project instead.

Main project

A main project is one of the releasable top-level libraries or applications. For the reporting domain, this is the

  • Classic Engine

  • Flow Engine

  • Report-Designer

  • Report-Design-Wizard

Main projects can depend on libraries or other main-projects and their extensions. However, circular dependencies are not allowed.

Extension project

A Extension project is a plugin or extension-library that depends on one of the main-projects and extends its functionality. Extension projects can depend on libraries, the main project for which they are a declared extension and other main-projects and their extensions. Circular dependencies are not allowed.

Examples for extension projects are Data-Source plugins or the Demo projects of the reporting engines.

Repository Structure

  • svn://source.pentaho.org/pentaho-reporting/libraries/

Contains all subprojects that qualify as libraries.

  • svn://source.pentaho.org/pentaho-reporting/engines/classic/

Contains the Classic-Engine and all Classic-Engine Extension projects.

  • svn://source.pentaho.org/pentaho-reporting/engines/flow/

Contains the Flow-Engine and all Flow-Engine Extension projects.

  • svn://source.pentaho.org/pentaho-reporting/tools/wizard-core/

  • svn://source.pentaho.org/pentaho-reporting/tools/wizard-swing/

Contains the Report-Design-Wizard and all Wizard-Plugin projects.

  • svn://source.pentaho.org/pentaho-reporting/tools/designer/

Contains the Report-Designer and all Designer-Plugin projects.

Package structure

The package structure should mirror the global SVN structure. Each project has a unique package space that should not overlap with other projects (the extensions being the only exception).

  • Classic Engine

    • org.pentaho.reporting.engine.classic.core

    • org.pentaho.reporting.engine.classic.extensions

    • org.pentaho.reporting.engine.classic.extensions.datasources.kettle

    • org.pentaho.reporting.engine.classic.extensions.datasources.pmd

    • org.pentaho.reporting.engine.classic.extensions.datasources.mondrian

    • org.pentaho.reporting.engine.classic.testcases

    • org.pentaho.reporting.engine.classic.demo

  • Flow Engine

    • org.pentaho.reporting.engine.flow.core

    • org.pentaho.reporting.engine.flow.extensions

    • org.pentaho.reporting.engine.flow.testcases

  • Report-Design-Wizard

    • org.pentaho.reporting.tools.wizard.core

    • org.pentaho.reporting.tools.wizard.swing

    • org.pentaho.reporting.tools.wizard.swt

  • Report-Designer

    • org.pentaho.reporting.tools.designer.core

    • org.pentaho.reporting.tools.designer.pentaho

  • Libraries

    • org.pentaho.reporting.libraries.base

    • org.pentaho.reporting.libraries.xmlns

    • org.pentaho.reporting.libraries.resourceloader

    • org.pentaho.reporting.libraries.fonts

    • org.pentaho.reporting.libraries.docbundle

    • org.pentaho.reporting.libraries.formatting

    • org.pentaho.reporting.libraries.formula

    • org.pentaho.reporting.libraries.pixie

    • org.pentaho.reporting.libraries.repository

    • org.pentaho.reporting.libraries.serializer

    • org.pentaho.reporting.libraries.sparklines