Mondrian datasource storage in JCR

Mondrian Datasource JCR specification.

Mondrian datasources are stored in JCR using the following specification composed of two parts:
1. /etc/mondrian/<CATALOG_NAME>/schema.xml
    Where "schema.xml" is a file containing the Mondrian schema.
2. /etc/mondrian/<CATALOG_NAME>/metadata
    Where "metadata" is a JCR node containing the Olap4J connection properties

The <CATALOG_NAME> is resolved in a 2 step process:

1. Using schema name as defined in the Mondrian schema file (this is the default step) OR
2. Using the catalog name from datasources.xml

Mondrian datasources are referred by using the following URL:
mondrian:/<CATALOG_NAME>

Mondrian Datasource Import API.

pentaho-platform-extensions project.

org.pentaho.platform.plugin.services.importer.MondrianImportHandler
Is the registered importer in the platform to handle Mondrian schemas.

org.pentaho.platform.plugin.action.mondrian.catalog.MondrianCatalogHelper
Is responsible for all the Mondrian schemas administration cycle as well as several helper methods.

org.pentaho.platform.plugin.services.importexport.legacy.MondrianCatalogRepositoryHelper
Encapsulates the logic specific to the storing Mondrian datasources in JCR.

pentaho-platform-repository project.

org.pentaho.platform.repository.solution.filebased.MondrianVFS
FileProvider responsible for resolving mondrian:/<catalog> URLs to specific /etc/mondrian/<catalog>/schema.xml files in JCR.

Mondrian Schema Import Process Example.

1. When performing an import of a Mondrian schema file the process looks for the definition of the provided schema in the "datasources.xml".
   Once located it will resolve the catalog name using the specification mentioned previously, in this case as "SteelWheels".

<?xml version="1.0" encoding="UTF-8"?>
<DataSources>
  <DataSource>
    <DataSourceName>Provider=Mondrian;DataSource=Pentaho</DataSourceName>  
    <DataSourceDescription>Pentaho BI Platform Datasources</DataSourceDescription>  
    <URL>http://localhost:8080/pentaho/Xmla?userid=joe&amp;password=password</URL>  
    <DataSourceInfo>Provider=mondrian</DataSourceInfo>  
    <ProviderName>PentahoXMLA</ProviderName>  
    <ProviderType>MDP</ProviderType>  
    <AuthenticationMode>Unauthenticated</AuthenticationMode>  
    <Catalogs>
      <Catalog name="SteelWheels">
        <DataSourceInfo>Provider=mondrian;DataSource=SampleData</DataSourceInfo>  
        <Definition>solution:steel-wheels/analysis/steelwheels.mondrian.xml</Definition>
      </Catalog>  
    </Catalogs>
  </DataSource>
</DataSources>

2. Once the catalog name "SteelWheels" has been resolved the import process will create the following Mondrian datasource using the
information in the <DataSourceInfo> and <Definition> nodes from the <Catalog> definition in the "datasources.xml".

/etc/mondrian/SteelWheels/schema.xml

/etc/mondrian/SteelWheels/metadata

The metadata JCR node will contain the following name/value properties:
DataSourceInfo=Provider=mondrian;DataSource=SampleData
Definition=mondrian:/SteelWheels

3. Finally the catalog definition in the datasources.xml" will be changed to use the new URL specification for Mondrian datasources:
<Definition>mondrian:/SteelWheels</Definition>