Skip to content

Commit b4580e3

Browse files
authored
[DUOS-2781] DAC rejects datasets (#2216)
1 parent a11f7e3 commit b4580e3

File tree

6 files changed

+67
-14
lines changed

6 files changed

+67
-14
lines changed

src/main/java/org/broadinstitute/consent/http/mail/freemarker/DatasetDeniedModel.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ public class DatasetDeniedModel {
55
private String dataSubmitterName;
66
private String datasetName;
77
private String dacName;
8+
private String dacEmail;
89

9-
public DatasetDeniedModel(String dataSubmitterName, String datasetName, String dacName) {
10+
public DatasetDeniedModel(String dataSubmitterName, String datasetName, String dacName, String dacEmail) {
1011
this.dataSubmitterName = dataSubmitterName;
1112
this.datasetName = datasetName;
1213
this.dacName = dacName;
14+
this.dacEmail = dacEmail;
1315
}
1416

1517
public String getDataSubmitterName() {
@@ -23,4 +25,9 @@ public String getDatasetName() {
2325
public String getDacName() {
2426
return dacName;
2527
}
28+
29+
public String getDacEmail() {
30+
return dacEmail;
31+
}
32+
2633
}

src/main/java/org/broadinstitute/consent/http/mail/freemarker/FreeMarkerTemplateHelper.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ public Writer getDatasetApprovedTemplate(String dataSubmitterName, String datase
6262
}
6363

6464
public Writer getDatasetDeniedTemplate(String dataSubmitterName, String datasetName,
65-
String dacName) throws IOException, TemplateException {
65+
String dacName, String dacEmail) throws IOException, TemplateException {
6666
Template temp = freeMarkerConfig.getTemplate("dataset-denied.html");
67-
return generateDatasetDeniedTemplate(dataSubmitterName, datasetName, dacName, temp);
67+
return generateDatasetDeniedTemplate(dataSubmitterName, datasetName, dacName, dacEmail, temp);
6868
}
6969

7070
public Writer getNewResearcherLibraryRequestTemplate(String researcherName, String serverUrl)
@@ -90,8 +90,8 @@ private Writer generateDatasetApprovedTemplate(String dataSubmitterName, String
9090
}
9191

9292
private Writer generateDatasetDeniedTemplate(String dataSubmitterName, String datasetName,
93-
String dacName, Template temp) throws IOException, TemplateException {
94-
DatasetDeniedModel model = new DatasetDeniedModel(dataSubmitterName, datasetName, dacName);
93+
String dacName, String dacEmail, Template temp) throws IOException, TemplateException {
94+
DatasetDeniedModel model = new DatasetDeniedModel(dataSubmitterName, datasetName, dacName, dacEmail);
9595
Writer out = new StringWriter();
9696
temp.process(model, out);
9797
return out;

src/main/java/org/broadinstitute/consent/http/service/DatasetService.java

+13-5
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@
3939
import org.broadinstitute.consent.http.models.dto.DatasetDTO;
4040
import org.broadinstitute.consent.http.models.dto.DatasetPropertyDTO;
4141
import org.broadinstitute.consent.http.service.dao.DatasetServiceDAO;
42+
import org.broadinstitute.consent.http.util.ConsentLogger;
4243
import org.slf4j.Logger;
4344
import org.slf4j.LoggerFactory;
4445

4546

46-
public class DatasetService {
47+
public class DatasetService implements ConsentLogger {
4748

4849
private final Logger logger = LoggerFactory.getLogger(this.getClass());
4950
public static final String DATASET_NAME_KEY = "Dataset Name";
@@ -345,10 +346,17 @@ private void sendDatasetApprovalNotificationEmail(Dataset dataset, User user, Bo
345346
dac.getName(),
346347
dataset.getDatasetIdentifier());
347348
} else {
348-
emailService.sendDatasetDeniedMessage(
349-
user,
350-
dac.getName(),
351-
dataset.getDatasetIdentifier());
349+
if (!Objects.isNull(dac.getEmail())) {
350+
String dacEmail = dac.getEmail();
351+
emailService.sendDatasetDeniedMessage(
352+
user,
353+
dac.getName(),
354+
dataset.getDatasetIdentifier(),
355+
dacEmail);
356+
}
357+
else {
358+
logWarn("Unable to send dataset denied email to DAC: " + dac.getDacId());
359+
}
352360
}
353361

354362
}

src/main/java/org/broadinstitute/consent/http/service/EmailService.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,10 @@ public void sendDatasetApprovedMessage(User user,
268268

269269
public void sendDatasetDeniedMessage(User user,
270270
String dacName,
271-
String datasetName) throws Exception {
271+
String datasetName,
272+
String dacEmail) throws Exception {
272273
Writer template = templateHelper.getDatasetDeniedTemplate(user.getDisplayName(), datasetName,
273-
dacName);
274+
dacName, dacEmail);
274275
Optional<Response> response = sendGridAPI.sendDatasetDeniedMessage(user.getEmail(), template);
275276
saveEmailAndResponse(
276277
response.orElse(null),

src/main/resources/freemarker/dataset-denied.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<tr>
2323
<td style="padding: 15px 15px 0px; font-family: 'Montserrat', sans-serif; font-size: 16px; color: #1F3B50; text-align: justify; line-height: 25px;">
2424
<p id="content" style="margin: 0;">
25-
Thank you for your interest in using DUOS to register your dataset(s). Unfortunately, ${dacName} has rejected your ${datasetName} dataset. Based on the feedback your received from this DAC, you can choose to alter your data submission form and re-submit the dataset to ${dacName}. Alternatively, you can submit the dataset to a different DAC for review.
25+
Your dataset, ${datasetName}, submitted to the ${dacName} by ${dataSubmitterName} for management of future data access requests has been <b>rejected</b>. Please contact the DAC directly at ${dacEmail} for questions.
2626
</p>
2727
<p>
2828
Please reach out to <a href="mailto:[email protected]" style="text-decoration: none; font-family: 'Montserrat', sans-serif; color: #00609F;">[email protected]</a> if you have any questions or concerns.

src/test/java/org/broadinstitute/consent/http/service/DatasetServiceTest.java

+38-1
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,7 @@ void testApproveDataset_DenyDataset() throws Exception {
756756
dataset.setDacId(3);
757757
Dac dac = new Dac();
758758
dac.setName("DAC NAME");
759+
dac.setEmail("[email protected]");
759760
initService();
760761
when(dacDAO.findById(3)).thenReturn(dac);
761762

@@ -767,10 +768,46 @@ void testApproveDataset_DenyDataset() throws Exception {
767768
verify(emailService, times(1)).sendDatasetDeniedMessage(
768769
user,
769770
"DAC NAME",
770-
"DUOS-000001"
771+
"DUOS-000001",
772+
771773
);
772774
}
773775

776+
@Test
777+
void testApproveDataset_DenyDataset_WithNoDACEmail() throws Exception {
778+
Dataset dataset = new Dataset();
779+
dataset.setDataSetId(1);
780+
User user = new User();
781+
user.setUserId(1);
782+
user.setEmail("[email protected]");
783+
user.setDisplayName("John Doe");
784+
Boolean payloadBool = false;
785+
Dataset updatedDataset = new Dataset();
786+
updatedDataset.setDataSetId(1);
787+
updatedDataset.setDacApproval(payloadBool);
788+
789+
when(datasetDAO.findDatasetById(any())).thenReturn(updatedDataset);
790+
dataset.setAlias(1);
791+
dataset.setDacId(3);
792+
Dac dac = new Dac();
793+
dac.setName("DAC NAME");
794+
initService();
795+
when(dacDAO.findById(3)).thenReturn(dac);
796+
797+
Dataset returnedDataset = datasetService.approveDataset(dataset, user, payloadBool);
798+
assertEquals(dataset.getDataSetId(), returnedDataset.getDataSetId());
799+
assertFalse(returnedDataset.getDacApproval());
800+
801+
// do not send denied email
802+
verify(emailService, times(0)).sendDatasetDeniedMessage(
803+
user,
804+
"DAC NAME",
805+
"DUOS-000001",
806+
""
807+
);
808+
809+
}
810+
774811
@Test
775812
void testSyncDataUseTranslation() {
776813
Dataset ds = new Dataset();

0 commit comments

Comments
 (0)