From 607c8abe22ec1cd7ef0fc11133dff4156fb91d90 Mon Sep 17 00:00:00 2001 From: Moritz Staudinger <moritz.staudinger@tuwien.ac.at> Date: Thu, 3 Mar 2022 02:06:25 +0100 Subject: [PATCH] Started adding pagination Former-commit-id: 8145a529ae4a2bfb78a4fcd695b407b047dec4db --- .../java/at/tuwien/endpoint/QueryEndpoint.java | 10 ++++++---- .../endpoint/QueryEndpointIntegrationTest.java | 3 ++- .../tuwien/endpoint/QueryEndpointUnitTest.java | 18 ++++++++++++------ .../service/QueryServiceIntegrationTest.java | 18 ++++++++++++------ .../java/at/tuwien/service/QueryService.java | 8 ++++++-- .../tuwien/service/impl/QueryServiceImpl.java | 4 ++-- 6 files changed, 40 insertions(+), 21 deletions(-) diff --git a/fda-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java b/fda-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java index c52f2b6ea3..4b61ff7963 100644 --- a/fda-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java +++ b/fda-query-service/rest-service/src/main/java/at/tuwien/endpoint/QueryEndpoint.java @@ -52,7 +52,8 @@ public class QueryEndpoint { @ApiResponse(code = 409, message = "The container image is not supported."),}) public ResponseEntity<QueryResultDto> execute(@NotNull @PathVariable("id") Long id, @NotNull @PathVariable("databaseId") Long databaseId, - @Valid @RequestBody ExecuteStatementDto data) + @Valid @RequestBody ExecuteStatementDto data, + @RequestParam("page") Long page, @RequestParam("size") Long size) throws DatabaseNotFoundException, ImageNotSupportedException, QueryStoreException, QueryMalformedException, TableNotFoundException, ContainerNotFoundException { /* validation */ @@ -65,7 +66,7 @@ public class QueryEndpoint { throw new QueryMalformedException("Invalid table"); } log.debug("Data for execution: {}", data); - final QueryResultDto result = queryService.execute(id, databaseId, data); + final QueryResultDto result = queryService.execute(id, databaseId, data, page, size); return ResponseEntity.status(HttpStatus.ACCEPTED) .body(result); } @@ -101,12 +102,13 @@ public class QueryEndpoint { @ApiResponse(code = 409, message = "The container image is not supported."),}) public ResponseEntity<QueryResultDto> reExecute(@NotNull @PathVariable("id") Long id, @NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("queryId") Long queryId) + @NotNull @PathVariable("queryId") Long queryId, + @RequestParam("page") Long page, @RequestParam("size") Long size) throws QueryStoreException, QueryNotFoundException, DatabaseNotFoundException, ImageNotSupportedException, TableNotFoundException, QueryMalformedException, ContainerNotFoundException, SQLException, JSQLParserException { final Query query = storeService.findOne(id, databaseId, queryId); log.debug(query.toString()); - final QueryResultDto result = queryService.reExecute(id, databaseId, query); + final QueryResultDto result = queryService.reExecute(id, databaseId, query, page, size); result.setId(queryId); return ResponseEntity.status(HttpStatus.ACCEPTED) .body(result); diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointIntegrationTest.java b/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointIntegrationTest.java index 3b3db9900d..d5fef7bf9d 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointIntegrationTest.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointIntegrationTest.java @@ -148,8 +148,9 @@ public class QueryEndpointIntegrationTest extends BaseUnitTest { storeService.insert(CONTAINER_1_ID, DATABASE_1_ID, result, statement, execution); /* test */ + //FIXME final ResponseEntity<QueryResultDto> response = queryEndpoint.reExecute(CONTAINER_1_ID, DATABASE_1_ID, - QUERY_1_ID); + QUERY_1_ID,0L,0L); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); assertNotNull(response.getBody()); assertEquals(QUERY_1_ID, response.getBody().getId()); diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java b/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java index ff3b0fc280..2b8bd543cc 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/endpoint/QueryEndpointUnitTest.java @@ -56,13 +56,15 @@ public class QueryEndpointUnitTest extends BaseUnitTest { final Instant execution = Instant.now(); /* mock */ - when(queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request)) + //FIXME + when(queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L)) .thenReturn(result); when(storeService.insert(CONTAINER_1_ID, DATABASE_1_ID, result, request, execution)) .thenReturn(QUERY_1); /* test */ - final ResponseEntity<QueryResultDto> response = queryEndpoint.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + final ResponseEntity<QueryResultDto> response = queryEndpoint.execute(CONTAINER_1_ID, DATABASE_1_ID, request,0L,0L); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); assertEquals(result, response.getBody()); } @@ -80,13 +82,15 @@ public class QueryEndpointUnitTest extends BaseUnitTest { final Instant execution = Instant.now(); /* mock */ - when(queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request)) + //FIXME + when(queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L)) .thenReturn(result); when(storeService.insert(CONTAINER_1_ID, DATABASE_1_ID, result, request, execution)) .thenReturn(QUERY_1); /* test */ - final ResponseEntity<QueryResultDto> response = queryEndpoint.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + final ResponseEntity<QueryResultDto> response = queryEndpoint.execute(CONTAINER_1_ID, DATABASE_1_ID, request,0L,0L); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); assertEquals(result, response.getBody()); } @@ -99,12 +103,14 @@ public class QueryEndpointUnitTest extends BaseUnitTest { .build(); /* mock */ - when(queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request)) + //FIXME + when(queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L)) .thenThrow(TableNotFoundException.class); /* test */ assertThrows(TableNotFoundException.class, () -> { - queryEndpoint.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + queryEndpoint.execute(CONTAINER_1_ID, DATABASE_1_ID, request,0L,0L); }); } diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java b/fda-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java index fa5cb52c41..0c3ad1d614 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/service/QueryServiceIntegrationTest.java @@ -182,7 +182,8 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { DockerConfig.startContainer(CONTAINER_1); /* test */ - final QueryResultDto response = queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + final QueryResultDto response = queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L); assertEquals(3, response.getResult().size()); assertEquals(BigInteger.valueOf(1L), response.getResult().get(0).get(COLUMN_1_1_NAME)); assertEquals(toInstant("2008-12-01"), response.getResult().get(0).get(COLUMN_1_2_NAME)); @@ -215,7 +216,8 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { DockerConfig.startContainer(CONTAINER_1); /* test */ - final QueryResultDto response = queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + final QueryResultDto response = queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L); assertNotNull(response.getResult()); assertEquals(3, response.getResult().size()); } @@ -231,7 +233,8 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { /* test */ assertThrows(DatabaseNotFoundException.class, () -> { - queryService.execute(CONTAINER_1_ID, 9999L, request); + //FIXME + queryService.execute(CONTAINER_1_ID, 9999L, request, 0L, 0L); }); } @@ -247,7 +250,8 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { /* test */ assertThrows(PersistenceException.class, () -> { - queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L); }); } @@ -262,7 +266,8 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { /* test */ assertThrows(PersistenceException.class, () -> { - queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L); }); } @@ -277,7 +282,8 @@ public class QueryServiceIntegrationTest extends BaseUnitTest { /* test */ assertThrows(QueryMalformedException.class, () -> { - queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request); + //FIXME + queryService.execute(CONTAINER_1_ID, DATABASE_1_ID, request, 0L, 0L); }); } diff --git a/fda-query-service/services/src/main/java/at/tuwien/service/QueryService.java b/fda-query-service/services/src/main/java/at/tuwien/service/QueryService.java index 186d6d0c92..3e1280f054 100644 --- a/fda-query-service/services/src/main/java/at/tuwien/service/QueryService.java +++ b/fda-query-service/services/src/main/java/at/tuwien/service/QueryService.java @@ -22,6 +22,8 @@ public interface QueryService { * * @param databaseId The database id. * @param query The query. + * @param page + * @param size * @return The result. * @throws TableNotFoundException * @throws QueryStoreException @@ -29,7 +31,7 @@ public interface QueryService { * @throws DatabaseNotFoundException * @throws ImageNotSupportedException */ - QueryResultDto execute(Long containerId, Long databaseId, ExecuteStatementDto query) throws TableNotFoundException, + QueryResultDto execute(Long containerId, Long databaseId, ExecuteStatementDto query, Long page, Long size) throws TableNotFoundException, QueryStoreException, QueryMalformedException, DatabaseNotFoundException, ImageNotSupportedException, ContainerNotFoundException; /** @@ -38,6 +40,8 @@ public interface QueryService { * * @param databaseId The database id. * @param query The query. + * @param page + * @param size * @return The result. * @throws TableNotFoundException * @throws QueryStoreException @@ -45,7 +49,7 @@ public interface QueryService { * @throws DatabaseNotFoundException * @throws ImageNotSupportedException */ - QueryResultDto reExecute(Long containerId, Long databaseId, Query query) throws TableNotFoundException, + QueryResultDto reExecute(Long containerId, Long databaseId, Query query, Long page, Long size) throws TableNotFoundException, QueryStoreException, QueryMalformedException, DatabaseNotFoundException, ImageNotSupportedException, ContainerNotFoundException, SQLException, JSQLParserException; diff --git a/fda-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java b/fda-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java index a34ea76846..22a5a66f50 100644 --- a/fda-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java +++ b/fda-query-service/services/src/main/java/at/tuwien/service/impl/QueryServiceImpl.java @@ -60,7 +60,7 @@ public class QueryServiceImpl extends HibernateConnector implements QueryService @Override @Transactional - public QueryResultDto execute(Long containerId, Long databaseId, ExecuteStatementDto statement) + public QueryResultDto execute(Long containerId, Long databaseId, ExecuteStatementDto statement, Long page, Long size) throws DatabaseNotFoundException, ImageNotSupportedException, QueryMalformedException, QueryStoreException, ContainerNotFoundException { /* find */ final Database database = databaseService.find(databaseId); @@ -101,7 +101,7 @@ public class QueryServiceImpl extends HibernateConnector implements QueryService } @Override - public QueryResultDto reExecute(Long containerId, Long databaseId, Query query) throws TableNotFoundException, QueryStoreException, QueryMalformedException, DatabaseNotFoundException, ImageNotSupportedException, ContainerNotFoundException, SQLException, JSQLParserException { + public QueryResultDto reExecute(Long containerId, Long databaseId, Query query, Long page, Long size) throws TableNotFoundException, QueryStoreException, QueryMalformedException, DatabaseNotFoundException, ImageNotSupportedException, ContainerNotFoundException, SQLException, JSQLParserException { /* find */ final Database database = databaseService.find(databaseId); if (!database.getContainer().getImage().getRepository().equals("mariadb")) { -- GitLab