diff --git a/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/controller/DataExchangeController.java b/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/controller/DataExchangeController.java index 4b20e25..c5e4ae6 100644 --- a/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/controller/DataExchangeController.java +++ b/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/controller/DataExchangeController.java @@ -82,7 +82,7 @@ public ResponseEntity exchangingData(@RequestParam("cnStatusTime") Strin @GetMapping(path = "/api/data-exchange-generic/{tableName}") public ResponseEntity exchangingData(@PathVariable String tableName, @RequestParam(required = false) String timestamp, @RequestHeader(name = "limit", defaultValue = "0") String limit, - @RequestHeader(name = "initial_load", defaultValue = "false", required = false) String initialLoadApplied) throws DataExchangeException { + @RequestHeader(name = "initialLoad", defaultValue = "false", required = false) String initialLoadApplied) throws DataExchangeException { int intLimit = Integer.parseInt(limit); boolean initialLoad = initialLoadApplied.equalsIgnoreCase("true"); diff --git a/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericService.java b/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericService.java index 7062554..fae0f8e 100644 --- a/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericService.java +++ b/nnd-data-exchange-service/src/main/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericService.java @@ -5,6 +5,7 @@ import gov.cdc.nnddataexchangeservice.configuration.TimestampAdapter; import gov.cdc.nnddataexchangeservice.exception.DataExchangeException; import gov.cdc.nnddataexchangeservice.repository.rdb.DataSyncConfigRepository; +import gov.cdc.nnddataexchangeservice.repository.rdb.model.DataSyncConfig; import gov.cdc.nnddataexchangeservice.service.interfaces.IDataExchangeGenericService; import gov.cdc.nnddataexchangeservice.shared.DataSimplification; import org.springframework.beans.factory.annotation.Qualifier; @@ -20,6 +21,7 @@ @Service public class DataExchangeGenericService implements IDataExchangeGenericService { + private final DataSyncConfigRepository dataSyncConfigRepository; private final JdbcTemplate jdbcTemplate; private final JdbcTemplate srteJdbcTemplate; @@ -42,12 +44,15 @@ public DataExchangeGenericService(DataSyncConfigRepository dataSyncConfigReposit @SuppressWarnings("javasecurity:S3649") public String getGenericDataExchange(String tableName, String timeStamp, Integer limit,boolean initialLoad) throws DataExchangeException { // Retrieve configuration based on table name - var dataConfig = dataSyncConfigRepository.findById(tableName).orElseThrow(() -> new DataExchangeException("Selected Table Not Found")); - + var dataConfig = dataSyncConfigRepository.findById(tableName).orElse(new DataSyncConfig()); if (timeStamp == null) { timeStamp = ""; } try { + if (dataConfig.getTableName() == null) { + return DataSimplification.dataCompressionAndEncode(""); + } + // Execute the query and retrieve the dataset String baseQuery = ""; @@ -68,6 +73,8 @@ public String getGenericDataExchange(String tableName, String timeStamp, Integer nullQuery = nullQuery.replaceAll(";", ""); //NOSONAR query = nullQuery + " UNION " + query + ";"; } + + System.out.println("TEST QUERY: " + query); } if (baseQuery.contains(LIMIT_PARAM)) { diff --git a/nnd-data-exchange-service/src/main/resources/query/select/insert.sql b/nnd-data-exchange-service/src/main/resources/query/select/insert.sql index 6910267..d910daf 100644 --- a/nnd-data-exchange-service/src/main/resources/query/select/insert.sql +++ b/nnd-data-exchange-service/src/main/resources/query/select/insert.sql @@ -112,4 +112,23 @@ INSERT INTO [RDB].[dbo].[data_sync_config] (table_name, source_db, query, query_ 'SELECT TOP(:limit) N.* FROM NOTIFICATION N WHERE (N.NOTIFICATION_LAST_CHANGE_TIME >= :timestamp) OR (N.NOTIFICATION_LAST_CHANGE_TIME IS NULL AND EXISTS (SELECT 1 FROM NOTIFICATION_EVENT NE JOIN INVESTIGATION I ON NE.INVESTIGATION_KEY = I.INVESTIGATION_KEY WHERE NE.NOTIFICATION_KEY = N.NOTIFICATION_KEY AND I.LAST_CHG_TIME >= :timestamp)) ORDER BY N.NOTIFICATION_LAST_CHANGE_TIME ASC;', NULL), ('CONDITION_CODE', 'SRTE', 'SELECT * FROM CONDITION_CODE', NULL, NULL), - ('CODE_TO_CODE', 'SRTE', 'SELECT * FROM CODE_TO_CODE', NULL, NULL); + ('CODE_TO_CODE', 'SRTE', 'SELECT * FROM CODE_TO_CODE', NULL, NULL), + ('BMIRD_MULTI_VALUE_FIELD_GROUP', 'RDB', + 'SELECT BMIRD_MULTI_VALUE_FIELD_GROUP.* FROM BMIRD_MULTI_VALUE_FIELD_GROUP JOIN BMIRD_CASE ON BMIRD_MULTI_VALUE_FIELD_GROUP.BMIRD_MULTI_VAL_GRP_KEY = BMIRD_CASE.BMIRD_MULTI_VAL_GRP_KEY JOIN INVESTIGATION ON BMIRD_CASE.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.LAST_CHG_TIME >= :timestamp;', + 'SELECT TOP(:limit) BMIRD_MULTI_VALUE_FIELD_GROUP.* FROM BMIRD_MULTI_VALUE_FIELD_GROUP JOIN BMIRD_CASE ON BMIRD_MULTI_VALUE_FIELD_GROUP.BMIRD_MULTI_VAL_GRP_KEY = BMIRD_CASE.BMIRD_MULTI_VAL_GRP_KEY JOIN INVESTIGATION ON BMIRD_CASE.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.LAST_CHG_TIME >= :timestamp ORDER BY INVESTIGATION.LAST_CHG_TIME ASC;', + NULL), + ('D_VAR_PAM', 'RDB', + 'SELECT D_VAR_PAM.* FROM D_VAR_PAM JOIN F_VAR_PAM ON F_VAR_PAM.D_VAR_PAM_KEY = D_VAR_PAM.D_VAR_PAM_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME >= :timestamp OR INVESTIGATION.LAST_CHG_TIME >= :timestamp;', + 'SELECT TOP(:limit) D_VAR_PAM.* FROM D_VAR_PAM JOIN F_VAR_PAM ON F_VAR_PAM.D_VAR_PAM_KEY = D_VAR_PAM.D_VAR_PAM_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME >= :timestamp OR INVESTIGATION.LAST_CHG_TIME >= :timestamp ORDER BY INVESTIGATION.LAST_CHG_TIME ASC;', + 'SELECT D_VAR_PAM.* FROM D_VAR_PAM JOIN F_VAR_PAM ON F_VAR_PAM.D_VAR_PAM_KEY = D_VAR_PAM.D_VAR_PAM_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME IS NULL AND INVESTIGATION.LAST_CHG_TIME IS NULL;'), + ('D_PCR_SOURCE_GROUP', 'RDB', + 'SELECT D_PCR_SOURCE_GROUP.* FROM D_PCR_SOURCE_GROUP JOIN F_VAR_PAM ON F_VAR_PAM.D_PCR_SOURCE_GROUP_KEY = D_PCR_SOURCE_GROUP.D_PCR_SOURCE_GROUP_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME >= :timestamp OR INVESTIGATION.LAST_CHG_TIME >= :timestamp;', + 'SELECT TOP(:limit) D_PCR_SOURCE_GROUP.* FROM D_PCR_SOURCE_GROUP JOIN F_VAR_PAM ON F_VAR_PAM.D_PCR_SOURCE_GROUP_KEY = D_PCR_SOURCE_GROUP.D_PCR_SOURCE_GROUP_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME >= :timestamp OR INVESTIGATION.LAST_CHG_TIME >= :timestamp ORDER BY INVESTIGATION.LAST_CHG_TIME ASC;', + NULL), + ('D_RASH_LOC_GEN_GROUP', 'RDB', + 'SELECT D_RASH_LOC_GEN_GROUP.* FROM D_RASH_LOC_GEN_GROUP JOIN F_VAR_PAM ON F_VAR_PAM.D_RASH_LOC_GEN_GROUP_KEY = D_RASH_LOC_GEN_GROUP.D_RASH_LOC_GEN_GROUP_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME >= :timestamp OR INVESTIGATION.LAST_CHG_TIME >= :timestamp;', + 'SELECT TOP(:limit) D_RASH_LOC_GEN_GROUP.* FROM D_RASH_LOC_GEN_GROUP JOIN F_VAR_PAM ON F_VAR_PAM.D_RASH_LOC_GEN_GROUP_KEY = D_RASH_LOC_GEN_GROUP.D_RASH_LOC_GEN_GROUP_KEY JOIN INVESTIGATION ON F_VAR_PAM.INVESTIGATION_KEY = INVESTIGATION.INVESTIGATION_KEY WHERE INVESTIGATION.ADD_TIME >= :timestamp OR INVESTIGATION.LAST_CHG_TIME >= :timestamp ORDER BY INVESTIGATION.LAST_CHG_TIME ASC;', + NULL); + + + diff --git a/nnd-data-exchange-service/src/test/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericServiceTest.java b/nnd-data-exchange-service/src/test/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericServiceTest.java index ba44368..1cde5f7 100644 --- a/nnd-data-exchange-service/src/test/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericServiceTest.java +++ b/nnd-data-exchange-service/src/test/java/gov/cdc/nnddataexchangeservice/service/DataExchangeGenericServiceTest.java @@ -43,15 +43,17 @@ void setUp() { @Test - void getGenericDataExchange_WithMissingTable_ThrowsDataExchangeException() { + void getGenericDataExchange_WithMissingTable_NoRelevantData() throws DataExchangeException { String tableName = "invalid_table"; String timeStamp = "2024-07-11"; int limit = 10; when(dataSyncConfigRepository.findById(tableName)).thenReturn(Optional.empty()); - assertThrows(DataExchangeException.class, () -> - dataExchangeGenericService.getGenericDataExchange(tableName, timeStamp, limit, false)); + var res = dataExchangeGenericService.getGenericDataExchange(tableName, timeStamp, limit, false); + + assertNotNull(res); + } @SuppressWarnings("java:S5976") diff --git a/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TokenService.java b/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TokenService.java index 3aef6b1..35b1da3 100644 --- a/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TokenService.java +++ b/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TokenService.java @@ -19,8 +19,6 @@ public class TokenService implements ITokenService { @Value("${data_exchange.secret}") private String clientSecret; - private String currentToken; - private final RestTemplate restTemplate; public TokenService(RestTemplate restTemplate) { @@ -29,16 +27,7 @@ public TokenService(RestTemplate restTemplate) { public String getToken() { -// if (currentToken == null) { -// currentToken = fetchNewToken(); -// } - currentToken = fetchNewToken(); - return currentToken; - } - - private boolean isTokenExpired() { - // Implement your logic to check if the token is expired - return false; + return fetchNewToken(); } private String fetchNewToken() { diff --git a/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TransportQOutService.java b/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TransportQOutService.java index 45709a9..25ded18 100644 --- a/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TransportQOutService.java +++ b/nnd-data-poll-service/src/main/java/gov/cdc/nnddatapollservice/service/TransportQOutService.java @@ -36,18 +36,14 @@ public void truncatingData() { public String getMaxTimestamp() throws DataPollException { try { var time = transportQOutRepository.findMaxTimeStampInvolvingWithNotification(); - if (time.isPresent()) { - return time.get().toString(); - } - else { - return ""; - } + return time.orElse(""); } catch (Exception e) { throw new DataPollException(e.getMessage()); } } + @SuppressWarnings("java:S1141") public void saveDataExchange(List transportQOutDtoList) throws DataPollException { try { List cnTransportQOutList = new ArrayList<>(); diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/CNTransportQOutServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/CNTransportQOutServiceTest.java index 70fff54..ccfb2e2 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/CNTransportQOutServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/CNTransportQOutServiceTest.java @@ -20,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; -public class CNTransportQOutServiceTest { +class CNTransportQOutServiceTest { @Mock private CNTransportQOutRepository cnTransportQOutRepository; diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataHandlingServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataHandlingServiceTest.java index 0914c11..115319b 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataHandlingServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataHandlingServiceTest.java @@ -28,7 +28,7 @@ import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.Mockito.*; -public class DataHandlingServiceTest { +class DataHandlingServiceTest { @Mock private ICNTransportQOutService icnTransportQOutService; diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataPullServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataPullServiceTest.java index 6904f45..fd91a5d 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataPullServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/DataPullServiceTest.java @@ -12,7 +12,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; -public class DataPullServiceTest { +class DataPullServiceTest { @Mock private IDataHandlingService dataHandlingService; diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/ErrorHandlingServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/ErrorHandlingServiceTest.java index f87ef6c..187f1b9 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/ErrorHandlingServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/ErrorHandlingServiceTest.java @@ -19,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.*; -public class ErrorHandlingServiceTest { +class ErrorHandlingServiceTest { private ErrorHandlingService errorHandlingService; @Mock diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/NetsstTransportServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/NetsstTransportServiceTest.java index 092908c..638b844 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/NetsstTransportServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/NetsstTransportServiceTest.java @@ -21,7 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; -public class NetsstTransportServiceTest { +class NetsstTransportServiceTest { @Mock private NETSSTransportQOutRepository netssTransportQOutRepository; diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TokenServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TokenServiceTest.java index 3047d6d..4cc7ea7 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TokenServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TokenServiceTest.java @@ -14,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.*; -public class TokenServiceTest { +class TokenServiceTest { @Mock private RestTemplate restTemplate; diff --git a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TransportQOutServiceTest.java b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TransportQOutServiceTest.java index 4c1368c..be2c421 100644 --- a/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TransportQOutServiceTest.java +++ b/nnd-data-poll-service/src/test/java/gov/cdc/nnddatapollservice/service/TransportQOutServiceTest.java @@ -20,7 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; -public class TransportQOutServiceTest { +class TransportQOutServiceTest { @Mock private TransportQOutRepository transportQOutRepository;