diff --git a/src/main/java/org/broadinstitute/consent/http/db/DacDAO.java b/src/main/java/org/broadinstitute/consent/http/db/DacDAO.java index c91a3505c..4c8a0593f 100644 --- a/src/main/java/org/broadinstitute/consent/http/db/DacDAO.java +++ b/src/main/java/org/broadinstitute/consent/http/db/DacDAO.java @@ -61,6 +61,7 @@ public interface DacDAO extends Transactional { d.update_date AS dataset_update_date, d.update_user_id, d.data_use AS dataset_data_use, + d.dac_approval AS dataset_dac_approval, d.sharing_plan_document, d.sharing_plan_document_name, daa.daa_id AS daa_daa_id, diff --git a/src/main/java/org/broadinstitute/consent/http/db/mapper/DacReducer.java b/src/main/java/org/broadinstitute/consent/http/db/mapper/DacReducer.java index 2dfb0057e..0c7fd1346 100644 --- a/src/main/java/org/broadinstitute/consent/http/db/mapper/DacReducer.java +++ b/src/main/java/org/broadinstitute/consent/http/db/mapper/DacReducer.java @@ -72,6 +72,9 @@ public void accumulate(Map container, RowView rowView) { dataset.setDataUse(dataUseParser.parseDataUse(duStr)); } + Boolean dacApproval = rowView.getColumn("dataset_dac_approval", Boolean.class); + dataset.setDacApproval(dacApproval); + if (dataset != null) { dac.addDataset(dataset); } diff --git a/src/main/java/org/broadinstitute/consent/http/models/Dac.java b/src/main/java/org/broadinstitute/consent/http/models/Dac.java index 55f2a303d..779684465 100644 --- a/src/main/java/org/broadinstitute/consent/http/models/Dac.java +++ b/src/main/java/org/broadinstitute/consent/http/models/Dac.java @@ -128,6 +128,10 @@ public void setAssociatedDaa(DataAccessAgreement associatedDaa) { this.associatedDaa = associatedDaa; } + public List getDatasets() { + return datasets; + } + public void addDataset(Dataset dataset) { if (Objects.isNull(datasets)) { datasets = new ArrayList<>(); diff --git a/src/test/java/org/broadinstitute/consent/http/db/DacDAOTest.java b/src/test/java/org/broadinstitute/consent/http/db/DacDAOTest.java index a73cbe14d..472df5ba2 100644 --- a/src/test/java/org/broadinstitute/consent/http/db/DacDAOTest.java +++ b/src/test/java/org/broadinstitute/consent/http/db/DacDAOTest.java @@ -170,6 +170,47 @@ void testFindAllWithDataset() { assertNull(dac2.getAssociatedDaa()); } + @Test + void testFindAllWithDatasetApproval() { + Integer dacId = createRandomDAC(); + User user = createUser(); + Integer approvedDatasetId = + datasetDAO.insertDataset( + randomAlphabetic(20), + new Timestamp(new Date().getTime()), + user.getUserId(), + randomAlphabetic(20), + new DataUseBuilder().setGeneralUse(true).build().toString(), + dacId); + Integer pendingDatasetId = + datasetDAO.insertDataset( + randomAlphabetic(20), + new Timestamp(new Date().getTime()), + user.getUserId(), + randomAlphabetic(20), + new DataUseBuilder().setGeneralUse(true).build().toString(), + dacId); + datasetDAO.updateDatasetApproval(true, Instant.now(), user.getUserId(), approvedDatasetId); + + List dacs = dacDAO.findAll(); + Dac dac = dacs.stream().filter(d -> d.getDacId().equals(dacId)).findFirst().orElseThrow(); + List datasets = dac.getDatasets(); + + Dataset approvedDataset = + datasets.stream() + .filter(d -> d.getDatasetId().equals(approvedDatasetId)) + .findFirst() + .orElseThrow(); + assertTrue(approvedDataset.getDacApproval()); + + Dataset pendingDataset = + datasets.stream() + .filter(d -> d.getDatasetId().equals(pendingDatasetId)) + .findFirst() + .orElseThrow(); + assertNull(pendingDataset.getDacApproval()); + } + @Test void testFindAllWithDAAs() { User user = createUser();