use of org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException in project data-access by pentaho.
the class DSWDatasourceServiceImpl method getLogicalModels.
public List<LogicalModelSummary> getLogicalModels(String context) throws DatasourceServiceException {
if (!hasDataAccessViewPermission()) {
// $NON-NLS-1$
logger.error(Messages.getErrorString("DatasourceServiceImpl.ERROR_0001_PERMISSION_DENIED"));
throw new DatasourceServiceException(Messages.getErrorString(// $NON-NLS-1$
"DatasourceServiceImpl.ERROR_0001_PERMISSION_DENIED"));
}
List<LogicalModelSummary> logicalModelSummaries = new ArrayList<LogicalModelSummary>();
for (String domainId : getMetadataDomainRepository().getDomainIds()) {
Domain domain;
try {
domain = getMetadataDomainRepository().getDomain(domainId);
} catch (Exception e) {
logger.error(Messages.getErrorString("DatasourceServiceImpl.ERROR_0022_UNABLE_TO_PROCESS_LOGICAL_MODEL", domainId), e);
continue;
}
String locale = LocaleHelper.getLocale().toString();
String[] locales = new String[domain.getLocales().size()];
for (int i = 0; i < domain.getLocales().size(); i++) {
locales[i] = domain.getLocales().get(i).getCode();
}
locale = LocaleHelper.getClosestLocale(locale, locales);
for (LogicalModel model : domain.getLogicalModels()) {
String vis = (String) model.getProperty(LM_PROP_VISIBLE);
if (vis != null) {
String[] visibleContexts = vis.split(",");
boolean visibleToContext = false;
for (String c : visibleContexts) {
if (StringUtils.isNotEmpty(c.trim()) && c.trim().equals(context)) {
visibleToContext = true;
break;
}
}
if (!visibleToContext) {
continue;
}
}
logicalModelSummaries.add(new LogicalModelSummary(domainId, model.getId(), model.getName(locale)));
}
}
return logicalModelSummaries;
}
use of org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException in project data-access by pentaho.
the class InMemoryDSWDatasourceServiceImpl method doPreview.
public SerializedResultSet doPreview(String connectionName, String query, String previewLimit) throws DatasourceServiceException {
SerializedResultSet returnResultSet;
try {
executeQuery(connectionName, query, previewLimit);
returnResultSet = DatasourceInMemoryServiceHelper.getSerializeableResultSet(connectionName, query, Integer.parseInt(previewLimit), null);
} catch (QueryValidationException e) {
logger.error(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0009_QUERY_VALIDATION_FAILED", e.getLocalizedMessage()), // $NON-NLS-1$
e);
throw new DatasourceServiceException(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0009_QUERY_VALIDATION_FAILED", e.getLocalizedMessage()), // $NON-NLS-1$
e);
}
return returnResultSet;
}
use of org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException in project data-access by pentaho.
the class InMemoryDSWDatasourceServiceImpl method generateQueryDomain.
@Override
public QueryDatasourceSummary generateQueryDomain(String name, String query, DatabaseConnection connection, DatasourceDTO datasourceDTO) throws DatasourceServiceException {
ModelerWorkspace modelerWorkspace = new ModelerWorkspace(new GwtModelerWorkspaceHelper(), getGeoContext());
ModelerService modelerService = new ModelerService();
modelerWorkspace.setModelName(name);
try {
Boolean securityEnabled = (getPermittedRoleList() != null && getPermittedRoleList().size() > 0) || (getPermittedUserList() != null && getPermittedUserList().size() > 0);
SerializedResultSet resultSet = DatasourceInMemoryServiceHelper.getSerializeableResultSet(connection.getName(), query, Integer.parseInt("10"), null);
SQLModelGenerator sqlModelGenerator = new SQLModelGenerator(name, connection.getName(), connection.getDatabaseType().getShortName(), resultSet.getColumnTypes(), resultSet.getColumns(), query, securityEnabled, getPermittedRoleList(), getPermittedUserList(), getDefaultAcls(), "joe");
Domain domain = sqlModelGenerator.generate();
modelerWorkspace.setDomain(domain);
modelerWorkspace.getWorkspaceHelper().autoModelFlat(modelerWorkspace);
modelerWorkspace.setModelName(datasourceDTO.getDatasourceName());
modelerWorkspace.getWorkspaceHelper().populateDomain(modelerWorkspace);
domain.getLogicalModels().get(0).setProperty("datasourceModel", serializeModelState(datasourceDTO));
domain.getLogicalModels().get(0).setProperty("DatasourceType", "SQL-DS");
QueryDatasourceSummary summary = new QueryDatasourceSummary();
modelerService.serializeModels(domain, modelerWorkspace.getModelName());
summary.setDomain(domain);
return summary;
} catch (SQLModelGeneratorException smge) {
logger.error(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0016_UNABLE_TO_GENERATE_MODEL", smge.getLocalizedMessage()), smge);
throw new DatasourceServiceException(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0015_UNABLE_TO_GENERATE_MODEL"), // $NON-NLS-1$
smge);
} catch (QueryValidationException e) {
logger.error(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0009_QUERY_VALIDATION_FAILED", e.getLocalizedMessage()), // $NON-NLS-1$
e);
throw new DatasourceServiceException(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0009_QUERY_VALIDATION_FAILED", e.getLocalizedMessage()), // $NON-NLS-1$
e);
} catch (ModelerException e) {
logger.error(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0016_UNABLE_TO_GENERATE_MODEL", e.getLocalizedMessage()), e);
throw new DatasourceServiceException(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0015_UNABLE_TO_GENERATE_MODEL"), // $NON-NLS-1$
e);
} catch (Exception e) {
logger.error(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0016_UNABLE_TO_GENERATE_MODEL", e.getLocalizedMessage()), e);
throw new DatasourceServiceException(Messages.getErrorString("InMemoryDatasourceServiceImpl.ERROR_0015_UNABLE_TO_GENERATE_MODEL"), // $NON-NLS-1$
e);
}
}
use of org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException in project data-access by pentaho.
the class DSWDatasourceServiceImplTest method testDoPreview_NullQuery.
@Test(expected = DatasourceServiceException.class)
public void testDoPreview_NullQuery() throws DatasourceServiceException {
doReturn(true).when(dswService).hasDataAccessPermission();
SerializedResultSet result = dswService.doPreview(CONNECTION_NAME, null, PREVIEW_LIMIT);
try {
verify(dswService).executeQuery("[connection 接続 <;>!@#$%^&*()_-=+.,]", VALID_QUERY, PREVIEW_LIMIT);
} catch (Exception e) {
e.printStackTrace();
}
assertNotNull(result);
assertArrayEquals(columns, result.getColumns());
assertArrayEquals(columnTypes, result.getColumnTypes());
}
use of org.pentaho.platform.dataaccess.datasource.wizard.service.DatasourceServiceException in project data-access by pentaho.
the class DSWDatasourceServiceImplTest method testGenerateQueryDomain.
private void testGenerateQueryDomain(String modelName, String query, List<String> roleList, List<String> userList) throws DatasourceServiceException {
ModelInfo modelInfo = mock(ModelInfo.class);
when(modelInfo.getFileInfo()).thenReturn(mock(CsvFileInfo.class));
DatasourceDTO datasourceDTO = new DatasourceDTO();
datasourceDTO.setConnectionName(CONNECTION_NAME);
datasourceDTO.setDatasourceName(CONNECTION_NAME);
datasourceDTO.setCsvModelInfo(modelInfo);
DatabaseConnection connectionSpy = spy(new DatabaseConnection());
connectionSpy.setName(CONNECTION_NAME);
connectionSpy.setDatabaseName("[database name 接続 <;>!@#$%^&*()_-=+.,]");
connectionSpy.setDatabasePort("123456");
connectionSpy.setHostname("[hostname 接続 <;>!@#$%^&*()_-=+.,]");
connectionSpy.setPassword("[password 接続 <;>!@#$%^&*()_-=+.,]");
connectionSpy.setUsername("[username 接続 <;>!@#$%^&*()_-=+.,]");
connectionSpy.setDatabaseType(mock(IDatabaseType.class));
doReturn(modelerService).when(dswService).createModelerService();
doReturn(true).when(dswService).hasDataAccessPermission();
doReturn(roleList).when(dswService).getPermittedRoleList();
doReturn(userList).when(dswService).getPermittedUserList();
doReturn(null).when(dswService).getGeoContext();
doReturn(1).when(dswService).getDefaultAcls();
QueryDatasourceSummary summary = dswService.generateQueryDomain(modelName, query, connectionSpy, datasourceDTO);
try {
verify(dswService).executeQuery("[connection 接続 <;>!@#$%^&*()_-=+.,]", query, "1");
} catch (Exception e) {
e.printStackTrace();
}
verify(connectionSpy).setName("[connection 接続 <;>!@#$%^&*()_-=+.,]");
verify(connectionSpy).setDatabaseName("[database name 接続 <;>!@#$%^&*()_-=+.,]");
verify(connectionSpy, times(2)).setDatabasePort("123456");
verify(connectionSpy).setHostname("[hostname 接続 <;>!@#$%^&*()_-=+.,]");
verify(connectionSpy).setPassword("[password 接続 <;>!@#$%^&*()_-=+.,]");
verify(connectionSpy).setUsername("[username 接続 <;>!@#$%^&*()_-=+.,]");
assertNotNull(summary);
assertNotNull(summary.getDomain());
assertEquals(CONNECTION_NAME, summary.getDomain().getId());
}
Aggregations