/**
   * Initializes the module. Use this method to perform all initial setup operations. This method is
   * called only once in a modules lifetime. If the initializing cannot be completed, throw a
   * ModuleInitializeException to indicate the error,. The module will not be available to the
   * system.
   *
   * @param subSystem the subSystem.
   * @throws ModuleInitializeException if an error ocurred while initializing the module.
   */
  public void initialize(final SubSystem subSystem) throws ModuleInitializeException {
    DataFactoryXmlResourceFactory.register(BandedMDXDataSourceXmlFactoryModule.class);
    DataFactoryXmlResourceFactory.register(LegacyBandedMDXDataSourceXmlFactoryModule.class);
    DataFactoryXmlResourceFactory.register(DenormalizedMDXDataSourceXmlFactoryModule.class);
    DataFactoryXmlResourceFactory.register(SimpleBandedMDXDataSourceXmlFactoryModule.class);
    DataFactoryXmlResourceFactory.register(SimpleLegacyBandedMDXDataSourceXmlFactoryModule.class);
    DataFactoryXmlResourceFactory.register(SimpleDenormalizedMDXDataSourceXmlFactoryModule.class);

    DataFactoryReadHandlerFactory.getInstance()
        .setElementHandler(
            NAMESPACE, "banded-mdx-datasource", BandedMDXDataSourceReadHandler.class);
    DataFactoryReadHandlerFactory.getInstance()
        .setElementHandler(
            NAMESPACE, "denormalized-mdx-datasource", DenormalizedMDXDataSourceReadHandler.class);
    DataFactoryReadHandlerFactory.getInstance()
        .setElementHandler(
            NAMESPACE, "legacy-banded-mdx-datasource", LegacyBandedMDXDataSourceReadHandler.class);
    DataFactoryReadHandlerFactory.getInstance()
        .setElementHandler(
            NAMESPACE, "simple-banded-mdx-datasource", SimpleBandedMDXDataSourceReadHandler.class);
    DataFactoryReadHandlerFactory.getInstance()
        .setElementHandler(
            NAMESPACE,
            "simple-denormalized-mdx-datasource",
            SimpleDenormalizedMDXDataSourceReadHandler.class);
    DataFactoryReadHandlerFactory.getInstance()
        .setElementHandler(
            NAMESPACE,
            "simple-legacy-banded-mdx-datasource",
            SimpleLegacyBandedMDXDataSourceReadHandler.class);

    CubeFileProviderReadHandlerFactory.getInstance()
        .setElementHandler(NAMESPACE, "cube-file", DefaultCubeFileProviderReadHandler.class);

    DataSourceProviderReadHandlerFactory.getInstance()
        .setElementHandler(NAMESPACE, "driver", DriverDataSourceProviderReadHandler.class);
    DataSourceProviderReadHandlerFactory.getInstance()
        .setElementHandler(NAMESPACE, "jndi", JndiDataSourceProviderReadHandler.class);

    ElementMetaDataParser.initializeOptionalDataFactoryMetaData(
        "org/pentaho/reporting/engine/classic/extensions/datasources/mondrian/meta-datafactory.xml");

    CompatibilityConverterRegistry.getInstance()
        .register(MondrianDataSource_50_CompatibilityConverter.class);
  }
 /**
  * Initializes the module. Use this method to perform all initial setup operations. This method is
  * called only once in a modules lifetime. If the initializing cannot be completed, throw a
  * ModuleInitializeException to indicate the error,. The module will not be available to the
  * system.
  *
  * @param subSystem the subSystem.
  * @throws ModuleInitializeException if an error ocurred while initializing the module.
  */
 public void initialize(final SubSystem subSystem) throws ModuleInitializeException {
   ElementMetaDataParser.initializeOptionalReportProcessTaskMetaData(
       "org/pentaho/reporting/engine/classic/core/modules/output/pageable/pdf/meta-report-process-tasks.xml");
 }