Skip to content

Commit

Permalink
Look for project title in the preliminary form when not found in the …
Browse files Browse the repository at this point in the history
…main form
  • Loading branch information
ymarcon committed Jan 23, 2023
1 parent 92d0693 commit 5c66e36
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,11 @@

import org.springframework.data.mongodb.core.mapping.Document;

import javax.validation.constraints.NotNull;

@Document
public class DataAccessAgreement extends DataAccessEntity {
public class DataAccessAgreement extends DataAccessEntityWithParent {

private static final long serialVersionUID = 56756037768797054L;

@NotNull
private String parentId;

public String getParentId() {
return parentId;
}

public void setParentId(String parentId) {
this.parentId = parentId;
}

public static DataAccessAgreement.Builder newBuilder() {
return new DataAccessAgreement.Builder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,11 @@

import org.springframework.data.mongodb.core.mapping.Document;

import javax.validation.constraints.NotNull;

@Document
public class DataAccessAmendment extends DataAccessEntity {
public class DataAccessAmendment extends DataAccessEntityWithParent {

private static final long serialVersionUID = 1990378967038884329L;

@NotNull
private String parentId;

public String getParentId() {
return parentId;
}

public void setParentId(String parentId) {
this.parentId = parentId;
}

public static DataAccessAmendment.Builder newBuilder() {
return new DataAccessAmendment.Builder();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* Copyright (c) 2023 OBiBa. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.obiba.mica.access.domain;

import javax.validation.constraints.NotNull;

public abstract class DataAccessEntityWithParent extends DataAccessEntity {

@NotNull
protected String parentId;

public String getParentId() {
return parentId;
}

public void setParentId(String parentId) {
this.parentId = parentId;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,11 @@

import org.springframework.data.mongodb.core.mapping.Document;

import javax.validation.constraints.NotNull;

@Document
public class DataAccessFeasibility extends DataAccessEntity {
public class DataAccessFeasibility extends DataAccessEntityWithParent {

private static final long serialVersionUID = 23403789670546579L;

@NotNull
private String parentId;

public String getParentId() {
return parentId;
}

public void setParentId(String parentId) {
this.parentId = parentId;
}

public static DataAccessFeasibility.Builder newBuilder() {
return new DataAccessFeasibility.Builder();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,11 @@

import org.springframework.data.mongodb.core.mapping.Document;

import javax.validation.constraints.NotNull;

@Document
public class DataAccessPreliminary extends DataAccessEntity {
public class DataAccessPreliminary extends DataAccessEntityWithParent {

private static final long serialVersionUID = 23470546579L;

@NotNull
private String parentId;

public String getParentId() {
return parentId;
}

public void setParentId(String parentId) {
this.parentId = parentId;
}

public static DataAccessPreliminary.Builder newBuilder() {
return new DataAccessPreliminary.Builder();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
package org.obiba.mica.access.service;


import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import javax.inject.Inject;
import javax.validation.constraints.NotNull;
import javax.ws.rs.ForbiddenException;

import com.google.common.base.Strings;
import com.google.common.eventbus.EventBus;
import org.apache.shiro.SecurityUtils;
import org.joda.time.DateTime;
import org.json.JSONException;
import org.json.JSONObject;
import org.obiba.mica.access.DataAccessCollaboratorRepository;
import org.obiba.mica.access.DataAccessPreliminaryRepository;
import org.obiba.mica.access.domain.DataAccessCollaborator;
import org.obiba.mica.access.domain.DataAccessPreliminary;
import org.obiba.mica.access.domain.DataAccessRequest;
import org.obiba.mica.access.event.DataAccessCollaboratorAcceptedEvent;
import org.obiba.mica.access.event.DataAccessCollaboratorDeletedEvent;
Expand All @@ -31,7 +26,13 @@
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import com.google.common.eventbus.EventBus;
import javax.inject.Inject;
import javax.validation.constraints.NotNull;
import javax.ws.rs.ForbiddenException;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Optional;

@Service
@Validated
Expand Down Expand Up @@ -68,6 +69,9 @@ public class DataAccessCollaboratorService {
@Inject
private DataAccessRequestUtilService dataAccessRequestUtilService;

@Inject
private DataAccessPreliminaryRepository dataAccessPreliminaryRepository;

@Inject
private EventBus eventBus;

Expand Down Expand Up @@ -178,7 +182,7 @@ public void delete(DataAccessCollaborator collaborator) {
* @param key
*/
private void sendCollaboratorInvitation(DataAccessRequest dar, String email, String key) {
Map<String, String> context = dataAccessRequestUtilService.getNotificationEmailContext(dar);
Map<String, String> context = getCollaboratorNotificationEmailContext(dar);
context.put("key", key);
mailService.sendEmailToUsers(
mailService.getSubject(dataAccessConfigService.getOrCreateConfig().getCollaboratorInvitationSubject(),
Expand All @@ -195,14 +199,34 @@ private void sendCollaboratorInvitation(DataAccessRequest dar, String email, Str
private void sendCollaboratorAcceptedNotification(DataAccessRequest dar, String email) {
if (!dataAccessConfigService.getOrCreateConfig().isNotifyCollaboratorAccepted()) return;

Map<String, String> context = dataAccessRequestUtilService.getNotificationEmailContext(dar);
Map<String, String> context = getCollaboratorNotificationEmailContext(dar);
context.put("email", email);
mailService.sendEmailToUsers(
mailService.getSubject(dataAccessConfigService.getOrCreateConfig().getCollaboratorAcceptedSubject(),
context, DataAccessRequestUtilService.DEFAULT_NOTIFICATION_SUBJECT),
"dataAccessRequestCollaboratorAccepted", context, dar.getApplicant());
}

private Map<String, String> getCollaboratorNotificationEmailContext(DataAccessRequest dar) {
Map<String, String> context = dataAccessRequestUtilService.getNotificationEmailContext(dar);
if (context.get("id").equals(context.get("title"))) {
// if title is not found in the main form, look for it in the preliminary one
String title = getDataAccessPreliminaryTitle(dar);
if (!Strings.isNullOrEmpty(title)) context.put("title", title);
}
return context;
}

private String getDataAccessPreliminaryTitle(DataAccessRequest dar) {
if (dataAccessConfigService.getOrCreateConfig().isPreliminaryEnabled()) {
Optional<DataAccessPreliminary> preliminaryOpt = dataAccessPreliminaryRepository.findByParentId(dar.getId()).stream().findFirst();
if (preliminaryOpt.isPresent()) {
return dataAccessRequestUtilService.getRequestTitle(preliminaryOpt.get());
}
}
return null;
}

private String makeInvitationKey(@NotNull DataAccessRequest dar, String email) {
JSONObject jsonKey = new JSONObject();
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,12 +245,8 @@ Map<String, String> getNotificationEmailContext(DataAccessEntity request) {
ctx.put("publicUrl", micaConfigService.getPublicUrl());
ctx.put("id", id);
ctx.put("type", request.getClass().getSimpleName());
if (request instanceof DataAccessAmendment)
ctx.put("parentId", ((DataAccessAmendment) request).getParentId());
if (request instanceof DataAccessFeasibility)
ctx.put("parentId", ((DataAccessFeasibility) request).getParentId());
if (request instanceof DataAccessPreliminary)
ctx.put("parentId", ((DataAccessPreliminary) request).getParentId());
if (request instanceof DataAccessEntityWithParent)
ctx.put("parentId", ((DataAccessEntityWithParent) request).getParentId());
if (Strings.isNullOrEmpty(title)) title = id;
ctx.put("title", title);
ctx.put("applicant", request.getApplicant());
Expand Down

0 comments on commit 5c66e36

Please sign in to comment.