Fix issue with DMP index not updating after a new user is invited
This commit is contained in:
parent
900a377d5f
commit
fd26e2a742
|
@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -42,7 +43,7 @@ public class UserInvitationController extends BaseController {
|
|||
@Transactional
|
||||
@RequestMapping(method = RequestMethod.GET, value = {"/exchange/{invitationID}"}, produces = "application/json")
|
||||
public @ResponseBody
|
||||
ResponseEntity<ResponseItem<UUID>> exchange(@PathVariable UUID invitationID, Principal principal) throws JAXBException {
|
||||
ResponseEntity<ResponseItem<UUID>> exchange(@PathVariable UUID invitationID, Principal principal) throws JAXBException, IOException {
|
||||
UUID dmpId = invitationsManager.assignUserAcceptedInvitation(invitationID, principal);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<UUID>().status(ApiMessageCode.SUCCESS_MESSAGE).payload(dmpId));
|
||||
}
|
||||
|
|
|
@ -1843,7 +1843,7 @@ public class DataManagementPlanManager {
|
|||
});
|
||||
}
|
||||
|
||||
private void updateIndex(DMP dmp) throws IOException {
|
||||
public void updateIndex(DMP dmp) throws IOException {
|
||||
DmpMapper mapper = new DmpMapper(apiContext, datasetManager);
|
||||
Dmp elastic = mapper.toElastic(dmp);
|
||||
apiContext.getOperationsContext().getElasticRepository().getDmpRepository().createOrUpdate(elastic);
|
||||
|
|
|
@ -17,6 +17,7 @@ import org.springframework.stereotype.Component;
|
|||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -26,10 +27,12 @@ import java.util.stream.Stream;
|
|||
public class InvitationsManager {
|
||||
|
||||
private ApiContext apiContext;
|
||||
private DataManagementPlanManager dataManagementPlanManager;
|
||||
|
||||
@Autowired
|
||||
public InvitationsManager(ApiContext apiContext) {
|
||||
public InvitationsManager(ApiContext apiContext, DataManagementPlanManager dataManagementPlanManager) {
|
||||
this.apiContext = apiContext;
|
||||
this.dataManagementPlanManager = dataManagementPlanManager;
|
||||
}
|
||||
|
||||
public void inviteUsers(Invitation invitation, Principal principal) throws Exception {
|
||||
|
@ -79,7 +82,7 @@ public class InvitationsManager {
|
|||
return userModels;
|
||||
}
|
||||
|
||||
public UUID assignUserAcceptedInvitation(UUID invitationID, Principal principal) throws UnauthorisedException, JAXBException {
|
||||
public UUID assignUserAcceptedInvitation(UUID invitationID, Principal principal) throws UnauthorisedException, JAXBException, IOException {
|
||||
eu.eudat.data.entities.Invitation invitation = apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao().find(invitationID);
|
||||
if (invitation == null)
|
||||
throw new UnauthorisedException("There is no Data Management Plan assigned to this Link");
|
||||
|
@ -98,6 +101,8 @@ public class InvitationsManager {
|
|||
apiContext.getUtilitiesService().getInvitationService().assignToDmp(apiContext.getOperationsContext().getDatabaseRepository().getDmpDao(), existingUserDMP, datamanagementPlan);
|
||||
invitation.setAcceptedInvitation(true);
|
||||
apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao().createOrUpdate(invitation);
|
||||
datamanagementPlan.setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), datamanagementPlan.getId())).toList()));
|
||||
dataManagementPlanManager.updateIndex(datamanagementPlan);
|
||||
return datamanagementPlan.getId();
|
||||
}
|
||||
} else {
|
||||
|
@ -121,6 +126,8 @@ public class InvitationsManager {
|
|||
apiContext.getUtilitiesService().getInvitationService().assignToDmp(apiContext.getOperationsContext().getDatabaseRepository().getDmpDao(), userDMP, datamanagementPlan);
|
||||
invitation.setAcceptedInvitation(true);
|
||||
apiContext.getOperationsContext().getDatabaseRepository().getInvitationDao().createOrUpdate(invitation);
|
||||
datamanagementPlan.setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), datamanagementPlan.getId())).toList()));
|
||||
dataManagementPlanManager.updateIndex(datamanagementPlan);
|
||||
return datamanagementPlan.getId();
|
||||
}
|
||||
return invitation.getDmp().getId();
|
||||
|
|
Loading…
Reference in New Issue