Search in sources :

Example 1 with MultiTableModelerSource

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

the class MultitableDatasourceService method serializeJoins.

public IDatasourceSummary serializeJoins(MultiTableDatasourceDTO dto, IDatabaseConnection connection) throws DatasourceServiceException {
    try {
        ModelerService modelerService = new ModelerService();
        modelerService.initKettle();
        DSWDatasourceServiceImpl datasourceService = new DSWDatasourceServiceImpl();
        GeoContext geoContext = datasourceService.getGeoContext();
        DatabaseMeta databaseMeta = this.getDatabaseMeta(connection);
        MultiTableModelerSource multiTable = new MultiTableModelerSource(databaseMeta, dto.getSchemaModel(), dto.getDatasourceName(), dto.getSelectedTables(), geoContext);
        Domain domain = multiTable.generateDomain(dto.isDoOlap());
        String modelState = serializeModelState(dto);
        for (LogicalModel lm : domain.getLogicalModels()) {
            lm.setProperty("datasourceModel", modelState);
            lm.setProperty("DatasourceType", "MULTI-TABLE-DS");
            // BISERVER-6450 - add security settings to the logical model
            applySecurity(lm);
        }
        modelerService.serializeModels(domain, dto.getDatasourceName(), dto.isDoOlap());
        QueryDatasourceSummary summary = new QueryDatasourceSummary();
        summary.setDomain(domain);
        return summary;
    } catch (Exception e) {
        logger.error("Error serializing joins", e);
        throw new DatasourceServiceException(e);
    }
}
Also used : MultiTableModelerSource(org.pentaho.agilebi.modeler.util.MultiTableModelerSource) LogicalModel(org.pentaho.metadata.model.LogicalModel) QueryDatasourceSummary(org.pentaho.platform.dataaccess.datasource.wizard.sources.query.QueryDatasourceSummary) Domain(org.pentaho.metadata.model.Domain) DatabaseMeta(org.pentaho.di.core.database.DatabaseMeta) GeoContext(org.pentaho.agilebi.modeler.geo.GeoContext) DatasourceServiceException(org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException) KettleDatabaseException(org.pentaho.di.core.exception.KettleDatabaseException) ConnectionServiceException(org.pentaho.platform.dataaccess.datasource.wizard.service.ConnectionServiceException) DatasourceServiceException(org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException)

Example 2 with MultiTableModelerSource

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

the class SerializeMultiTableServiceIT method testSerialize.

