Search in sources :

Example 1 with ModelerWorkspaceHelper

use of org.pentaho.agilebi.modeler.util.ModelerWorkspaceHelper in project data-access by pentaho.

the class DataSourceWizardService method createMondrianDswBundle.

/**
 * Generate a mondrian schema from the model and create the appropriate import bundle
 * @param domain domain with olap model
 * @return import bundle
 * @throws DatasourceServiceException
 * @throws Exception If schema generation fails
 */
protected IPlatformImportBundle createMondrianDswBundle(Domain domain, RepositoryFileAclDto acl) throws DatasourceServiceException, DswPublishValidationException, IOException {
    final String analysisDomainId = toAnalysisDomainId(domain.getId());
    final String dataSource = ModelerService.getMondrianDatasource(domain);
    // get olap logical model
    final String locale = Locale.getDefault().toString();
    ModelerWorkspace workspace = new ModelerWorkspace(new ModelerWorkspaceHelper(locale), dswService.getGeoContext());
    workspace.setModelName(analysisDomainId);
    workspace.setDomain(domain);
    LogicalModel olapModel = workspace.getLogicalModel(ModelerPerspective.ANALYSIS);
    if (olapModel == null) {
        throw new IllegalArgumentException("No analysis model in xmi.");
    }
    // reference schema in xmi
    olapModel.setProperty(MONDRIAN_CATALOG_REF, analysisDomainId);
    // generate schema
    MondrianModelExporter exporter = new MondrianModelExporter(olapModel, locale);
    exporter.updateModelToNewDomainName(analysisDomainId);
    String mondrianSchema = null;
    try {
        mondrianSchema = exporter.createMondrianModelXML();
    } catch (Exception e) {
        throw new DswPublishValidationException(Type.INVALID_XMI, e.getMessage());
    }
    // create bundle
    final RepositoryFileImportBundle.Builder builder = new RepositoryFileImportBundle.Builder().input(IOUtils.toInputStream(mondrianSchema, ENCODING)).name(MONDRIAN_SCHEMA_NAME).charSet(ENCODING).overwriteFile(true).mime(MONDRIAN_MIME).withParam(IMPORT_DOMAIN_ID, analysisDomainId).withParam(MONDRIAN_CONNECTION_PARAM, "DataSource=" + dataSource);
    if (acl != null) {
        builder.acl(repositoryFileAclAdapter.unmarshal(acl)).applyAclSettings(true);
    }
    return builder.build();
}
Also used : LogicalModel(org.pentaho.metadata.model.LogicalModel) ModelerWorkspaceHelper(org.pentaho.agilebi.modeler.util.ModelerWorkspaceHelper) GwtModelerWorkspaceHelper(org.pentaho.agilebi.modeler.gwt.GwtModelerWorkspaceHelper) MondrianModelExporter(org.pentaho.metadata.util.MondrianModelExporter) RepositoryFileImportBundle(org.pentaho.platform.plugin.services.importer.RepositoryFileImportBundle) ModelerWorkspace(org.pentaho.agilebi.modeler.ModelerWorkspace) PentahoAccessControlException(org.pentaho.platform.api.engine.PentahoAccessControlException) FileNotFoundException(java.io.FileNotFoundException) DatasourceServiceException(org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException) MondrianCatalogServiceException(org.pentaho.platform.plugin.action.mondrian.catalog.MondrianCatalogServiceException) ConnectionServiceException(org.pentaho.platform.dataaccess.datasource.wizard.service.ConnectionServiceException) IOException(java.io.IOException)

Aggregations

FileNotFoundException (java.io.FileNotFoundException)1 IOException (java.io.IOException)1 ModelerWorkspace (org.pentaho.agilebi.modeler.ModelerWorkspace)1 GwtModelerWorkspaceHelper (org.pentaho.agilebi.modeler.gwt.GwtModelerWorkspaceHelper)1 ModelerWorkspaceHelper (org.pentaho.agilebi.modeler.util.ModelerWorkspaceHelper)1 LogicalModel (org.pentaho.metadata.model.LogicalModel)1 MondrianModelExporter (org.pentaho.metadata.util.MondrianModelExporter)1 PentahoAccessControlException (org.pentaho.platform.api.engine.PentahoAccessControlException)1 ConnectionServiceException (org.pentaho.platform.dataaccess.datasource.wizard.service.ConnectionServiceException)1 DatasourceServiceException (org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException)1 MondrianCatalogServiceException (org.pentaho.platform.plugin.action.mondrian.catalog.MondrianCatalogServiceException)1 RepositoryFileImportBundle (org.pentaho.platform.plugin.services.importer.RepositoryFileImportBundle)1