diff --git a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java index a66f6f22d9d26d3b24e9b5b3ddf8d126724924f6..bced2b55cfb2c007fe30244f8a267bf46e06c20a 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoints/SubsetEndpoint.java @@ -100,7 +100,7 @@ public class SubsetEndpoint extends RestEndpoint { @RequestParam(name = "persisted", required = false) Boolean filterPersisted, Principal principal) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, - QueryNotFoundException, NotAllowedException, MetadataServiceException { + QueryNotFoundException, NotAllowedException, MetadataServiceException, UserNotFoundException { log.debug("endpoint find subsets in database, databaseId={}, filterPersisted={}", databaseId, filterPersisted); final DatabaseDto database = cacheService.getDatabase(databaseId); if (!database.getIsPublic()) { diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java index e6f5235539bb88e4b6018e301b9097ab74b95b36..0b5b609314407beac4d85b29e810be659a69a909 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/endpoint/SubsetEndpointUnitTest.java @@ -71,7 +71,7 @@ public class SubsetEndpointUnitTest extends BaseTest { @WithAnonymousUser public void list_publicDataPrivateSchemaAnonymous_succeeds() throws QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException, SQLException, MetadataServiceException, - DatabaseUnavailableException, NotAllowedException { + DatabaseUnavailableException, NotAllowedException, UserNotFoundException { /* mock */ when(subsetService.findAll(DATABASE_3_PRIVILEGED_DTO, null)) @@ -85,7 +85,7 @@ public class SubsetEndpointUnitTest extends BaseTest { @WithMockUser(username = USER_3_USERNAME) public void list_publicDataPrivateSchema_succeeds() throws DatabaseUnavailableException, NotAllowedException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException, SQLException, - MetadataServiceException { + MetadataServiceException, UserNotFoundException { /* mock */ when(cacheService.getAccess(DATABASE_3_ID, USER_3_ID)) @@ -111,7 +111,7 @@ public class SubsetEndpointUnitTest extends BaseTest { @Test @WithMockUser(username = USER_3_USERNAME) public void list_publicDataAndPrivateSchemaUnavailable_fails() throws SQLException, QueryNotFoundException, - DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException { + DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException, UserNotFoundException { /* mock */ when(cacheService.getDatabase(DATABASE_3_ID)) @@ -698,7 +698,7 @@ public class SubsetEndpointUnitTest extends BaseTest { protected List<QueryDto> generic_list(UUID databaseId, DatabaseDto database, Principal principal) throws NotAllowedException, DatabaseUnavailableException, QueryNotFoundException, DatabaseNotFoundException, - RemoteUnavailableException, MetadataServiceException { + RemoteUnavailableException, MetadataServiceException, UserNotFoundException { /* mock */ if (database != null) { diff --git a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java index 0e1f9c4f428a832d84a7d130e5c3c095ac630ca5..e36194935c1ca57f49774d463b77a84048402ef2 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetServiceIntegrationTest.java @@ -1,11 +1,11 @@ package at.ac.tuwien.ac.at.ifs.dbrepo.service; -import at.ac.tuwien.ifs.dbrepo.core.api.database.query.*; -import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto; import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbConfig; import at.ac.tuwien.ac.at.ifs.dbrepo.config.MariaDbContainerConfig; -import at.ac.tuwien.ifs.dbrepo.core.exception.*; import at.ac.tuwien.ac.at.ifs.dbrepo.gateway.MetadataServiceGateway; +import at.ac.tuwien.ifs.dbrepo.core.api.database.query.*; +import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto; +import at.ac.tuwien.ifs.dbrepo.core.exception.*; import at.ac.tuwien.ifs.dbrepo.core.test.BaseTest; import lombok.extern.log4j.Log4j2; import org.apache.spark.sql.Dataset; @@ -66,8 +66,9 @@ public class SubsetServiceIntegrationTest extends BaseTest { } @Test - public void findAll_succeeds() throws SQLException, QueryNotFoundException, RemoteUnavailableException, - MetadataServiceException, DatabaseNotFoundException, InterruptedException { + public void findAll_succeeds() throws SQLException, QueryNotFoundException, + RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException, + UserNotFoundException { /* test */ final List<QueryDto> response = findAll_generic(null); @@ -78,7 +79,8 @@ public class SubsetServiceIntegrationTest extends BaseTest { @Test public void findAll_onlyPersisted_succeeds() throws SQLException, QueryNotFoundException, - RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException { + RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException, + UserNotFoundException { /* test */ final List<QueryDto> response = findAll_generic(true); @@ -88,7 +90,8 @@ public class SubsetServiceIntegrationTest extends BaseTest { @Test public void findAll_onlyNonPersisted_succeeds() throws SQLException, QueryNotFoundException, - RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException { + RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException, + UserNotFoundException { /* test */ final List<QueryDto> response = findAll_generic(false); @@ -303,7 +306,7 @@ public class SubsetServiceIntegrationTest extends BaseTest { protected List<QueryDto> findAll_generic(Boolean filterPersisted) throws SQLException, QueryNotFoundException, RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, - InterruptedException { + InterruptedException, UserNotFoundException { /* pre-condition */ Thread.sleep(1000) /* wait for test container some more */; diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java index 5408f338b2ea5b423bec09c7af2fd35e3e9831ee..6d04ee010546565fe539b93abf0f36af32f81659 100644 --- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java +++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/mapper/DataMapper.java @@ -4,6 +4,7 @@ import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto; import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewColumnDto; import at.ac.tuwien.ifs.dbrepo.core.api.database.ViewDto; import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryDto; +import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryTypeDto; import at.ac.tuwien.ifs.dbrepo.core.api.database.table.*; import at.ac.tuwien.ifs.dbrepo.core.api.database.table.columns.*; import at.ac.tuwien.ifs.dbrepo.core.api.database.table.constraints.ConstraintsDto; @@ -198,6 +199,7 @@ public interface DataMapper { final QueryDto subset = QueryDto.builder() .id(UUID.fromString(data.getString(1))) .query(data.getString(4)) + .queryNormalized(data.getString(4)) .queryHash(data.getString(5)) .resultHash(data.getString(6)) .resultNumber(data.getLong(7)) diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java index 7b85908a764908c095326abab61330a7f52f2920..7767e3950f65922250e3ef5f2caaed825e726e83 100644 --- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java +++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/SubsetService.java @@ -63,7 +63,8 @@ public interface SubsetService { * @throws MetadataServiceException The Metadata Service responded unexpected. */ List<QueryDto> findAll(DatabaseDto database, Boolean filterPersisted) throws SQLException, - QueryNotFoundException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException; + QueryNotFoundException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException, + UserNotFoundException; /** * Executes a subset query without saving it. diff --git a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java index d19e18e52a676dfa74d7d6c12f5f3fccb5bee5ad..c752f67ac38c3486c2852dcb3067f1c131ef960a 100644 --- a/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java +++ b/dbrepo-data-service/services/src/main/java/at/ac/tuwien/ac/at/ifs/dbrepo/service/impl/SubsetServiceMariaDbImpl.java @@ -2,6 +2,7 @@ package at.ac.tuwien.ac.at.ifs.dbrepo.service.impl; import at.ac.tuwien.ifs.dbrepo.core.api.database.DatabaseDto; import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryDto; +import at.ac.tuwien.ifs.dbrepo.core.api.database.query.QueryTypeDto; import at.ac.tuwien.ifs.dbrepo.core.api.database.query.SubsetDto; import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierBriefDto; import at.ac.tuwien.ifs.dbrepo.core.api.identifier.IdentifierTypeDto; @@ -86,7 +87,8 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer @Override public List<QueryDto> findAll(DatabaseDto database, Boolean filterPersisted) throws SQLException, - QueryNotFoundException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException { + QueryNotFoundException, RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException, + UserNotFoundException { final List<IdentifierBriefDto> identifiers = metadataServiceGateway.getIdentifiers(database.getId(), null); final ComboPooledDataSource dataSource = getDataSource(database); final Connection connection = dataSource.getConnection(); @@ -106,6 +108,10 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer .filter(i -> i.getType().equals(IdentifierTypeDto.SUBSET)) .filter(i -> i.getQueryId().equals(query.getId())) .toList()); + query.setOwner(metadataMapper.userDtoToUserBriefDto(metadataServiceGateway.getUserById(query.getOwner() + .getId()))); + query.setType(QueryTypeDto.QUERY); + query.setDatabaseId(database.getId()); queries.add(query); } log.info("Find {} queries", queries.size()); @@ -154,6 +160,7 @@ public class SubsetServiceMariaDbImpl extends DataConnector implements SubsetSer final QueryDto query = dataMapper.resultSetToQueryDto(resultSet); query.setOwner(metadataMapper.userDtoToUserBriefDto(metadataServiceGateway.getUserById(query.getOwner() .getId()))); + query.setType(QueryTypeDto.QUERY); query.setDatabaseId(database.getId()); return query; } catch (SQLException e) {