diff --git a/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/DataEndpoint.java b/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/DataEndpoint.java index 062cb1cdc846c11be6f9e053743f873b34a82d78..31230e3321d9fcdae95fb23cb1db0925707ce05c 100644 --- a/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/DataEndpoint.java +++ b/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/DataEndpoint.java @@ -5,7 +5,7 @@ import at.tuwien.api.database.table.TableCsvDto; import at.tuwien.api.database.table.TableInsertDto; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; -import at.tuwien.service.impl.MariaDataService; +import at.tuwien.service.DataService; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; @@ -24,10 +24,10 @@ import java.sql.Timestamp; @RequestMapping("/api/database/{id}/table/{tableId}/data") public class DataEndpoint { - private final MariaDataService dataService; + private final DataService dataService; @Autowired - public DataEndpoint(MariaDataService dataService) { + public DataEndpoint(DataService dataService) { this.dataService = dataService; } diff --git a/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index 81ad864f828bcd50657bc598d2b697d89dccc0fc..7e5ce790d5c2d0f71e139e7144d9d1d3294bb3a4 100644 --- a/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -4,6 +4,8 @@ import at.tuwien.api.database.table.*; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; import at.tuwien.mapper.TableMapper; +import at.tuwien.service.MessageQueueService; +import at.tuwien.service.TableService; import at.tuwien.service.impl.RabbitMqService; import at.tuwien.service.impl.TableServiceImpl; import io.swagger.annotations.ApiOperation; @@ -26,12 +28,12 @@ import java.util.stream.Collectors; @RequestMapping("/api/database/{id}") public class TableEndpoint { - private final TableServiceImpl tableService; - private final RabbitMqService amqpService; + private final TableService tableService; + private final MessageQueueService amqpService; private final TableMapper tableMapper; @Autowired - public TableEndpoint(TableServiceImpl tableService, RabbitMqService amqpService, TableMapper tableMapper) { + public TableEndpoint(TableService tableService, MessageQueueService amqpService, TableMapper tableMapper) { this.tableService = tableService; this.amqpService = amqpService; this.tableMapper = tableMapper; diff --git a/fda-table-service/services/src/main/java/at/tuwien/service/DataService.java b/fda-table-service/services/src/main/java/at/tuwien/service/DataService.java index a02f086703aadda06059b7697756b1f8008fac55..0ef5e203054547f9dd2f0c730e20a2b0e516208f 100644 --- a/fda-table-service/services/src/main/java/at/tuwien/service/DataService.java +++ b/fda-table-service/services/src/main/java/at/tuwien/service/DataService.java @@ -5,14 +5,22 @@ import at.tuwien.api.database.table.TableCsvDto; import at.tuwien.api.database.table.TableInsertDto; import at.tuwien.entities.database.table.Table; import at.tuwien.exception.*; -import com.opencsv.exceptions.CsvException; -import org.springframework.transaction.annotation.Transactional; -import java.io.IOException; import java.sql.Timestamp; public interface DataService { + /** + * Find a table by database-table id pair + * + * @param databaseId The database-table id pair. + * @param tableId The database-table id pair. + * @return The table. + * @throws TableNotFoundException The table was not found. + * @throws DatabaseNotFoundException The database was not found. + */ + Table findById(Long databaseId, Long tableId) throws TableNotFoundException, DatabaseNotFoundException; + /** * Insert data from a file into a table of a database * diff --git a/fda-table-service/services/src/main/java/at/tuwien/service/impl/MariaDataService.java b/fda-table-service/services/src/main/java/at/tuwien/service/impl/MariaDataService.java index d4ce949a15a93bf7e5f4e52f899c7af6ad6f9a91..ac099082c92914faf00df50768b6ec60f18061e4 100644 --- a/fda-table-service/services/src/main/java/at/tuwien/service/impl/MariaDataService.java +++ b/fda-table-service/services/src/main/java/at/tuwien/service/impl/MariaDataService.java @@ -52,6 +52,7 @@ public class MariaDataService extends JdbcConnector implements DataService { this.databaseRepository = databaseRepository; } + @Override @Transactional public Table findById(Long databaseId, Long tableId) throws TableNotFoundException, DatabaseNotFoundException { final Optional<Table> table = tableRepository.findByDatabaseAndId(findDatabase(databaseId), tableId); diff --git a/fda-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java b/fda-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java index 07bfc0041806d611be9007c8967e39583fcbf86f..5d35123746adf1b3aaec426688dadd3f5eb0df7f 100644 --- a/fda-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java +++ b/fda-table-service/services/src/main/java/at/tuwien/service/impl/RabbitMqService.java @@ -7,6 +7,7 @@ import at.tuwien.exception.AmqpException; import at.tuwien.exception.ImageNotSupportedException; import at.tuwien.exception.TableMalformedException; import at.tuwien.repository.jpa.TableRepository; +import at.tuwien.service.DataService; import at.tuwien.service.MessageQueueService; import at.tuwien.service.impl.MariaDataService; import com.fasterxml.jackson.core.JsonParseException; @@ -34,12 +35,12 @@ public class RabbitMqService implements MessageQueueService { private static final String AMQP_EXCHANGE = "fda"; private final Channel channel; - private final MariaDataService dataService; + private final DataService dataService; private final ObjectMapper objectMapper; private final TableRepository tableRepository; @Autowired - public RabbitMqService(Channel channel, MariaDataService dataService, ObjectMapper objectMapper, + public RabbitMqService(Channel channel, DataService dataService, ObjectMapper objectMapper, TableRepository tableRepository) { this.channel = channel; this.dataService = dataService; @@ -99,14 +100,14 @@ public class RabbitMqService implements MessageQueueService { public void createUserConsumer(Table table) throws IOException { channel.basicConsume(table.getTopic(), true, (consumerTag, response) -> { try { - dataService.insertCsv(table, objectMapper.readValue(response.getBody(), TableCsvDto.class)); + dataService.insert(table, objectMapper.readValue(response.getBody(), TableCsvDto.class)); } catch (JsonParseException | MismatchedInputException e) { log.warn("Could not parse AMQP payload {}", e.getMessage()); /* ignore */ } catch (ConnectException e) { log.warn("Could not redirect AMQP payload {}", e.getMessage()); /* ignore */ - } catch (SQLException | ImageNotSupportedException | DataAccessException | TableMalformedException e) { + } catch (ImageNotSupportedException | DataAccessException | TableMalformedException e) { log.warn("Could not insert AMQP payload {}", e.getMessage()); /* ignore */ }