@Test
public void testSerialize() throws Exception {
    if (ModelerMessagesHolder.getMessages() == null) {
        ModelerMessagesHolder.setMessages(new SpoonModelerMessages());
    }
    try {
        KettleEnvironment.init();
        Props.init(Props.TYPE_PROPERTIES_EMPTY);
    } catch (Exception e) {
    // may already be initialized by another test
    }
    login("suzy", "", false);
    String solutionStorage = AgileHelper.getDatasourceSolutionStorage();
    String path = solutionStorage + RepositoryFile.SEPARATOR + "resources" + RepositoryFile.SEPARATOR + "metadata" + // $NON-NLS-1$  //$NON-NLS-2$
    RepositoryFile.SEPARATOR;
    String olapPath = null;
    IApplicationContext appContext = PentahoSystem.getApplicationContext();
    if (appContext != null) {
        path = PentahoSystem.getApplicationContext().getSolutionPath(path);
        olapPath = PentahoSystem.getApplicationContext().getSolutionPath(// $NON-NLS-1$  //$NON-NLS-2$
        "system" + RepositoryFile.SEPARATOR + "olap" + RepositoryFile.SEPARATOR);
    }
    // $NON-NLS-1$
    File olap1 = new File(olapPath + "datasources.xml");
    // $NON-NLS-1$
    File olap2 = new File(olapPath + "tmp_datasources.xml");
    FileUtils.copyFile(olap1, olap2);
    DatabaseMeta database = getDatabaseMeta();
    MultiTableModelerSource multiTable = new MultiTableModelerSource(database, getSchema(), database.getName(), Arrays.asList("CUSTOMERS", "PRODUCTS", "CUSTOMERNAME", "PRODUCTCODE"));
    Domain domain = multiTable.generateDomain();
    List<OlapDimension> olapDimensions = new ArrayList<OlapDimension>();
    OlapDimension dimension = new OlapDimension();
    // $NON-NLS-1$
    dimension.setName("test");
    dimension.setTimeDimension(false);
    olapDimensions.add(dimension);
    // $NON-NLS-1$
    domain.getLogicalModels().get(0).setProperty("olap_dimensions", olapDimensions);
    ModelerService service = new ModelerService();
    // $NON-NLS-1$
    service.serializeModels(domain, "test_file");
    Assert.assertEquals((String) domain.getLogicalModels().get(0).getProperty("MondrianCatalogRef"), "SampleData");
}
Also used : MultiTableModelerSource(org.pentaho.agilebi.modeler.util.MultiTableModelerSource) SpoonModelerMessages(org.pentaho.agilebi.modeler.util.SpoonModelerMessages) ArrayList(java.util.ArrayList) Matchers.anyString(org.mockito.Matchers.anyString) IApplicationContext(org.pentaho.platform.api.engine.IApplicationContext) Domain(org.pentaho.metadata.model.Domain) RepositoryFile(org.pentaho.platform.api.repository2.unified.RepositoryFile) File(java.io.File) DatabaseMeta(org.pentaho.di.core.database.DatabaseMeta) OlapDimension(org.pentaho.metadata.model.olap.OlapDimension) ModelerService(org.pentaho.platform.dataaccess.datasource.wizard.service.impl.ModelerService) UsernameNotFoundException(org.springframework.security.core.userdetails.UsernameNotFoundException) DatasourceMgmtServiceException(org.pentaho.platform.api.repository.datasource.DatasourceMgmtServiceException) DataAccessException(org.springframework.dao.DataAccessException) DuplicateDatasourceException(org.pentaho.platform.api.repository.datasource.DuplicateDatasourceException) NonExistingDatasourceException(org.pentaho.platform.api.repository.datasource.NonExistingDatasourceException) Test(org.junit.Test)

Example 3 with MultiTableModelerSource

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

the class JoinMetadataIT method testGenerateDomain.

public void testGenerateDomain() {
    Domain domain = null;
    try {
        MultiTableModelerSource multiTable = new MultiTableModelerSource(this.getDatabaseMeta(), getSchemaModel(), this.getDatabaseMeta().getName(), Arrays.asList("CUSTOMERS", "PRODUCTS", "CUSTOMERNAME", "PRODUCTCODE"));
        domain = multiTable.generateDomain();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    assertNotNull(domain);
}
Also used : MultiTableModelerSource(org.pentaho.agilebi.modeler.util.MultiTableModelerSource) Domain(org.pentaho.metadata.model.Domain)

Aggregations

MultiTableModelerSource (org.pentaho.agilebi.modeler.util.MultiTableModelerSource)3 Domain (org.pentaho.metadata.model.Domain)3 DatabaseMeta (org.pentaho.di.core.database.DatabaseMeta)2 File (java.io.File)1 ArrayList (java.util.ArrayList)1 Test (org.junit.Test)1 Matchers.anyString (org.mockito.Matchers.anyString)1 GeoContext (org.pentaho.agilebi.modeler.geo.GeoContext)1 SpoonModelerMessages (org.pentaho.agilebi.modeler.util.SpoonModelerMessages)1 KettleDatabaseException (org.pentaho.di.core.exception.KettleDatabaseException)1 LogicalModel (org.pentaho.metadata.model.LogicalModel)1 OlapDimension (org.pentaho.metadata.model.olap.OlapDimension)1 IApplicationContext (org.pentaho.platform.api.engine.IApplicationContext)1 DatasourceMgmtServiceException (org.pentaho.platform.api.repository.datasource.DatasourceMgmtServiceException)1 DuplicateDatasourceException (org.pentaho.platform.api.repository.datasource.DuplicateDatasourceException)1 NonExistingDatasourceException (org.pentaho.platform.api.repository.datasource.NonExistingDatasourceException)1 RepositoryFile (org.pentaho.platform.api.repository2.unified.RepositoryFile)1 ConnectionServiceException (org.pentaho.platform.dataaccess.datasource.wizard.service.ConnectionServiceException)1 DatasourceServiceException (org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException)1 ModelerService (org.pentaho.platform.dataaccess.datasource.wizard.service.impl.ModelerService)1